美文网首页
使用nohup在后台执行python程序时需要增加-u选项才能马

使用nohup在后台执行python程序时需要增加-u选项才能马

作者: 苍蝇的梦 | 来源:发表于2019-06-23 11:41 被阅读0次

    2019-06-12 遇到的一点小问题
    用python3写了个爬虫程序,需要在后台运行,所以使用nohup命令执行。

    [root@archlinux ~]# nohup python3 wannoo.py &
    [1] 22617
    [root@archlinux ~]# nohup: ignoring input and appending output to 'nohup.out'
    

    因为控制台返回的数据只有PIDnohup: ignoring input and appending output to ‘nohup.out’,不确定python程序是否有正常开启,打算去查看当前目录下的nohup.out文件,看一下输出,但是竟然没有找到。
    使用ps命令看了一下,还有在运行。

    [root@archlinux ~]# ps -aux | grep python | grep -v grep
    root     22617  0.5  0.0   9792  7052 pts/0    S    01:27   0:00 python3 wannoo.py
    

    使用kill命令杀掉进程,再查看文件夹就能看到nohup.out文件了,也看到了print()输出。
    不确定是不是nohup.out文件的原因,把输出重定向再试一下:

    [root@archlinux ~]# nohup python3 wannoo.py > wannoo.log 2>&1 &
    [1] 22618
    

    有在目录里看到了wannoo.log文件,使用tail -n 10 wannoo.log命令查看文件最后10行,结果只看到一句nohup: ignoring input。刷了几次,还是一样的结果。想起tail命令里面有个-f选项,如果文件有增长,可以马上在控制台看到。所以又用tail -f wannoo.log等了很久,结果还是一样。
    网上找了下,才知道原来python3命令有个-u选项Force the stdout and stderr streams to be unbuffered. This option has no effect on the stdin stream.,能够无缓冲地输出信息。

    [root@archlinux ~]# nohup python3 -u wannoo.py > wannoo.log 2>&1 &
    [1] 22618
    

    重新试了,可以马上看到输出信息了。


    Python3.7.1

    测试过程中有使用jobs命令来查看后台任务,使用fg命令将任务移动到前台,使用Ctrl+C停止任务;或者使用Ctrl+Z暂停任务,然后使用bg将任务移动到后台。顺便记录一下。

    相关文章

      网友评论

          本文标题:使用nohup在后台执行python程序时需要增加-u选项才能马

          本文链接:https://www.haomeiwen.com/subject/nntjfctx.html