linux kill 子进程6,linux – Bash:杀死子进程中的所有进程
在bash中,我可以通过$获取最后一个子进程的进程ID(pid)!变量.然后我可以在它完成之前终止这个子进程:
(sleep 5) & pid=$!
kill -9 $pid
这与广告一样有效.如果我现在在睡眠后使用更多命令扩展子进程,则在子进程被终止后,sleep命令会继续,即使其他命令永远不会被执行.
作为一个例子,考虑以下内容,它使用ps来旋转子进程并监视其暗杀:
# Start subprocess and get its pid
(sleep 5; echo done) & pid=$!
# grep for subprocess
echo "grep before kill:"
ps aux | grep "$pid\|sleep 5"
# Kill the subprocess
echo
echo "Killing process $pid"
kill -9 $pid
# grep for subprocess
echo
echo "grep after kill:"
ps aux | grep "$pid\|sleep 5"
# Wait for sleep to finish
sleep 6
# grep for subprocess
echo
echo "grep after sleep is finished:"
ps aux | grep "$pid\|sleep 5"
如果我将其保存到名为filename的文件并运行它,我得到这个打印输出:
grep before kill:
username 7464 <...> bash filename
username 7466 <...> sleep 5
username 7467 <...> grep 7464\|sleep 5
Killing process 7464
grep after kill:
username 7466 <...> sleep 5
username 7469 <...> grep 7464\|sleep 5
grep after sleep is finished:
username 7472 <...> grep 7464\|sleep 5
其中来自ps命令的不重要信息被替换为< ...> ;.看起来kill已经杀死了文件名的整体bash执行,同时让睡眠运行.
我怎样才能正确杀死整个子进程?
解决方法:
您可以在子shell中设置陷阱以在退出之前终止所有活动作业:
(trap 'kill $(jobs -p)' EXIT; sleep 5; echo done ) & pid=$!
标签:bash,shell,unix,linux,kill
来源: https://codeday.me/bug/20190627/1308654.html
linux kill 子进程6,linux – Bash:杀死子进程中的所有进程相关推荐
- linux kill命令信号,linux kill命令详解
kill 命令的用途 kill 命令很容易让人产生误解,以为它仅仅就是用来杀死进程的.我们来看一下 man page 对它的解释:kill - send a signal to a process. ...
- Linux ping命令、Linux kill命令、Linux logname命令、 Linux logout命令
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Linux ping命令用于检测主机. 执行ping指令会使用ICMP传输协议,发出要求回应的信息, ...
- linux kill命令信号,Linux kill 命令详解
Linux kill 命令很容易让人产生误解,以为它仅仅就是用来杀死进程的.我们来看一下 man page 对它的解释:kill - send a signal to a process. 从官方的解 ...
- Linux shell 对话框,如何在 Bash Shell 脚本中显示对话框
原标题:如何在 Bash Shell 脚本中显示对话框 这个教程给出几个如何使用类似zenity和whiptail的工具在Bash Shell 脚本中提供消息/对话框的例子.使用这些工具,你的脚本能够 ...
- linux删除最后一个字符串,Bash删除字符串中的第一个和最后一个字符
问题描述 我有一个这样的字符串: |abcdefg| 我想要得到一个新的字符串(如string2)与原始字符串调用没有两个|在开始和结束时 所以我会有这个 abcdefg 在bash中可能吗? 最佳解 ...
- linux空格转义,如何在bash循环列表中转义空格?
首先,不要这样做.最好的办法是正确使用find -exec: # this is safe find test -type d -exec echo '{}' + 另一个安全的方法是使用NUL终止列表 ...
- django为什么需要子进程,如何关闭子进程,linux状态
django为什么需要子进程 一旦用户用manage.py runserver启动开发服务器,就启动了一个django的进程,当然如果我们用ps aux,这其实是一个Python进程,不过他运行了ma ...
- linux常用命令kill-9,【Linux常用命令】Linux kill, killall, kill -9,
kill + PID kill -9 + PID 加上-9 是强制终止的信号 killall 是直接加进程名(但是进程名一定要完整) 就能杀掉这些进程 1) 查看进程的方法: ps -ef 或者 ...
- linux系统fuser命令,linux之fuser命令
fuser:使用文件或者套节字来表示识别进程.我常用的他的两个功能:查看我需要的进程和我要杀死我查到的进程. 比如当你想umount光驱或者其他文件系统的的时候,结果系统提示你设备正在使用或者正忙,可 ...
最新文章
- 实战:基于OpenCV的人眼检测
- Ubuntu14.04 python 2.7环境下安装Scrapy
- 边工作边刷题:70天一遍leetcode: day 94-1
- 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Category 分类进行方法注入的优缺点 )
- CodeForces - 1285D Dr. Evil Underscores(记忆化搜索+字典树)
- 如何用js获取浏览器URL中查询字符串的参数
- vcenter服务器修改ip,vcenter服务器默认ip地址
- python最简单选课系统作业_python之路——作业:学生选课系统
- 百度AI学习:四、自然语言处理-1.词法分析
- 网络校时(非NTP)
- 烈火如歌手游找回服务器,《烈火如歌》05月02日新服公告:侠肝义胆
- K-th Number Poj - 2104 主席树
- Python 父与子的编程之旅 第七章答案
- 对Json数据的处理(模拟获取数据是来自于本地)
- 学豆网学计算机,出题优学生版电脑版
- 概率论与数理统计(下)
- 安卓实战之登录界面设计
- A Game of Thrones(97)
- TIFF图像文件(四):LZW压缩
- 经典游戏打砖块(粗糙版)