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