mli*_*ner 44 linux terminal bash
如果我启动一个需要很长时间的脚本,我不可避免地会在启动脚本后意识到这一点,并希望我有办法在它完成后做某种警报。
因此,例如,如果我运行:
really_long_script.sh
Run Code Online (Sandbox Code Playgroud)
然后按回车...完成后如何运行另一个命令?
ala*_*and 56
您可以用 分隔多个命令;
,以便它们按顺序执行,例如:
really_long_script.sh ; echo Finished
Run Code Online (Sandbox Code Playgroud)
如果您希望仅在脚本以返回码 0 结束时才执行下一个程序(这通常意味着它已正确执行),则:
really_long_script.sh && echo OK
Run Code Online (Sandbox Code Playgroud)
如果您想要相反的(即仅在当前命令失败时继续),则:
really_long_script.sh || echo FAILED
Run Code Online (Sandbox Code Playgroud)
您可以在后台运行您的脚本(但请注意,脚本输出 (stdout
和stderr
) 将继续进入您的终端,除非您将其重定向到某个地方),然后wait
为它:
really_long_script.sh &
dosomethingelse
wait; echo Finished
Run Code Online (Sandbox Code Playgroud)
如果您已经运行了脚本,您可以使用 挂起它Ctrl-Z
,然后执行如下操作:
fg ; echo Finished
Run Code Online (Sandbox Code Playgroud)
在哪里fg
将挂起的进程带到前台(bg
将使其在后台运行,很像开始时&
)
Mar*_* An 22
如果该进程未在当前 tty 上运行,请尝试以下操作:
watch -g ps -opid -p <pid>; mycommand
Run Code Online (Sandbox Code Playgroud)
Jaa*_*ing 16
您还可以使用 bash 的作业控制。如果你开始
$ really_long_script.sh
Run Code Online (Sandbox Code Playgroud)
然后按 ctrl+z 暂停它:
^Z
[1]+ Stopped really_long_script.sh
$ bg
Run Code Online (Sandbox Code Playgroud)
在后台重新启动作业(就像用 启动它一样really_long_script.sh &
)。然后你可以等待这个后台工作
$ wait N && echo "Successfully completed"
Run Code Online (Sandbox Code Playgroud)
其中 N 是作业 ID(如果您没有运行任何其他后台作业,则可能为 1),也如上[1]
所示。
归档时间: |
|
查看次数: |
55049 次 |
最近记录: |