从我的理解,工作是管道从某一个shell启动的,你可以管理这些作业(fg
,bg
,按Ctrl-Z)从该壳体内。一个作业可以包含多个进程/命令。
我的问题是,当包含外壳的原始外壳退出时,这些作业会发生什么?假设未设置huponexit,因此退出shell后后台进程继续运行。
假设我已经完成:
$ run.sh | grep 'abc' &
[1] job_id
然后我退出这个外壳。我将输入一个新的shell并运行jobs
,显然看不到任何内容。但是我可以做ps aux | grep run.sh
并看到此过程正在运行,并且我也将ps aux | grep grep
看到并grep 'abc'
正在运行该过程。
有没有一种方法可以获取完整管道的作业ID,以便我可以一口气杀死它,或者一旦退出原始Shell,是否必须与另一个Shell分别杀死所有进程?(我已经尝试了后者,但它确实有效,但是跟踪所有过程似乎很麻烦。)