我可以以某种方式向已经运行的 prog1 添加“&& prog2”吗?

us2*_*012 88 shell bash process exit

大多数 shell 提供类似&&;以某种方式链接命令执行的功能。但是如果一个命令已经在运行,我是否仍然可以根据第一个命令的结果以某种方式添加另一个要执行的命令?

说我跑了

$ /bin/myprog
some output...
Run Code Online (Sandbox Code Playgroud)

但我真的很想要/bin/myprog && /usr/bin/mycleanup。我无法杀死myprog并重新启动一切,因为会浪费太多时间。我可以Ctrl+Z它和fg/bg如果有必要。这是否允许我链接另一个命令?

我最感兴趣的是 bash,但欢迎所有常见 shell 的答案!

slm*_*slm 118

您应该能够在使用以下wait命令的同一个 shell 中执行此操作:

$ sleep 30 &
[1] 17440

$ wait 17440 && echo hi

...30 seconds later...
[1]+  Done                    sleep 30
hi
Run Code Online (Sandbox Code Playgroud)

摘自 Bash 手册页

$ sleep 30 &
[1] 17440

$ wait 17440 && echo hi

...30 seconds later...
[1]+  Done                    sleep 30
hi
Run Code Online (Sandbox Code Playgroud)

  • 让我第一个祝贺你获得闪亮的新徽章:) (2认同)

Joh*_*man 63

fg从它恢复的程序中返回退出代码。因此,您可以暂停您的程序,^Z然后使用fg && ...它来恢复它。

$ /bin/myprog
some output...
^Z
[1]+ Stopped              /bin/myprog
$ fg && /usr/bin/mycleanup
Run Code Online (Sandbox Code Playgroud)

  • @BurhanAli 第二次暂停 `myprog` 会导致 `fg` 以退出代码 20 终止——这是非零,因此不会执行链接的 `mycleanup` 命令。 (3认同)