天天看点

Linux 运行、查看、关闭后台程序的命令速查菜单详解1. &2. nohup3. ctrl+z4. bg5. fg6. jobs7. ps8. kill

之前写了一篇爬取Bing首页的爬虫,每天都需要运行爬取,这马上要回家过年了,电脑又不是每天都开着了,于是乎想着在云服务器上运行python程序,这是之前写的在Centos7云服务器中下载并安装的Anaconda3 Python,现在就想着怎么让程序挂在后台运行了,好记性不如烂笔头,找资料总结记录一下。

速查菜单

命令 说明
& 将当前命令以后台的形式运行
nohup 隔离终端挂断信号,是命令的前缀
ctrl+z 将前台任务转后台并冻结
bg 将后台冻结的任务再次运行起来
fg 将后台任务重新转前台执行
jobs 查看在后台运行的任务列表
ps 查看正在运行的进程信息
kill 杀掉某个进程

详解

假设现在有一个名为main.py的python程序,且该程序的权限为可执行的

1. &

后台运行,但关闭窗口后,也会终止运行程序

2. nohup

在1.的基础上,在命令的前面加上nohup,可实现不挂断的运行

这里出现了下面这个提示,不用管它,直接敲回车
#nohup:忽略输入并将stderr重定向到stdout
nohup: ignoring input and redirecting stderr to stdout
           

3. ctrl+z

将前台的程序转入后台并暂停运行

4. bg

将后台冻结的任务再次运行起来

注意:这里的id是通过jobs命令查看得到的

5. fg

将后台进程转至前台运行

注意:这里的id是通过jobs命令查看得到的

6. jobs

查看当前终端后台运行的任务,直接输入命令就行

7. 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和&