一定的速度追踪
后台运行
屏蔽一切log
cd tplinker1 && nohup python3 train.py >/dev/null 2>&1 &
默认输出到nohup.out
cd tplinker1 && nohup python3 train.py 2>&1 &
输出到指定log
cd tplinker1 && nohup python3 train.py > myout.log 2>&1 &
实时追踪
tail -f nohup.out
后台运行
屏蔽一切log
cd tplinker1 && nohup python3 -u train.py >/dev/null 2>&1 &
默认输出到nohup.out
cd tplinker1 && nohup python3 -u train.py 2>&1 &
输出到指定log
cd tplinker1 && nohup python3 -u train.py > myout.log 2>&1 &
实时追踪
tail -f nohup.out
实时追踪 -u打印到缓存
一
打开两个terminal窗口,一个使用tail -f a.log ,另外一个vi a.log,发现第一个窗口失效,不会动态的显示数据了,这是因为vi打开一个文件修改文件时,是重新创建了一个文件,所以tail 使用的a.log失效了
linux 中的 tail 命令用途是按照要求将指定的文件的最后部分输出到标准设备,一般是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,如果该档案有更新,tail 会自动刷新,确保你看到最新的档案内容。
二
通过以下命令后台运行程序
nohup python test.py &
生成了nohup.out文件,输入
tail -f nohup.out
打开nohup.out文件一直不显示内容且不更新,不是说好了可以持续的查看nohup.out的输出,达到监视程序的效果吗?
研究了解到Python的print输出默认写入stdout缓冲,总量达到4k后才会全部打印出来。Pycharm中屏蔽了这种缓冲,所以在Pycharm中调试时并不会发现这样的问题。
解决方案:使用-u 参数,python不启用缓冲,就可以立刻获取输出了。
nohup python -u test.py &
解决方案二:
听说在某些情况下即使使用了-u参数也无效,在print函数中增加flush=True:
print(‘right’, flush=True)
要改的地方太多,没试过
三
之前在学习Linux的时候,发现有个命令tail,这个命令可以让我们查看文件末尾的数据,比如可以在查看大文件的时候使用。
比如操作一个10万行的文档的时候,可以使用:
tail hello.txt
1
上面的指令表示查看hello.txt文档的最后10行。也可以使用参数指定查看多少,如:
tail -n 20 hello.txt
1
上面的指令表示查看hello.txt文档的最后10行。