nohup日志丢失恢复

当程序在使用nohup方式后台运行时:

pwd
/home/user/projects/project_name

nohup /home/user/miniconda3/envs/env_name/bin/python main.py --cfg src/config/c.yaml  > run_log/0.log 2>run_log/0_error.log &

删除了nohup的日志文件0.log,发现此时并不会生成新的文件0.log,这也就导致不管是之前还是之后的日志都看不到。

可以使用ps命令查看pid

ps -aux |grep main.py
user    2620483  102  3.5 148600376 2324324 ?   Rl   8月19 2217:51 /home/user/miniconda3/envs/env_name/bin/python main.py --cfg src/config/c.yaml 

得到pid2620483,然后在/proc目录下查看对应该pid的相关文件,这里只需要关注fd文件夹:

ls -l /proc/2620483/fd
lr-x------ 1 user user 64 821 10:51 0 -> /dev/null
l-wx------ 1 user user 64 821 10:51 1 -> '/home/user/projects/project_name/run_log/0.log (deleted)'
lrwx------ 1 user user 64 821 10:51 10 -> /dev/nvidia0
...

可以看到1文件软链接到被删除的0.log文件上,我们查看cat /proc/2620483/fd/1就行了。
只要程序没有停止,这个文件是实时更新的,你可以复制该文件到其他地方,如果程序一旦停止,对应该进程的整个文件夹/proc/2620483都会被系统删除。

关于/proc文件:

/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。可以使用的文件随系统配置的变化而变化。命令procinfo能够显示基于其中某些文件的多种系统信息。以下详细描述/proc下的文件。

/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过 proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是 动态从系统内核读出所需信息并提交的。

参考

一次线上nohup.out日志丢失的问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值