让Linux进程关掉客户端后继续执行

通常我们使用shell客户端在Linux服务器上执行命令,如果我们关闭客户端,则该进程也自动终止。

像统计分析等程序执行起来耗时较长,就必须让程序在后台执行,原因有二:

1 即使我们不主动关闭客户端,也不能排除意外情况导致客户端关闭

2 仅仅为了让程序继续执行而开着一台电脑运行shell客户端浪费能源

两种办法将程序转为后台执行:

方法一:nohup

假如期望执行的程序是

php 1.php

那就这样写:

nohup php 1.php &

回车之后会提示一句话,再次回车进程就在后台执行起来了。程序执行的结果会通过标准输出现在在屏幕上,在转入后台之后会把输出保存到文件里,默认保存在nohup.out这个文件中。

方法二 bg+disown

如果一个程序在执行时没有加nohup,但是执行之后才发现耗时远超想象,这是如果终止程序重新开始的话当然也是一种办法,但之前等待的时间就白费了,又要从头再来。这时候就需要bg等命令的组合了,步骤如下:

#ctrl+z将程序暂停

bg
#将进程转入后台

disown -h
#将进程脱离终端独立执行

#此时可以关掉终端了