linux后台任务 初步

前台任务变成后台任务的两种方法:
1. 执行命令的时候加上&
2. 正在运行的前台任务,按ctrl + z,然后执行bg。(bg是让最近一个暂停的后台任务继续执行)

后台任务两个特点:
1. 继承当前session的stdout和stderr。因此后台任务的所有输出依然会同步地在命令行下显示。
2. 不继承当前session的stdin。无法向这个任务输入指令了。如果它试图读取标准输入,就会暂停执行。

用户退出session时,Linux做了以下事情:
1. 用户准备退出session
2. 系统向该session发出SIGHUP信号
3. session将SIGHUP信号发送给所有子进程
4. 子进程收到SIGHUP信号后,自动退出
前台任务一定收到SIGHUP信号。后台任务能否收到SIGHUP信号,是由shopt | grep huponexit决定的。
大多数Linux系统,huponexit默认是关闭的。因此,session退出的时候,不会把SIGHUP信号发给后台任务。所以,一般来说,后台任务不会随着session一起退出。

nohup命令对进程做了三件事:
1. 阻止SIGHUP信号发到这个进程
2. 关闭stdin,该进程不再能后接收任何输入,即使运行在前台。
3. 重定向stdout, stderr到nohup.out

猜你喜欢

转载自blog.csdn.net/sumaoqing123/article/details/82683532