linux下如何杀死一个脚本及其脚本中启动的其他脚本

沙米笔记 发布于 2016/05/23 10:37
阅读 399
收藏 0

linux下如何杀死一个脚本及其脚本中启动的其他脚本,如a.sh脚本中后台执行了b.sh脚本,b.sh脚本中又后台执行了c.sh脚本。我可以通过什么方式直接把a.sh脚本及其启动的相关脚本都杀死。

目前实验,发现杀死a.sh,它启动的其他后台脚本还在执行。

求大神指点一二,谢谢

加载中
0
当朝宰相
当朝宰相
ps auxf | grep "进程的过滤信息", ps 的 f 就是显示父进程的信息
0
Feng_Yu
Feng_Yu

http://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes

最佳的实践还是程序运行的时候自己打印一个pid到文件中

0
jack_xuwei
jack_xuwei

引用来自“Feng_Yu”的评论

http://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes

最佳的实践还是程序运行的时候自己打印一个pid到文件中

是的, 不然两个完全独立的 脚本,启动后没有任何关系
0
沙米笔记
沙米笔记

引用来自“Feng_Yu”的评论

http://stackoverflow.com/questions/392022/best-way-to-kill-all-child-processes

最佳的实践还是程序运行的时候自己打印一个pid到文件中

没错,最佳的实践还是程序运行的时候自己打印一个pid到文件中。觉得说的很有道理,万分感谢大家。 $$(获取自己进程的PID)    $PPID(获取父进程的PID) 
0
温习江湖
温习江湖
干掉父进程会自己干掉子进程,孙进程和特殊处理的子进程还是利用进程树来干吧
Feng_Yu
Feng_Yu
不会,子进程会收到SIGHUP信号,在交互式bash下,不会导致子进程退出,而是变成孤儿进程,从而被init进程接管
0
m
mononite
The command kill sends the specified signal to the specified process or process group.

脚本里启动的其他脚本一般都在一个process group里,可以看一下:

ps axo pid,pgid,comm

找到pgid,比如1234,用kill杀就行了:

kill -- -1234
或者更暴力一些:
kill -9 -1234
返回顶部
顶部