2019-06-12 遇到的一点小问题
用python3写了个爬虫程序,需要在后台运行,所以使用nohup命令执行。
[root@archlinux ~]# nohup python3 wannoo.py &
[1] 22617
[root@archlinux ~]# nohup: ignoring input and appending output to 'nohup.out'
因为控制台返回的数据只有PID和nohup: 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
将任务移动到后台。顺便记录一下。
网友评论