linux上怎么把python程序丢到后台执行?

2025-10-07 12:16:20

1、首先我们来写一小段小脚本,内容如下所示:

#!/usr/bin/env python

import time

with open('./test.log', 'w+') as tf:

    i = 0

    while True:

        i = i + 1

        time.sleep(1)

        print(i, file=tf, flush=True)

这段脚本的内容就是,每个1s输出一个值到test.log这个文件中去。如果这个程序在后台被终结,那么test.log这个日志文件中就看不到对应的值了。

linux上怎么把python程序丢到后台执行?

2、首先我们来看第一种方式,使用linux的后台命令&,执行方式如下所示:

python test.py &

执行结果如下所示,可以看到它生成了一个后台pid值,如下面图中所示,然后我们用ps命令查看一下,可以看到后台确实有这个进程。

linux上怎么把python程序丢到后台执行?

3、然后我们来看一下日志输出文件,命令是:

ls test.*

可以看到目录下面确实生成了test.log这个日志文件,再用tail -f命令看一下日志输出,可以看到值确实一直在增加。如下面图中所示:

linux上怎么把python程序丢到后台执行?

4、下面我们再来看第二种方式,使用nohup命令来执行。

使用nohup执行之前,现有kill命令将后台的test.py命令终结。命令格式是:

kill -9 pid

执行结果如下面第一张图中所示,然后使用nohup命令启动test.py程序,命令格式是:

nohup python test.py &

执行结果如下所示,同样的,也是生成一个后台进程,通过进程编号可以看到对应的进程,然后通过tail -f命令也可以看到test.log里的数值是在递增的,说明程序在后台运行正常。

linux上怎么把python程序丢到后台执行?

linux上怎么把python程序丢到后台执行?

1、上面两种方式都是通过linux系统自带的命令来执行的,但是我们还可以通过python自己的模块来执行,这个模块就是daemon,首先我们来安装这个模块,命令是

pip install daemon

这个模块比较小,安装的也比较快。如下所示:

linux上怎么把python程序丢到后台执行?

2、安装完成后,我们需要将我们的测试脚本稍微修改一下,修改后的内容如下:

#!/usr/bin/env python

import time

from daemon import DaemonContext

with open('./test.log', 'w+') as tf:

    def test():

        i = 0

        while True:

            i = i + 1

            time.sleep(1)

            print(i, file=tf, flush=True)

    with DaemonContext(files_preserve=[tf]):

        test()

将原来的测试功能改成一个叫做test的函数,然后在daemon的模块里调用这个函数,这里如果要想将测试日志写入文件的把,必须先打开文件句柄,然后把文件句柄通过files_preserve参数传递给DaemonContext,否则,不会把结果输出到任何文件。

linux上怎么把python程序丢到后台执行?

3、这个时候就简单了,直接执行命令

python test.py

然后就自动把test.py这个程序丢到后台去执行了,如下所示,然后使用tail -f命令查看,可以看到数据在递增。说明这个方法也是有效的。

linux上怎么把python程序丢到后台执行?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢