一、前台和后台
后台运行符号&:
我们想执行一条命令并且并不关心他执行的结果(如常见的服务器程序),或者我们在执行这条命令的同时,希望还能继续执行其它命令,这时候我们可以将其放到后台运行。这时候,只需要在一条命令的最后面加上后台运行符(&)就可以了。
但此时如果这个进程有输出,还是会显示出来,这又会干扰到我们的shell窗口。所以可以考虑把标准输出重定向到某个文件去,如:command >output &
,可以把标准输出1和标准错误输出2重定向到文件,所以写成这样:command 1>output 2>error &
,正常的输出在output文件里,错误的输出在error文件里。这里也等同于command >output 2>error &
有时候只想保留一种,另外一个既不输出又不保存,那就用到这个设备/dev/null,所以忽略错误输出:command 1>output 2>/dev/null &
;忽略标准输出:command 1>/dev/null 2>error &
;忽略全部输出: command 1>/dev/null 2>/dev/null
这种“后台”进程在shell一直打开的情况下是没有问题的,如果我们关了shell窗口甚至退出ssh登录或vnc登录,那么进程自动就结束了。所以如果想退出窗口乃至退出登录仍然保持程序运行,再加上nohup,形如:nohup command 1>output 2>&1 &
二、进程查询
Linux是支持多进程运行的分时操作系统,在操作系统启动时L.inux内核会创建一个特殊的进程p.init进程,该进程会创建