Linux-利用nohup查看实时输出
在工作中,我们很经常跑一个很重要的程序,有时候这个程序需要跑好几个小时,甚至需要几天,这个时候如果我们退出终端,或者网络不好连接中断,那么程序就会被中止。而这个情况肯定不是我们想看到的,我们希望即使终端关闭,程序依然可以在跑。
1. 什么是 nohup
nohup
就是 no hang upnohup
会忽略 所有的中断信号nohup
可以使得命令永久运行下去,并且将其输出写入(或追加)到当前目录下的nohup.out
文件当中- 比如用
ssh
接入一个远程服务器,希望退出ssh
之后,程序依然执行,那么就可以使用nohup
命令 - 起两个作用:
- 忽视网络波动,服务器始终运行程序
- 查看
nohup.out
,查看日志
2. nohup 常常和 &
结合使用
&
说明是放在后台运行的,但是用户退出(挂起)的时候,也会跟着退出- 比如
nohup sh test.sh &
,执行test.sh
脚本,并且用nohup
挂起,同时用&
放在后台执行 nohup command > out.file 2>&1 &
当中,2> &1
说明将标准错误(2)重定向到标准输出(1)当中,但是标准输出(1)又被重定向到out.file
当中(等于全被重定向到out.file
当中了)nohup
可以用Ctrl + C
直接杀掉
3. 结合 tail -f
查看 nohup.out
的热更新
tail -f
:不断追加,实现实时查看的效果
- 结合
nohup
shell
# 写入out.log
# tail -f 实时查看
nohup python -u showFunc.py > out.log & tail -f out.log