UNIX下停进程,如无特殊需求,一般就是直接杀掉,具体流程就是查找出指定的进程id,然后kill掉就行了。所以停进程的操作基本相似,可以有一个模板程序稍稍改动就能完成。下面程序完成杀掉名为program的进程的功能,多个同名进程也可一起杀掉。略作改动的话还可以用来清理共享内存,消息队列和信号量等。
sh_close() { if [ $# -ne 1 ]; then echo "传递参数个数错误! 请检查!" return 1 fi flag=$1 while read a1 do if [ $flag = "p" ]; then kill -9 $a1 elif [ $flag = "q" ]; then ipcrm -q $a1 elif [ $flag = "m" ]; then ipcrm -m $a1 elif [ $flag = "s" ]; then ipcrm -s $a1 else echo "传递参数类型错误! 请检查!" return 1 fi done < $CLOSEFNAME return 0 } # 设置中间文件 CLOSEFNAME=stop.log # 关闭进程 >$CLOSEFNAME #查找进程,排除grep本身,排除可能的tail或vi等对程序的日志操作,用awk提取ps显示的第二列进程号。 ps -fu$LOGNAME | grep program | grep -v grep | grep -v program.log | awk '{print $2}' >>$CLOSEFNAME sh_close p if [ $? -ne "0" ]; then exit 1 fi echo "关闭进程 成功!" # 清除中间文件 rm -f $CLOSEFNAME
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/307.html