服务器后台自动运行程序和停止

后台运行命令

如何后台运行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爬虫程序的目的。

你可能感兴趣的:(爬虫)