nohup python flush.py &
这样运行,能够生成nohup.out文件,但是内容始终是空的。具体原因:python的输出是有缓冲的,即使在py脚本中每次遍历都有打印输出,但是因为缓冲的作用,我们不能在nohup.out日志中立即看到打印的输出。
nohup python -u flush.py > flush.log 2>&1 &
-u 参数,使得python不启用缓冲。
如果python带参数也是一样的
nohup python -u train4.py train_base configs/magicpoint_shapes_pair.yaml magicpoint_synth --eval > nohup.out 2>&1 &
解析:
- nohup 不挂断地运行命令,忽略所有挂断信号(SIGNUP信号),比如当账号注销时。最后的&:表示后台运行。nohup command &,表示后台运行nohup命令。
- linux中的0表示标准输入,1表示标准输出,2表示标准错误输出。
- > 表示覆盖式重定向。正常输出是把内容输出到显示器上,重定向是把内容输出到文件中。 command > xxx.txt,将输出重定向到xxx文件中。
- >> 表示追加式重定向。command >> xxx.log,将输出重定向追加到xxx.log文件中。
- 2 > &1 ,2是标准错误输出,1是标准输出,这里的&表示引用的意思,对标准输出的引用。所以这个命令就表示将标准错误输出也重定向到标准输出指向的文件中。
前台实时查看nohub.out文件内容:
tail -f nohup.out
根据关键字查看
tail -f nohup.out |grep "关键字"
输出文件最后100行
tail -n 100 nohup.out
输出文件最后100行,含关键字
tail -n 100 nohup.out |grep "关键字"