Shell脚本杀掉除自己外的旧进程

Shell脚本杀掉除自己外的旧进程

在写后台Shell脚本的时候,这是比较常见的一个需求。比如之前运行了一个叫做a.sh的脚本在后台运行,后来更新了a.sh脚本想重新运行,但却不想手动杀掉已经存在的后台a.sh进程。

命令其实非常简单:

kill $(pgrep -f "${0//./\\.}" | grep -v $BASHPID) &>/dev/null

其中pgrep -f $0 | grep -v $BASHPID是筛选出除脚本自己之外的旧进程的PID。

这里的$0做了些处理,防止脚本路径名称中包含了点.而导致模式匹配出现误匹配。比如b.sh脚本,在pgrep -f $0时会匹配出b.sh和bash,${0//./\\.}处理完后就得到了b\.sh,这样便不会匹配到bash,且没有包含.的路径名称也不会受到影响。

原文地址:https://www.cnblogs.com/f-ck-need-u/p/12630707.html

时间: 2024-10-11 06:49:59

Shell脚本杀掉除自己外的旧进程的相关文章

shell脚本杀掉(kill)端口号对应的PID进程

我是用的mac 就是当你本机启动一个python 端口进程, 即使关掉,后台进程依然存在,在启动同端口的进程,或报错提示已被占用 当你lsof -i:端口号(linux--(ss -anpt | grep 22)-->(ss是nestat的简写)) 又会发现不知一个pid进程 kill 很麻烦,所以就写了一个shell脚本,根据你输入的端口号,循环kill掉: #!/bin/bash read -p "输入 你要kill的端口号: " a for i in `lsof -i:$a

Shell脚本监控Linux某个后台进程,当进程死掉后重新启动服务,以httpd为例

Shell脚本如下: vim monitor.sh #!/bin/bash while true # 无限循环 flag=`ps -aux |grep "httpd" |grep -v "grep" |wc -l` do if [[ $flag -eq 0 ]] # 判断进程数如果等于0,则启动httpd then `systemctl start httpd` # 启动httpd echo `date` - "Apache restart" &

Shell 脚本小试牛刀(番外) -- 捷报

捷报 捷报 捷报 捷报 捷报 捷报来袭,本系列的脚本已在Github 上开了版块, 我命名为" easy shell "(点此进入). 眼下已加入前面几期中的脚本,日后还会有很多其它改变生活改变世界的脚本继续加入. 假设你也有兴趣,希望你也奉献一份力量.您的支持是我最大的前劲动力. 怎样使用?! 1. 直接网页打开" https://github.com/longerzone/easy_shell ",相比本机安装的git ,github 的特点就是它提供的web服

linux-制作shell脚本在任何路径下用自定义命令关闭tomcat-pid不唯一的问题

报错: /usr/local/bin/stop.sh: line 3: [: 2151: unary operator expected 原因: shell脚本名字叫stop_tomcat.sh,永远不会执行else 因为脚本本身包含tomcat,shell脚本能查到stop_tomcat这条进程 即第一个grep后的内容(tomcat)不唯一,会查到多个pid #!/bin/bash              #shell脚本中第一行必须写 pid=`ps -ef|grep tomcat|gr

shell脚本编程之变量简介及脚本执行过程

脚本变量简介 变量类型:字符型.数值型.真.假:事先确定数据的存放格式和长度: 变量存放在内存空间: 编译型语言,没有额外的处理逻辑,属于强类型语言: 脚本型语言,可以有解释器控制:所以,可以是弱类型语言: 强类型:变量在使用前,必须事先声明,甚至还需要初始化(给一个初始值,如果没给一个原始值,里面是随机数): 弱类型:变量用时声明,甚至不需要区分类型(默认为字符串): 变量赋值:VAR-NAME=VALUE: bash shell变量类型: 环境变量 本地变量(局部变量),局部变量不一定都是本

批量杀掉多个pid文件中记录的pid进程, 并集成到shell脚本中

1 head_files=`find ./fmsConf/ -name "*.pid"` 2 for file in $head_files 3 do 4 cat $file | awk '{print $1}' | xargs kill -9 5 rm -f $file 6 done 代码如上 解释: 1. 查找到 ./fmsConf目录下的所有的pid文件 2. 对查找到的文件进行遍历 3. 开始遍历 4. 分开解释: 1. cat $file : 打印出file文件的内容 2.

shell脚本编程常识

(这些往往是经常用到,但是各种网络上的材料都语焉不详的东西,个人认为比较有用) 七种文件类型 d            目录                                                       l             符号链接 s             套接字文件                                           b            块设备文件 c            字符设备文件              

linux学习笔记:shell脚本编程相关(上)

前言 unix/linux操作系统下的shell,是一种壳,其目的是提供一个用户与计算机相互交互的命令接口,通过输入各种命令,达到操作的目的. 与此同时,shell支持控制流程,进而可以组合出各种各样的应用实例. shell脚本的格式 首行shebang机制: bash脚本,首行添加#!/bin/bash [options] csh脚本,首行添加#!/bin/csh [options] ksh脚本,首行添加#!/bin/ksh [options] -- 描述脚本的注释部分: 包括Author,

Linux 第九天: (08月11日) Linux Shell脚本编程

Shell脚本是包含一些命令或声明, 并符合一定格式的文本文件格式要求 运行shebang机制#!/bin/bash bash -n /path/to/some_script  检测脚本中的语法错误bash -x /path/to/some_script  调试执行 bash中变量的种类本地变量 生效范围 当前shell进程, 对当前外进程, 包括子shell无效环境变量 生效范围 当前shell进程和子进程局部变量 生效范围 当前shell进程中某代码片段 通常指函数位置变量 $1 $2 让脚