通常我们使用shell客户端在Linux服务器上执行命令,如果我们关闭客户端,则该进程也自动终止。
像统计分析等程序执行起来耗时较长,就必须让程序在后台执行,原因有二:
1 即使我们不主动关闭客户端,也不能排除意外情况导致客户端关闭
2 仅仅为了让程序继续执行而开着一台电脑运行shell客户端浪费能源
两种办法将程序转为后台执行:
方法一:nohup
假如期望执行的程序是
php 1.php
那就这样写:
nohup php 1.php &
回车之后会提示一句话,再次回车进程就在后台执行起来了。程序执行的结果会通过标准输出现在在屏幕上,在转入后台之后会把输出保存到文件里,默认保存在nohup.out这个文件中。
方法二 bg+disown
如果一个程序在执行时没有加nohup,但是执行之后才发现耗时远超想象,这是如果终止程序重新开始的话当然也是一种办法,但之前等待的时间就白费了,又要从头再来。这时候就需要bg等命令的组合了,步骤如下:
#ctrl+z将程序暂停
bg
#将进程转入后台
disown -h
#将进程脱离终端独立执行
#此时可以关掉终端了