之前写了一篇爬取Bing首页的爬虫,每天都需要运行爬取,这马上要回家过年了,电脑又不是每天都开着了,于是乎想着在云服务器上运行python程序,这是之前写的在Centos7云服务器中下载并安装的Anaconda3 Python,现在就想着怎么让程序挂在后台运行了,好记性不如烂笔头,找资料总结记录一下。
速查菜单
命令 | 说明 |
---|---|
& | 将当前命令以后台的形式运行 |
nohup | 隔离终端挂断信号,是命令的前缀 |
ctrl+z | 将前台任务转后台并冻结 |
bg | 将后台冻结的任务再次运行起来 |
fg | 将后台任务重新转前台执行 |
jobs | 查看在后台运行的任务列表 |
ps | 查看正在运行的进程信息 |
kill | 杀掉某个进程 |
详解
假设现在有一个名为main.py的python程序,且该程序的权限为可执行的
1. &
后台运行,但关闭窗口后,也会终止运行程序
python main.py &
2. nohup
在1.的基础上,在命令的前面加上nohup,可实现不挂断的运行
nohup python main.py &
这里出现了下面这个提示,不用管它,直接敲回车
#nohup:忽略输入并将stderr重定向到stdout
nohup: ignoring input and redirecting stderr to stdout
3. ctrl+z
将前台的程序转入后台并暂停运行
4. bg
将后台冻结的任务再次运行起来
注意:这里的id是通过jobs命令查看得到的
bg id
5. fg
将后台进程转至前台运行
注意:这里的id是通过jobs命令查看得到的
fg id
6. jobs
查看当前终端后台运行的任务,直接输入命令就行
jobs
7. ps
查看当前的进程,直接输入命令就行
ps
与jobs的区别:jobs只能查看当前终端里的进程,ps可以查看其他终端中的进程,ps有以下参数
ps -aux|grep “text.sh” a:(all)显示所有进程 u :以用户为主的格式 x : 所有的进程不以终端区分
常使用以下这种格式,解释说明:e:表示列出所有进程,f:表示输出完整格式,grep hzqtest:表示过滤筛选“python”关键字。
ps -ef |grep python
8. kill
先用jobs查看进程,获得它的jobsID,注意在那个%是需要的
kill -9 %jobsID
先用ps查看进程,获得它的PID
kill -9 PID
非常感谢以下博文
参考博文:
在linux后台运行脚本命令和程序的方法大全
Linux 下后台运行程序,查看和关闭后台运行程序
Linux前后台运行命令及切换
Linux下程序后台运行:nohup和&