在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
核心服务器上跑了一堆的脚本、程序,难免有时候会出现僵尸进程,死不死活不活的在那里占用资源,最初只是写了个根据关键字查杀进程的linux shell脚本,后来发现很多时候进程死在那里的时候其实是内部调用子进程的时候出现了问题,这时候光杀父进程根本没解决根本问题。比如说rsync的时候通过ssh来连接,rsync本身没问题,但可能ssh死掉了。因此重新写了脚本,递归查找子进程。 复制代码 代码如下: #!/bin/sh # 递归找到导致进程僵死的最底层子进程并杀除. ParentProcessID=$1; if [ "x${ParentProcessID}" = "x" ] ; then echo "Please Supply the top Parent Process ID to be killed!" echo "Usage:sh $0 PID [-v]" echo "PID The Parent Process ID as root" echo "-v is this argument supplied,no real kill operation will be performed,only process tree be show." exit 1 fi let IsRealKillDo=1; echo "Begin Kill the Leaf Process of process ${ParentProcessID}" >&2 killpidList="" function loopNextSubProcess(){ for theNextPid in ${tmpPidList} ; do loopNextSubProcess ${ParentProcessID} if [ ${IsRealKillDo} -eq 1 -a "x${killpidList}" != "x" ] ; then |
请发表评论