linux后台运行代码并追踪日志

291 篇文章 2 订阅
177 篇文章 4 订阅

一定的速度追踪

后台运行
屏蔽一切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行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值