linux 中真正的后台进程

来源:互联网 发布:java 集合有哪些 编辑:程序博客网 时间:2024/06/16 03:50

以下讨论设定在linux环境中(cmd代表linux中的命令加上参数):

一、终端让进程后台执行,退出终端即终止(cmd &)

二、终端让进程后台执行,退出终端不终止(nohup cmd &)


1.  如果在终端上执行某命令,此命令响应时间较长(或者此应用需要长时间保持),但是此时又需要执行新的命令,此时就需要(&)来让进程后台执行。

(1)比如你在终端上打开编辑器: gedit

(2)这时候你需要查看文件:ls

(3)此时你有两个选择:或者打开一个新的终端(ctrl + alt  + T),或者让编辑器后台执行(gedit &)


2.上述终端命令(&)有一个特点就是:终端关闭后,程序立即退出!

(1)比如你通过ssh或者putty远程登录到服务器上,需要执行一个后台进程,即使退出登录,也需要进程常驻内存!

(2)此时你可以选择永远不关闭终端(有点不太现实 -_- !! ),或者尝试( nohup)来达到目的。

(3)例如:

nohup sh sleep.sh &任意键退出编辑exit 终端即可
这样就会默认生成一个输出文件(nohup.out)

你可以选择重定向输出文件:

nohup sh sleep.sh  1>/dev/null  2> /dev/null &
这样你将忽略一切输出信息:(0、1、2是linux下的文件描述符fd,分别是文件输入、输出、错误文件fd)

1> /dev/null  正确的输出信息重定向到dev/null

2> /dev/null  错误的输出信息重定向到dev/null(比如查看某一个目录,没有权限的将会得到permission deny就是指此处的错误信息)


查看进程的pid:

ps -ef  | grep cmd  (比如上述示例:ps -ef | grep sleep)


杀死进程:

kill -9 pid  (pid 进程id号)


0 0