gpt4 book ai didi

macos - Bash:如何显示作业进程的完整列表并杀死它们

转载 作者:行者123 更新时间:2023-11-29 09:05:33 26 4
gpt4 key购买 nike

我发出命令 task1 & task2 dir/&& task3 &

  • Task1 永远不会结束,所以我们将它发送到后台。
  • Task2 改变目录
  • Task3 取决于 task2 的完成。

发出:jobs -l 将显示:

[1]- 39281 Running                 task1 &
[2]+ 39282 Running task2 && task3 &

发出:ps 将显示:

39281 ttys002    0:04.17 task1  
39282 ttys002 0:00.00 task2
39283 ttys002 0:03.66 task3

问题:

  1. 有没有办法在作业命令输出中显示 task3?
  2. 为什么 task3 没有显示为它自己的工作?
  3. 有没有办法同时终止所有三个任务?
  4. 如果我杀死 task2,为什么 task3 不会死?
  5. 有更好的方法吗?

目标: 发出一行命令来初始化工作流并将其发送到后台。准备就绪后,一次性杀死所有启动的进程。

对于上下文,在我的例子中,task1 是一个带有 livereload 的 grunt 任务,所以它应该被发送到后台。任务 2 更改目录,以便任务 3 可以查看该目录中更改的文件。

最佳答案

将 bash 与 job control 结合使用您可以或多或少地同时终止最近的两个后台任务

kill %% %-

如果您不希望作业显示 cd 部分,您需要更改当前 shell 中的目录,这意味着隔离 cd 表达式:

sleep 10000 & cd .. && { sleep 20000 & }

关于macos - Bash:如何显示作业进程的完整列表并杀死它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22873625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com