后台运行命令
如何后台运行python程序。
关键的命令:nohup
只需要输入下面的命令就可以在后台一直执行python程序啦
nohup python -u test.py > test.log 2>&1 &
这条命令的意思是,执行test.py程序,并把程序中执行的情况记录到test.log文件中,包括程序异常、程序中打印的信息等。
-u选项表示每多一条信息就实时输出到log.out中,而不是全部输出完毕再输出
&符号表示在后台执行,运行时可以查看日志或者运行
PS: 也可以把上述命令写成nohup python -u test.py > nohup.out 2>&1 &
唯一的区别就是把日志信息写到nohup.out文件中去了,两种做法都行。
输入后,回车。会打印出一个进程号。
查看进程
通过
ps -A
命令查看当前运行的所有进程。你就会发现刚才生成的进程号在列出的进程里面。
也可通过
ps -ef |grep python
查看所有后台Python运行程序
关闭后台运行
方法一:
通过
jobs
命令查看job号(假设为num),然后执行
kill %num
方法二:
通过
ps
命令查看job的进程号(PID,假设为pid),然后执行
kill pid
例子
在远程服务器端后台运行scrapy爬虫程序:
我们都知道,在本地运行scrapy程序只需要命令 scrapy crawal myspider
,那么在服务器端,如何运用上述后台运行python文件的方法来运行scrapy程序呢?
简单!再写一个python文件,如run.py,内容如下:
import os
if __name__ == '__main__':
os.system("scrapy crawl myspider")
然后执行:
nohup python -u run.py > run.log 2>&1 &
很显然了,就是在python文件中调用系统命令,运行scrapy crawl myspider
这条命令啦。通过后台运行这个run.py文件,来执行scrapy crawl myspider
这条命令,从而达到后台运行scrapy爬虫程序的目的。