shell 执行运行时间很长的程序时,尤其是使用云服务器的时候,如果不小心断开了ssh,可能正在进行的程序就直接结束了。
运行了个很长时间的脚本。我这个大概需要20个小时。
$ php copy.php
这时候我们不想结束这个脚本,但是也不想在这里傻等。 可以在这个 shell 按 Ctrl z,这个时候这个正在运行的程序就挂起到后台了。但是现在关闭 ssh 肯定会杀死它的。
^Z
[1]+ 已停止 php copy.php
这时候我们可以在后台先让它运行着。 % 后面的数字就是 [ ] 里面的数字。jobs 可以看一看挂起的程序
$ bg %1
[1]+ php copy.php &
$ jobs
[1]+ 运行中 php copy.php &
之后用 disown 就可以把它给系统的后台了。
$ disown -h %1
之后用 top 或 htop 观察它吧。
PS: bg 相对的还有 fg,就是 挂起到后台的程序显示到前台。