linux 查看某个脚本路径_linux 脚本程序 读取路径并取出路径里的某个名字 - CSDN
  • 查看这个进程的内容,我们首先得找到这个东西,下面就是根据进程名称查找所在目录的方法:linux下进程运行后,进程信息存储在/proc/进程id 目录下面,进程id查看命令 ps -ef | grep 进程名,vi /proc/进程id/...
    引言

    最近自己的服务器被一个名为xmrig的挖矿程序挖矿了,想查看这个进程的内容,我们首先得找到这个东西,下面就是根据进程名称查找所在目录的方法:

    linux下进程运行后,进程信息存储在/proc/进程id 目录下面,进程id查看命令 ps -ef | grep 进程名,vi /proc/进程id/environ 搜索PWD字段,则是该进程运行所在目录
    附属一个保守的解决方法:

    挖矿病毒xmrig一般在cpu比较闲的时候会触发,并且会占用cpu 99%,造成本机资源极大浪费。

    在网上搜了半天,没有发现好的解决办法,否则就只能重装操作系统了。


    因为重装操作系统,损失太大,所以这里我想了一种保守疗法。

    挖矿病毒有个规律,它并不是一直启动的,而且停止后,还会好长一段时间才能再运行。

    根据这个特点,我做一个定时任务,定时检测xmrig,如果发现有这个进程在运行就把它杀掉。


    具体实现如下:

    1、实现脚本killprocess.sh,发现进程并杀掉

    #!/bin/sh


    NAME=$1
    echo $NAME
    #ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
    CPU=`ps -aux | grep kworker | sort -rn -k +3 | head -1 | awk {'print $3'} | awk -F. '{print $1}'`
    ID=`ps -aux | grep kworker  | sort -rn -k +3 | head -1 | awk {'print $2'}`
    echo $CPU
    echo $ID
    echo "---------------"
    sleep 1s
    if [ $CPU -ge 95 ]; then
       echo "killed $ID"
       kill -9 $ID
    fi


    2、crontab设置默认1分钟定时执行

    crontab -e

    * * * * * /etc/init.d/killprocess.sh


    OK,世界从此安静了!

    展开全文
  • 一、查看文件安装路径: 由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址)。 这里以Oracle为例。比如说我安装了Oracle,但是不知道文件都安装在哪些地方、放在哪些文件夹里,可以用下面的...

    一、查看文件安装路径:
    由于软件安装的地方不止一个地方,所有先说查看文件安装的所有路径(地址)。

    这里以Oracle为例。比如说我安装了Oracle,但是不知道文件都安装在哪些地方、放在哪些文件夹里,可以用下面的命令查看所有的文件路径

    在终端输入:

    whereis oracle
    回车,如果你安装好了Oracle,就会显示文件安装的地址,例如我的显示(安装地址可能会不同)

    oracle: /usr/bin/oracle /usr/lib/oracle /usr/share/oracle /usr/share/man/man1/oracle.1.gz
    可以看出来,Oracle安装在是个目录里。

    如果你没有安装Oracle或者Oracle安装没成功,则不会显示文件路径出来。只提示:

    oracle:
    二、查询运行文件所在路径:

    如果你只要查询文件的运行文件所在地址,直接用下面的命令就可以了(还是以Oracle为例):

    which oracle
    结果会显示:

    /usr/bin/oracle

    展开全文
  • Linux 自动关闭某个进程脚本 前言 怕是不少后台开发者经常会有这么两个命令 ps -ef | grep 某某进程名 kill -9 某某进程名 比如,我是一个Java开发者,时常做好一个模块,通过mvn clean package -DskipTests打jar包...

    Linux 自动关闭某个进程脚本

    前言

    怕是不少后台开发者经常会有这么两个命令

    ps -ef | grep 某某进程名
    kill -9 某某进程名
    

    比如,我是一个Java开发者,时常做好一个模块,通过mvn clean package -DskipTests打jar包后,要更新到服务器上测试,总要先经过这两个命令,再删除旧的jar包

    懒人模式

    后面想起要不做一个脚本吧,让服务器自己找进程名并且关闭

    开始第一步,创建一个脚本:

    touch end.sh
    

    第二步,通过vim或者vi进入这个新建的文件写命令:

    #!/bin/sh
    ps -ef | grep 某某jar包名.jar | grep -v grep | awk '{print $2}' | xargs kill -9
    rm -f jar包全路径
    

    第一段前面两节不陌生,是查找某个进程,第三节的意思是过滤grep(一般调用前两节命令后显示的有两段数据,过滤的就是第二段无用的数据),第四节的意思是找出进程号,第五节的意思是杀死找出的进程号

    结语

    这样就是完成了懒人模式,下次更新jar包,直接运行这个命令,再把新的上传到服务器启动起来就好了,我这个人比较懒,我连启动jar包和查看日志的脚本一起写了,附带一下:

    #!/bin/bash
    nohup java -jar jar包全路径 > 要输出的日志全路径 2>&1 &
    tail -f 要输出的日志全路径
    
    展开全文
  • 获取脚本路径     ~~~~    这里我也绕了不少圈吧,之前一直使用pwd,后来发现,pwd获取的是工作目录,...

    获取脚本路径

        ~~~~这里我也绕了不少圈吧,之前一直使用pwd,后来发现,pwd获取的是工作目录,如果你在其他目录运行脚本,pwd获取的就会有问题,然后后来使用$0,然后还是有问题调用方式不同会有不同的结果,就比如
    使用一个文件调用bash,那$0的值,是那个文件的名字。留下正确的方法:

    basepath=$(cd `dirname $0`; pwd)
    

    这里解释一下:

    dirname $0:取得当前执行的脚本文件的父目录
    cd `dirname $0`:进入这个目录(切换当前工作目录)
    pwd:显示当前工作目录(cd执行后的)
    

    设置成环境变量

        ~~~~我们使用sh脚本的时候,都需要我们目标的路径,但是很多时候运行都是在脚本里面,同时不希望带参数,这个时候我们就可以设置环境变量,在安装的脚本里面直接设置好环境变量,这样下次使用就不需要带参数,我们就用上面的路径做测试。

    #主要分成两步,第一修改当前环境变量同时生效,第二设置下次启动时,环境变量自动增加
    #修改当前运行的环境变量 假设设置的环境变量是TEST_HOME,basepath是上面获取的sh脚本的路径
    export TEST_HOME=$basepath
    #先修改/etc/profile文件权限为666
    chmod 666 /etc/profile 
    #这里是添加export TEST_HOME=$basepat到/etc/profile文件最后一行
    echo "export TEST_HOME=$basepath" >> /etc/profile
    #权限改回去,一般默认就是644
    chmod 644 /etc/profile 
    

    这样一行就可以直接使用$TEST_HOME就可以了。

    判断环境变量是否存在

    Shell中判断某个环境变量是否存在以及获取某个环境变量的值

    #!/bin/bash
     if   [   $TOMCAT_HOME   ]; 
    then 
         echo   "not   found " 
    else 
        #exsit
    fi
    
    #-z  是判断是否字符是不是""
    if [ -z   $TMPPATH   ];   then 
        echo "no   tmppath " 
    else 
    
    fi
    

    带一个博客地址http://blog.sina.com.cn/s/blog_633fdd420100pnt4.html

    展开全文
  • 我们在服务器上开发时,经常需要将某个程序开机就自启动,比如说系统的mysql服务就是开机自启动的。那么我们如何能够让自己的程序开机自启动呢?   2.实现步骤 1. 写好执行脚本,比如我在当前Desktop上写了个...

    1.应用背景

    我们在服务器上开发时,经常需要将某个程序开机就自启动,比如说系统的mysql服务就是开机自启动的。那么我们如何能够让自己的程序开机自启动呢?

     

    2.实现步骤

    1. 写好执行脚本,比如我在当前Desktop上写了个hello.sh,功能是:输出'succeed',以追加方式,重定向到 /home/xxx/Desktop/hello_store.txt文本中(方便看开机自启动后的效果,如果成功,文本中会出现'succeed')

    #! /bin/sh    #一定要指明解释器位置,否则开机启动时,找不到解释器
    
    echo 'succeed' >> /home/xxx/Desktop/hello_store.txt   #输出'succeed',追加到 /home/xxx/Desktop/hello_store.txt文本中(方便看开机自启动后的效果)

    注意:#! /bin/sh    #一定要指明解释器位置,否则开机启动时,找不到解释器

    ======================================================================================

    2. 将hello.sh放到/etc/init.d目录下,在添加可执行权限

    1)将hello.sh放到/etc/init.d目录下:

    $sudo mv ./hello.sh /etc/init.d/

    2)去/etc/init.d/目录看hello.sh的属性

    $ cd /etc/init.d/
    $ ls -alh | grep hello.sh

    hello.sh没有可执行x权限

    3)为hello.sh添加可执行权限

    $ chmod a+x hello.sh 
    $ ls -alh | grep hello.sh

    有执行x权限了

    ======================================================================================

    3. 创建符号连接

    1)查看/etc目录下的rc文件夹

    $ cd ..
    $ ls -alh | grep rc*

    下面有这么几个目录值得注意:
    rcS.d rc0.d rc1.d ... rc6.d ,
    (0,1... 6 代表启动级别: 0代表停止,1代表单用户模式,2-5代表多用户模式,6代表重启)


    2)查看当前系统的启动级别

    $sudo runlevel 


    我的当前系统启动级别是:5

     

    3)进入对应的系统启动级别文件夹,我的是rc5.d,建立软链接,链接到/etc/init.d/下的hello.sh

    $ cd rc5.d/
    $ sudo ln -vsf /etc/init.d/hello.sh S98helloSoftLink
     #ln -vsf(-v 显示链接过程 -s 软链接 -f 强制链接) 链接的文件位置 自己取得软连接名

     说明一下:命名规则是有规定的,开头必须大写S,后面跟的数字98,是你设定的启动序号,即优先级,后面名字无限定。

    看一下是否有这链接:

    $ ls -alh | grep S98helloSoftLink


    有的
    4. 然后启动系统,测试一下设置是否有效。(看Desktop下hello_store.txt有没有‘succeed')



    确实开机自启动执行了。这个只是简单的执行脚本,更复杂逻辑的脚本也可以自启动啦.......

    展开全文
  • 简单说PATH就是一组路径的字符串变量,当你输入的命令不带任何路径时,LINUX会在PATH记录的路径中查找该命令。有的话则执行,不存在则提示命令找不到,也就是我们经常看到的-bash: ***: command not found。比如...
  • 已解压无需安装就可以直接运行的那种,例如sendemail,就是直接把程序压缩包下载下来,解压后直接跑sendemail那个脚本就可以实现发送邮件功能其实很简单,只需要把sendemail这个脚本直接生成软链接放到系统路径PATH...
  • Linux下手工执行某个脚本可以成功,但通过Java程序使用ProcessBuilder类执行该脚本总是失败,最后定位到问题:脚本中的某些命令要写绝对路径,例如把下面的脚本片段: hdfs dfs -put -f some.jar hdfs://mycluster/...
  • Linux中,周期执行的任务一般由cron这个守护进程来处理 ps -ef | grep cron cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”,是“cron table”的简写。一、 ...
  • 微服务发布的时候,一次更新需要替换好几个jar包,然后再逐个重启,很费时间,所以写了如下这个脚本.功能是当某个文件夹下新增了一些文件后,把指定文件放入指定目录 这只是写了个demo.话不多说,直接上代码: 当该shell...
  • Linux中Shell脚本的执行(三种方法)
  • Linux下定时执行脚本

    2016-08-25 10:05:24
    Linux下定时执行脚本 来源:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html   今天做了个数据库的备份脚本,顺便系统得学习一下Linux下定时执行脚本的设置。Linux下的定时执行主要是使用...
  • 首先php可以写linux的shell脚本,是非常快捷方便的,也展现了php的强大。 (1)讲解头部的一些开头文件代表什么意思。 eg #!/usr/bin/env php #!/usr/bin/php 哎,看了网上的一些说法,说只要平常写#!/usr/...
  • Linux下用crontab执行定时任务不会缺省的从用户profile文件中读取环境变量参数,经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错。 这是因为用户登陆Linux操作系统的时候,”/...
  • 查看哪些路径安装了python用whereis命令,当然whereis也可以查看某个文件夹所在的路径 whereis python 查看默认调用的python是哪个,which 用来查看当前要执行的命令所在的路径 which python  ...
  • linux中的sh脚本语法

    2014-12-23 11:23:32
    1 开头 程序必须以下面的行开始(必须...当编写脚本完成时,如果要执行该脚本,还必须使其可执行。 要使编写脚本可执行: 编译 chmod +x filename 这样才能用./filename 来运行 2 注释 在进行shell编程时
  • [http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html]有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务主要用三种方式进行这一操作:ln -s 在/etc/rc.d/rc*.d目录中建立/etc/i
  • shell脚本编写时的系统和执行脚本的系统不一致,比如在windows系统编写的脚本,放到linux系统时会遇到此问题。windows下编写的.sh文件为dos格式,而linux只能执行格式为unix格式的脚本。 解决方法 通过vim打开要执....
  • 如何在linux查看软件的安装路径 本文由CSDN-蚍蜉撼青松【主页:http://blog.csdn.net/howeverpf】整理编辑,转载请注明原文或本文出处! 原文链接:http://blog.renren.com/share/178371526/1716299598 注:有...
  • 这时,我们不妨把命令写成可执行的批量脚本,可以减少很多重复而又容易忘记的代码,写成一键脚本还有一个好处就是方便迁移,可以直接将写好的sh文件在其他Linux平台运行。 格式: 文件后缀.sh 第一行代码...
1 2 3 4 5 ... 20
收藏数 82,815
精华内容 33,126
关键字:

linux 查看某个脚本路径