我正在用 wget 下载文件,我想在下载完成后关闭我的计算机,但我现在需要去某个地方:) 是否可以在进程完成时在 bash 中精确地执行命令?
我知道这有效:
wget http://example.com/file.rar; 现在关机
但是如果我只输入:
wget http://example.com/file.rar
小智 32
你可以这样做:
wait 将等待从当前 shell 在后台运行的所有程序 - 即这个 wget。
等待完成后 - 关闭将继续。
dmc*_*ten 11
在另一个外壳中,使用
ps -u <your username> | grep wget
Run Code Online (Sandbox Code Playgroud)
找到您要等待的命令的PID,然后
wait <PID>; shutdown -h now
Run Code Online (Sandbox Code Playgroud)
以便在进程终止之前关闭不会运行。另请参阅depesz 的回答。
我的解决方案是:使用 Control+Z 暂停您长时间运行的任务,然后键入以下内容:
fg; echo "Done!"
Run Code Online (Sandbox Code Playgroud)
如果您想根据命令的成功或失败运行不同的反应,请使用 && 和 || 作为短路运算符。
fg && echo "Success!" || echo "Failure!"
Run Code Online (Sandbox Code Playgroud)
编辑:这不适用于 sudo,因为它会询问您的密码。因此,我使用 sudo 删除了示例。如果第二个任务需要 sudo,请使用此处发布的另一种方法。
另一方面,我相信 GNOME 和 KDE 都提供了在不使用 sudo 的情况下通过发送适当的 D-Bus 信号或其他东西来触发关闭/重启的方法。