Linux中nohup的使用
之前因为需求,搭建的一个后台程序需要在Linux的服务器上挂载,在Linux服务器中,想要在后台运行程序,需要使用nohup命令来运行。
nohup命令
nohup的意思就是不挂断地运行命令,是no hang up的缩写,nohup命令忽略所有的挂断信号(SIGHUP)
语法:
nohup Command [ Arg ... ] [ & ]
其中Command是指运行程序的命令,例如若要运行test.py程序,则Command部分就是python3 test.py。
&
&是将进程提交到后台运行的命令,这样你就可以在控制台终端做其他事情,但是当把当前控制台(终端)关闭(退出账户)时,进程就会停止运行。
而nohup命令,可以保护进程在退出账户,释放连接后继续运行,所以使用该命令一般的形式是:
nohup command &
&让进程转至后台运行,nohup让进程不会由于退出账户停止。
而如果想让进程停止,可以通过使用ps -ef来查看进程的pid。
然后kill掉pid来结束进程。
为什么关闭SSH连接,程序就停止运行?
要想回答这个问题,首先需要知道在Linux系统下有这两个概念:
进程组:一个或者多个进程的集合,每一个进程组都有唯一一个进程组ID,即进程组长进程的ID。
会话期:一个或多个进程组的集合,有唯一一个会话期首进程。会话期ID为首进程的ID。
会话期可以有一个单独的控制终端。与控制终端连接的会话期首进程叫做控制进程。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。
挂断信号(SIGHUP)默认的动作是终止程序。
当终端接口检测到网络连接断开,将挂断信号发送给控制进程。
如果控制进程终止,则该信号发送到该会话期前台进程组。
结论:因此当网络断开或终端窗口关闭后,也就是SSH断开以后,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。
也就是说:当SSH连接开启的时候,bash等都会成为其进程组成员,当ssh关闭后,系统会将所有相关进程kill掉。
上一篇: win7系统开机蓝屏怎么办
下一篇: PHP良好编码方式与技巧注意事项
推荐阅读
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
Linux统计一个文件中特定字符个数的方法
-
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
-
WordPress开发中的get_post_custom()函数使用解析,wordpressgetpost_PHP教程
-
Javascript中Eval函数的使用说明_javascript技巧
-
JavaScript 中的 this使用方法详解
-
jQuery中的复合选择器如何使用
-
Linux服务器中对于Memcache的安装配置方法
-
C#中事件的定义和使用
-
javascript中的new使用_javascript技巧