linux如何运行python脚本、不中断_荐Linux在后台运行python程序、脚本程序、可执行程序等,关闭终端仍可保持程序运行...

欢迎大家关注笔者,你的关注是我持续更博的最大动力

原创文章,转载告知,盗版必究

1 为什么需要后台运行程序,场景分析

你是否遇到:在用ssh或其他远程连接工具连接服务器,在终端中运行一些程序,然后程序执行期间连接断开。执行时间短的还好,如果时间比较长就比较惨了,还要从头再来!

如下,是我执行的训练,训练了十几个小时,训练一般终端连接断开:

c37088417f294665c3d25a1158ae4660.png

在讲后台运行命令,我们先来说一下前台运行的命令!

2 前台运行命令 / 程序

前台运行命令:就是把命令直接放在终端上执行`

2.1 运行前台命令 / 程序

示例:在前台执行 test.py脚本

import time

with open('test.txt', 'w') as f:

for i in range(100):

print("开始写入数据{}".format(i))

f.write("写入数据{}\n".format(i))

time.sleep(1)

244a91716cc9b4f4c9f83ce2de9f8e2a.png

2.2 终止前台命令 / 程序

终止前台命令有两种方法:

按 Ctrl+C 终止前台命令

查看前台运行命令的PID,然后用kill直接杀死进程

2.2.1 按 Ctrl+C 终止前台命令

如上图,直接按Ctrl + C即可终止前台命令

2590a9cce35bd9aca2183ba59b18dda0.png

2.2.2 查看前台运行命令的PID,然后用kill直接杀死进程

1、使用如下命令查看运行的python命令

ps -aux | grep python

5fff3fb71f8f5fc3d35332c9e3d0b802.png

2、根据命令的进程PID,使用kill命令杀死该进程

kill -9 4678

dff6454cc42a8138d432d84766055834.png

3 后台运行命令 / 程序

后台运行命令 / 程序,主要依赖两个命令:

nohup 命令 :不挂断运行命令

& 命令:加在一个命令的最后,可以把这个命令放在后台执行

3.1 nohup和&结合,在后台运行命令

后台运行命令方式:

nohup command &

1、例如,我们把上面我们的python test.py 命令放在后台运行:

nohup python test.py &

此时即使关闭终端命令也会一直执行!

2、命令运行结果分析

d043f4e5902f2ce8dfd27ae06420f07d.png

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

f41602d4356ba985a4be627f20a6c7d1.png

jobs -l选项可以多显示一个PID信息。

f433f5e49b841fa173f867b978117871.png

显示信息说明:

第一列:任务序号(可以用来杀死后台运行命令),注意并不是PID

第二列:+ 号表示当前顶部任务,- 号其次任务,没符号是其他任务

第三列:PID(可以用来杀死后台运行命令)(上面例子中,默认情况下没有PID)

第四列:状态,四种(运行中,已停止,已完成,已杀死)

第五列:任务名称(即刚才运行的命令)

注意:

jobs只能查看当前终端运行的后台命令,如果在另外一个终端下是看不到该终端开启的后台命令的,如上图。

3.3 终止后台运行的命令 / 程序

nohup python test.py &执行后返回两个值:

[1] 13818

[1] :可以理解为后台运行命令的ID

13818:为后台运行命令的进程PID

4d06953ca8121548daada371d9cd640d.png

终止命令也有两种方式:

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:https://blog.csdn.net/davidhzq/article/details/102766881

参考2:https://blog.csdn.net/u013846293/article/details/74003051

参考3:https://blog.csdn.net/zxh2075/article/details/52932885

参考4:https://blog.csdn.net/liuyanfeier/article/details/62422742

10a678de1bc2f9902788ea0210edd1b8.gif

466edd62d88261df85666896d589352e.gif

♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

原文链接:https://blog.csdn.net/weixin_41010198/article/details/107232117

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值