zl程序教程

您现在的位置是:首页 >  工具

当前栏目

解决nohup中不写入日志的问题

日志 解决 写入 nohup 问题
2023-09-14 08:59:05 时间

(一)问题描述:

nohup 你的程序命令

如:

nohup python manage.py runserver 0.0.0.0:6789   (此shell窗口1不要关,另外开一个shell窗口2查看nohup.out)

可以将你的程序放到后台运行,不至于关闭shell窗口后,程序终止。

但是此时的nohup.out中却没有记录任何shell窗口的输出日志。

这是怎么回事呢???

 

(二)分析:

通过反复试验,我发现。

日志不是不往nohup.out文件中写,而是日志信息会被先存到Linux的缓存中去,等到缓存中的数据达到一定量后,才会写到nohup.out中去。

不信,你把nohup python manage.py runserver 0.0.0.0:6789 程序所在shell窗口1用ctrl+c来终止它,你回头再到shell窗口2中看看nohup.out,是不是有日志信息了。

ps:不要用kill杀程序,不然看不到从缓存中写入nohup.out中的日志信息。

那么,解决nohup.out中没有日志写入,或者写入不及时(实时)的方法就是,杜绝缓存机制。

 

(三)解决方案:

shell窗口1中:

export PYTHONUNBUFFERED=1

nohup python manage.py runserver 0.0.0.0:6789   

ps:忽略如下错误提示:

nohup: ignoring input and appending output to ‘nohup.out’

 

shell窗口2中:

此时你再查看nohup.out,是不是有日志实时写入了!!!

参考:https://blog.csdn.net/epeaktop/article/details/82665481

ps:以上操作在centos7上进行的,其他版本不知道有没有差异,如有不同,请留言,如有用,请点赞推荐,多谢。