nohub后端执行
后端执行
后端执行由两种模式
- &-后台运行。&的意思是在后台运行,意思是说,当你在执行 ./a.out & 的时候, 即使你用ctrl C, 那么a.out照样运行(因为对SIGINT信号免疫)。但是要注意, 如果你直接关掉shell后, 那么,a.out进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。
- nohup-永久执行。nohup的意思是忽略SIGHUP信号,所以当运行nohup ./a.out的时候,关闭shell, 那么a.out进程还是存在的(对SIGHUP信号免疫)。但是,如果你直接在shell中用Ctrl C, 那么, a.out进程也是会消失的(因为对SIGINT信号不免疫)
用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行。&是指在后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出。所以,&和nohup没有任何关系, 要让进程真正不受shell中Ctrl C和shell关闭的影响, 那该怎么办呢? 那就用:
具体命令
1 | nohup ./a.out & |
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。 该命令的一般形式为:
1 | nohup conmmand & |
输出重定向问题
1 | nohup your_command > my_nohup.log 2>&1 & |
- 将日志输出在my_nohup.log文件中,并将stderr重定向至stdout
- 0-标准输入流
- 1-标准输出流
- 2-错误输出流
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!









