如何设置Linux命令使程序在会话断开后继续运行?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1159个文字,预计阅读时间需要5分钟。
简介+说明+文本介绍Linux会话断开后不停止程序的方法。
概述+描述+当用户注销(logout)或网络断开时,终端会收到HUP(hangup)信号从而关闭所有子进程。因此,我们的解决方案有两种:
简介
说明
本文介绍Linux会话断开后不停止程序的方法。
概述
当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。
法1:nohup
说明
用ssh时,只能等命令运行完再关闭ssh对话,若关闭了会话,则命令会停止执行。
nohup:在退出ssh对话后仍然运行该命令。(使进程忽略hangup信号,从而持续执行。)
示例
用法:nohup xxx //xxx表示要运行的命令
法2:setsid
说明
setsid作用:使此进程不属于接收HUP 信号的终端的子进程,也就不会受到 HUP 信号的影响了。
setsid中的sid指的是session id,意指以该命令运行的进程是一个新的session,因此其父进程id不属于当前终端。实际上,setsid运行的进程,其父进程id(PPID)为1(init 进程的 PID)。
本文共计1159个文字,预计阅读时间需要5分钟。
简介+说明+文本介绍Linux会话断开后不停止程序的方法。
概述+描述+当用户注销(logout)或网络断开时,终端会收到HUP(hangup)信号从而关闭所有子进程。因此,我们的解决方案有两种:
简介
说明
本文介绍Linux会话断开后不停止程序的方法。
概述
当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。
法1:nohup
说明
用ssh时,只能等命令运行完再关闭ssh对话,若关闭了会话,则命令会停止执行。
nohup:在退出ssh对话后仍然运行该命令。(使进程忽略hangup信号,从而持续执行。)
示例
用法:nohup xxx //xxx表示要运行的命令
法2:setsid
说明
setsid作用:使此进程不属于接收HUP 信号的终端的子进程,也就不会受到 HUP 信号的影响了。
setsid中的sid指的是session id,意指以该命令运行的进程是一个新的session,因此其父进程id不属于当前终端。实际上,setsid运行的进程,其父进程id(PPID)为1(init 进程的 PID)。

