nohup命令、setsid命令

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:

要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

 

nohup 的用途就是让提交的命令忽略 hangup 信号。

setsid的用途就是让进程运行在新的会话里从而成为不属于此终端的子进程(fork)。

 

 

在Linux中,当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。实际上,这样是将命令放入到一个作业队列中了:

 

两种方式:

 

   1. command & : 后台运行,关掉终端会停止运行

 

   2. nohup command & : 后台运行,关掉终端也会继续运行

 

在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样机器就会一直等待。不过,作业在后台运行一样会将结果输出到屏幕上,干扰工作。

 

 

 

如何让进程脱离当前终端运行

nohup  command &

 

setsid command

 

 

(command &)   子shell

screen command

 

 

 

posted @ 2026-01-21 15:38  Dog17  阅读(0)  评论(0)    收藏  举报