服务器后台运行py脚本及如何查看及结束进程

在服务器上,为了退出终端,程序依然能够运行。如当我们在服务器上运行某一个脚本的时候,若是所需时间很长,我们就会希望人去睡觉,断开shell后,程序还可以继续在服务器后台运行,(我好像一个资本家哈哈),这个时候就要对命令做出些调整啦。

在一顿搜索下,找到如下方法:

(以下操作都是基于进入.py脚本所在文件夹后进行)

一、运行关键词:nohup和&

基础命令:该命令是运行目标脚本的基本命令,在断开连接后会停止运行

python download.py

可后台运行的命令:

nohup python -u download.py > test.log 2>&1 &

nohup    即no hang up,不要挂断

-u   代表程序不启用缓存,也就是把输出直接放到log中,没这个参数,log文件的生成会有延迟

python -u download.py   运行目标download脚本,且把输出直接放到log中

> test.log     命令启动后会在当前目录下自动生成一个名为test的.txt文件,将输出日志(即.py脚本运行中所产生的输出)保存到这个log中,便于查看运行过程与结果,如下图所示

2>1    2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
2>&1   换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.

&    最后一个& ,代表该命令在后台执行

(.py的结果存放位置还是会和基础命令相同,就比如我的download文件会把结果放在.py同目录文件夹下,后台运行后也是如此,test.log存放的只是原来会在控制面板显示的脚本print内容)

bear总结:

nohup代表不挂断,&表示后台运行,二者结合,就是.py脚本不会再断开shell后挂断,且会在后台继续运行

(若是服务器出现了问题,比如重启了或者坏了啥的,那就没办法了)

二、查看及结束进程

上述程序后太运行命令执行后会在终端显示进程序号,如下图所示:

查看及结束后台进程时依靠进程序号来是实现的,一个服务器会同时挂机多个程序,则需要查询全部的进程序号及后续操作

利用ps命令查看后台所有py运行程序的序号:

ps -ef |grep python 

结果如下图所示

找到对应的进程序号,结束(杀死)想要结束的进程

kill -9 进程序号

 利用tail命令查看日志内容,原本输入到test.log的内容就又被显示到屏幕上了(Ctrl+c可结束显示)

tail -f test.out

猜你喜欢

转载自blog.csdn.net/LHgwei/article/details/127837745