如何向已经运行的进程添加一个额外的“关闭”命令?

bru*_*ker 13 command-line bash shutdown process

我经常忘记添加&& shutdown -h now到一个长期运行的过程中。有没有办法在调用第一个shutdown -h now命令添加命令?它无意中断正在进行的过程。也许可以观看PID?

psu*_*usi 15

无需重复运行 ps 来列出所有进程并通过输出 grep。使用 ctrl-Z 将进程后台运行,然后运行

bg %1 ; wait %1 ; shutdown -h now
Run Code Online (Sandbox Code Playgroud)

如果您有其他后台作业正在运行,那么当您按 ctrl-z 时,您将获得不同的作业规范而不是 [1]。如果是这样,请改用它。


Naf*_*Kay 5

我一直这样做。

  1. 开始该过程。
  2. 意识到我忘记执行&&命令了。
  3. Ctrl+Z暂停进程并返回 shell。
  4. 跑向fg && shutdown -h now
    1. 前台并恢复刚刚暂停的进程。
    2. 然后,完成后,它将运行您想要运行的内容。

或者,您可以按照其他答案中的建议进行轮询,如下所示:

while ps -p $PID ; do sleep 5 ; done ; shutdown -h now
Run Code Online (Sandbox Code Playgroud)