nohup 指令解析
nohup
SIGHUP 信号
SIGHUP会在以下3种情况下被发送给相应的进程:

SIGSTOP或SIGTSTP信号),该信号会被发送到该进程组中的每一个进程。例如:在我们登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台进程组和后台进程组,一般都属于这个 Session。当用户退出Linux登录时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进 程组和后台有终端输出的进程就会中止。
nohup 命令
nohup不会断开与终端的命令,它会使您的脚本被忽略SIGHUP,并重定向stdout/stderr到一个文件nohup.out,以便在您注销后该命令可以在后台继续运行。
nohup不会自动将命令在后台运行。必须通过用 & 来明确地做到后台运行。
jobs可以打印当前正在运行的作业及其状态。如果命令jobs找不到它,那么它不再是该shell的子进程。
fg即使运行后,也可以使用bash将后台作业带回前台nohup。但这不会改变输出重定向,它仍将转移到文件中nohup.out。
测试
防止退出登录后,脚本结束运行,使用nohup。
#!/bin/bashfor i in `seq 1000`;doecho "$i";sleep 2;done;
nohup sh t.sh 2>&1 &
nohup与&
通常,在运行命令后使用&和退出shell时,shell将使用hangup signal(kill -SIGHUP <pid>)终止子命令。这可以使用nohup,因为它捕获信号并忽略它,以便它永远不会到达实际的应用程序。
如果您正在使用bash,则可以使用该命令shopt | grep hupon查明您的shell是否将SIGHUP发送到其子进程。如果它关闭,进程将不会终止。
当huponexit为off时,exit时不会向终端所属任务发SIGHUP信号,激活该选项:shopt -s huponexit
将已经运行的进程放到nohup下
Ctrl Z停止(暂停)程序并返回shell。 bg 在后台运行它。 disown -h [job-spec]其中[job-spec]是作业编号(类似于%1第一个正在运行的作业;使用jobs命令查找您的编号),以便在终端关闭时不会终止作业。假设由于某种原因Ctrl Z也无法正常工作,请转到另一个终端,找到进程ID(使用ps)并运行
kill -SIGSTOP PIDkill -SIGCONT PID
SIGSTOP将暂停该进程并用SIGCONT在后台恢复该进程。所以现在,关闭两个终端并不会停止你的过程。
更多资料
Linux nohup命令
Linux Signal及Golang中的信号处理
-
07.01
DNF18周年庆版本:女大枪毕业徽章推荐
-
07.01
DNF18周年庆版本合金战士毕业徽章推荐指南
-
07.01
三角洲行动s10石与花2任务指南
-
07.01
舒舒服服小岛时光配方全解析-热门小岛生活模拟玩法指南
-
07.01
使命召唤手游FSS飓风 使命召唤手游FSS飓风武器性能与实战表现深度解析
-
07.01
梦幻西游69级天宫装备搭配
-
-
- nohup 指令解析
- 07.01
-
- 对接抖音商品详情常见错误与解决方案
- 07.01
-
-
-
下载
- 《神剑伏魔录》(神剑风云)游戏音乐合集
- 其他游戏|7.73 MB
- 一款非常好玩的武侠闯关游戏
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- 《生化危机:浣熊市行动》免安装中文硬盘版下载
- 单机|6310 MB
- 一款以动作射击为主题的游戏
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏