欢迎大家关注笔者,你的关注是我持续更博的最大动力
原创文章,转载告知,盗版必究
Linux在后台运行python程序、脚本程序、可执行程序等,关闭终端仍可保持程序运行
文章目录:1 为什么需要后台运行程序,场景分析2 前台运行命令 / 程序2.1 `运行前台命令 / 程序`2.2 `终止前台命令 / 程序`2.2.1 `按 Ctrl+C 终止前台命令`2.2.2 查看`前台运行命令的PID`,然后用`kill直接杀死进程`3 后台运行命令 / 程序3.1 nohup和&结合,在后台运行命令3.2 使用jobs命令查看后台运行的命令 / 程序3.3 终止后台运行的命令 / 程序4 前台与后台命令的切与控制4.1 fg命令:后台命令调至前台继续运行4.2 Ctrl + z 命令:将一个正在前台执行的命令放到后台,并且处于暂停状态4.3 bg命令:将一个在后台暂停的命令,变成在后台继续执行
1 为什么需要后台运行程序,场景分析
你是否遇到:在用ssh或其他远程连接工具连接服务器
,在终端中运行一些程序
,然后程序执行期间连接断开。执行时间短的还好,如果时间比较长就比较惨了,还要从头再来!
如下,是我执行的训练,训练了十几个小时,训练一般终端连接断开:
在讲后台运行命令,我们先来说一下前台运行的命令!
2 前台运行命令 / 程序
前台运行命令:
就是把命令直接放在
终端上执行`
2.1运行前台命令 / 程序
示例:在前台执行 test.py脚本
import timewith open('test.txt', 'w') as f:for i in range(100):print("开始写入数据{}".format(i))f.write("写入数据{}\n".format(i))time.sleep(1)
2.2终止前台命令 / 程序
终止前台命令有两种方法:
按 Ctrl+C 终止前台命令
查看前台运行命令的PID
,然后用kill直接杀死进程
2.2.1按 Ctrl+C 终止前台命令
如上图,直接
按Ctrl + C
即可终止前台命令
2.2.2 查看前台运行命令的PID
,然后用kill直接杀死进程
1、使用如下命令查看运行的python命令
ps -aux | grep python
2、根据命令的进程PID,使用kill命令杀死该进程
kill -9 4678
3 后台运行命令 / 程序
后台运行命令 / 程序
,主要依赖两个命令:
nohup 命令
:不挂断运行命令& 命令
:加在一个命令的最后
,可以把这个命令放在后台执行
3.1 nohup和&结合,在后台运行命令
后台运行命令方式:
nohup command &
1、例如,我们把上面我们的python test.py 命令
放在后台运行
:
nohup python test.py &
此时即使关闭终端命令也会一直执行!
2、命令运行结果分析
1)将命令挂起后台运行
,会返回该命令的进程PID
,如我运行nohup python test.py &
返回该命令的进程号9974
2)按Ctrl + C
命令命令并没有终止,从下面使用ps -aux | grep python
可以看到该进程,说明该命令已经放到后台运行了
3)但是在使用cat test.txt
里面并没有写入任何内容,猜测可能只是先写入缓存,等程序后台执行完毕之后,内容就会写入到test.txt中
3.2 使用jobs命令查看后台运行的命令 / 程序
查看后台运行的命令 / 程序
,使用jobs命令
jobs
jobs -l
选项可以多显示一个PID信息。
显示信息说明:
第一列:任务序号
(可以用来杀死后台运行命令),注意并不是PID第二列:+ 号表示当前顶部任务,- 号其次任务,没符号是其他任务第三列:PID
(可以用来杀死后台运行命令)(上面例子中,默认情况下没有PID)第四列:状态
,四种(运行中
,已停止
,已完成
,已杀死
)第五列:任务名称
(即刚才运行的命令
)
注意:
jobs只能查看当前终端运行的后台命令
,如果在另外一个终端下是看不到该终端开启的后台命令
的,如上图。
3.3 终止后台运行的命令 / 程序
nohup python test.py &
执行后返回两个值:
[1] 13818
[1]
:可以理解为后台运行命令的ID13818
:为后台运行命令的进程PID
终止命令也有两种方式:
1、使用kill命令
和后台运行命令的ID
kill %1
2、使用kill命令
和后台运行命令的进程PID
kill 13818
或kill %13818
4 前台与后台命令的切与控制
4.1 fg命令:后台命令调至前台继续运行
功能:
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以先用jobs
查看jobnun,然后用fg %jobnum
将选中的命令调出。
4.2 Ctrl + z 命令:将一个正在前台执行的命令放到后台,并且处于暂停状态
功能:
将一个正在前台执行的命令放到后台,并且处于暂停状态
4.3 bg命令:将一个在后台暂停的命令,变成在后台继续执行
功能:
将一个在后台暂停的命令,变成在后台继续执行
如果后台中有多个命令,可以先用jobs
查看jobnum,然后用bg %jobnum
将选中的命令调出继续执行。
参考1:/davidhzq/article/details/102766881
参考2:/u013846293/article/details/74003051
参考3:/zxh2075/article/details/52932885
参考4:/liuyanfeier/article/details/62422742
♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠
如果觉得《Linux在后台运行python程序 脚本程序 可执行程序等 关闭终端仍可保持程序运行》对你有帮助,请点赞、收藏,并留下你的观点哦!