使用 nohup 让进程在后台运行

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

1. & 启动的进程在终端关闭之后也会被关闭

比如作者写了一个 java 程序 rainbow-app2-1.0.0.jar,使用以下命令启动
# java -jar rainbow-app2-1.0.0.jar &
一个进程被启动,并且在后台运行了。通过 ps 查看该进程的状态:
http://en.wikipedia.org/wiki/Nohup
可以看出该进程 pid 是 10711,ppid 是 10638。也就是说,这个进程是本次的远程 SSH 会话开启的一个子进程。我们关掉 SSH 客户端,然后重新登录,再次 PS 一下:
再次 PS 一下
可以看到该进程随着上次 SSH 会话的关闭已经被关闭。

这不是我想要的。我期望的是,在我下班关闭 SSH 回家之后,该 Java 进程还是要能够继续运行,继续工作。


2. 使用 nohup  启动一个父进程关闭之后仍然能够运行的后台进程

# nohup java -jar rainbow-app2-1.0.0.jar >app2.out 2>&1 &
这条命令也将在后台启动一个新进程,并把 java 程序的所有输出(包括所有标准输出和错误输出)都重定向到 app2.out 文件中。这条命令执行之后,控制台输出启动的后台进程的 pid:
控制台输出启动的后台进程的 pid
ps 查看其状态:
ps 查看其状态
可以看出该进程 pid 是 10916,ppid 是 10829。也就是说,这个进程也是本次的远程 SSH 会话开启的一个子进程。我们关掉 SSH 客户端,然后重新登录,再次 PS 一下:
ppid 变成了 1

可以看到该进程并没有随着上次 SSH 会话的关闭而被关闭,它的 pid 仍旧是 10916,只不过它的 ppid 变成了 1。一般来讲 ppid 为 1 的是作为系统进程启动的进程,这里 java 进程的 ppid 也是 1 却是属于另外一种情况:父进程已被关闭,子进程仍在运行。


参考资料

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/hgguhff/article/details/84094024
今日推荐