前言
Linux的nohup命令主要用于启动守护进程,而守护进程,就是一直在后台运行的进程(daemon),在阮一峰老师的Linux 守护进程的启动方法中,提到了 disown、nohup、screen、tmux、systemd等方法,这里只对 nohup 进行补充。
nohup
nohup 可以拆分为 no 和 hup 两个单词,no 是不要的意思,hup代表的是挂起信号(hangup)。从字面理解是忽略挂起信息,即不挂断地运行进程。
在谈 nohup 前,需要说明Linux中有三个常用的流:
- 0:标准输入流 stdin
- 1:标准输出流 stdout
- 2:标准错误流 stderr
我们常用的 echo "xxx" > app.log,其实是 echo "xxx" 1> app.log 的省略用法;而 cat < app.log 实际上是 cat 0< app.log 的省略用法。
默认情况下,nohup会将标准输出和标准错误重定向到 nohup.out 文件,如下:
$ nohup node server.js &
当然,我们也可以修改重定向的文件
$ nohup node server.js >your_file 2>&1 &
通过 jobs 可以查看任务
$ jobs
注:上述的 2>&1 其实就是将标准错误(2)重定向到标准输出(1),至于为什么要把标准错误重定向到标准输出,是因为标准错误没有缓冲区,而标准输出有,如果是 >your_file 2>your_file的形式,会导致your_file这份文件被打开两次,导致标准输出和标准错误竞争覆盖。
写在最后
各位老板,创作不易,更需不断地磨练和总结,欢迎关注我,我是言淦,为你分享各种实用的编程知识与编程技巧,你们的点赞与关注是我前进和创作的最大动力!!