首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在我的python脚本关闭并重启后恢复子进程?

在Python脚本中关闭并重启后恢复子进程可以通过使用multiprocessing模块来实现。multiprocessing模块提供了创建和管理子进程的功能。

首先,我们需要导入multiprocessing模块,并创建一个子进程对象。然后,我们可以使用start()方法启动子进程。

代码语言:txt
复制
import multiprocessing

def child_process():
    # 子进程的逻辑代码
    print("子进程启动")

if __name__ == '__main__':
    # 创建子进程对象
    p = multiprocessing.Process(target=child_process)
    # 启动子进程
    p.start()

接下来,我们可以使用terminate()方法关闭子进程。这个方法会发送一个终止信号给子进程,使其立即停止运行。

代码语言:txt
复制
p.terminate()

如果我们希望在关闭子进程后重新启动它,可以使用join()方法等待子进程结束,并使用start()方法重新启动子进程。

代码语言:txt
复制
p.join()
p.start()

完整的代码如下:

代码语言:txt
复制
import multiprocessing
import time

def child_process():
    # 子进程的逻辑代码
    print("子进程启动")
    while True:
        print("子进程运行中...")
        time.sleep(1)

if __name__ == '__main__':
    # 创建子进程对象
    p = multiprocessing.Process(target=child_process)
    # 启动子进程
    p.start()

    # 等待子进程运行一段时间
    time.sleep(5)

    # 关闭子进程
    p.terminate()
    # 等待子进程结束
    p.join()

    # 重新启动子进程
    p.start()

这样,当我们关闭并重启Python脚本时,子进程会被恢复并继续运行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DevOps: 进程管理工具 supervisor简介

一、简介 Supervisor是用Python 开发一个client/server服务,是 Linux /Unix系统下一个进程管理工具,不支持Windows系统。...它可以很方便监听、启动、停止、重启一个或多个进程。...用Supervisor管理进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便做到进程自动恢复功能,不再需要自己写shell脚本来控制。...二、安装部署配置 1、安装 Supervisort是基于python开发,需要检测系统是否具有python2.4以上版本。一般centos7系统都是基于python2.7以上了。...,标准输出到对应设置日志文件中 3、测试终止进程 通过以上操作,可以看到supervisor可以进行进程管理,当托管进程意外关闭,也会重启托管进程

11010

自动化测试之进程管理

在之前一篇文章《终端自动化测试探索之路》中提到过当发生断电等情况,服务器重启之后如何快速恢复自动化服务,这里针对这个问题具体讲讲实现方式。...方案选型 基于上述原因,考虑采用supervisor来管理这些进程,supervisor是一个UNIX-like系统上进程管理工具,是一个由Python开发c/s系统,可以管理和监控unix上面的进程...当这个进程挂掉时候,linux是不会自动重启,想要自动重启的话,我们还要自己写一个监控重启脚本,而supervisor则可以完美的解决这些问题。...被管理进程作为supervisor进程,当进程挂掉时候,父进程可以准确获取进程挂掉信息,所以当然也就可以对挂掉进程进行自动重启操作,当然重启还是不重启,还要看你配置文件里面有没有设置autostart...3、进程组 supervisor可以对进程组进行统一管理,也就是说我们可以把需要管理进程写到一个组里面,然后把这个组作为一个对象进行管理,启动、停止、重启等操作。

32920

pm2:在生产环境中运行 nodejs 应用

另外,pm2 stop all 会关闭所有应用进程。 restart、reload、delete 也相同。...重启应用 pm2 restart 重载应用 pm2 reload restart 和 reload 区别是: restart 会同时杀死和重启所有相关进程...reload 的话则是一个个销毁和重启进程,保证至少一个进程可用,做到 零停机部署(Zero downtime deployments)。...是的,你也可以换成 /usr/bin/python 执行 python 脚本; env:对象,注入环境变量; instances:实例数量; out_file:普通日志输出文件 error_file:错误日志输出文件...max_memory_restart:内存达到指定大小重启服务,处理内存溢出情况; 更具体请看官方文档: https://pm2.keymetrics.io/docs/usage/application-declaration

1K30

supervisor添加进程_monitor进程

supervisor是用Python开发一个client/server服务,是Linux/Unix系统下一个进程管理工具。可以很方便监听、启动、停止、重启一个或多个进程。...用supervisor管理进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便做到进程自动恢复功能,不再需要自己写shell脚本来控制。 1....startsecs=10 ; 启动10秒没有异常退出,就表示进程正常启动了,默认为1秒 autorestart=true ; 程序退出自动重启,可选值:[unexpected...,是否向这个进程组发送stop信号,包括进程 killasgroup=false ;默认为false,向进程组发送kill信号,包括进程 ;包含其它配置文件 [include] files...3、启动不见报错,什么报错也看不到,supervisor已经启动但是我们要启动进程也没有启动 查看配置文件里 stdout_logfile 配置,自行创建文件指定日志路径到文件

46610

Redis持久化机制详解

如果持久化方案做很好,即使Redis宕机,也可以快速重启恢复数据,重新回到可用状态。 二....进程尝试将数据dump到一个临时rdb文件中。 rdb快照文件生成,用新文件替换旧dump.rdb。 一些细节 每个Redis进程,同一时刻只会存在一个dump.rdb文件。...auto-aof-rewrite-min-size 64mb rewrite 执行流程 Redis fork进程 进程基于当前Redis内存中数据,构建日志,创建一个新临时AOF文件执行写入操作...Redis主进程会继续接收客户端写请求,将日志写入内存,同时也会写入旧AOF文件。 进程写完新AOF文件,主进程会将这段时间内内存中生成新日志追加到新AOF文件中。...如果是redis进程所在机器挂掉,那么重启机器,尝试重启redis进程,直接基于AOF日志文件进行数据恢复。如果AOF文件有破损,可以通过redis-check-aof脚本进行修复。

38730

2024年3月份最新大厂运维面试题集锦(运维15-20k)

内核初始化启动init进程。 init进程根据配置(SysVinit/etc/inittab,systemdsystemd目标或Upstart作业)启动服务。 最终用户登录系统。 22....在脚本中检查使用可用命令和工具版本。 使用条件语句处理不同环境中可能差异。 72. 解释什么是Shell以及如何在Shell脚本中创建它。...答案: Shell是当前Shell一个独立副本,它继承了父Shell环境(变量等),但任何在Shell中做出更改(变量赋值)不会影响父Shell。...如何在Shell脚本中实现并发和并行执行? 答案: 在Shell脚本中,可以通过在命令添加&符号来实现并发执行。这会使命令在后台执行。使用wait命令可以等待所有后台进程完成。...解释如何在Shell脚本中处理文件和目录。 答案: Shell脚本提供了多种处理文件和目录命令,cp(复制)、mv(移动)、rm(删除)、mkdir(创建目录)等。

1K10

Supervisor使用详解

一、supervisor简介 Supervisor是用Python开发一套通用进程管理程序,能将一个普通命令行进程变为后台daemon,监控进程状态,异常退出时能自动重启。...也实现当进程挂掉时候,父进程可以准确获取进程挂掉信息,可以选择是否自己启动和报警。...startsecs=10 ; 启动10秒没有异常退出,就表示进程正常启动了,默认为1秒 autorestart=true ; 程序退出自动重启,可选值:[unexpected...任意定义一个和脚本相关项目名称选项组(/etc/supervisord.d/test.conf): #项目名 [program:blog] #脚本目录 directory=/opt/bin #脚本执行命令...,这个program不会自动重启,默认unexpected,设置进程挂掉自动重启情况,有三个选项,false,unexpected和true。

51620

Linux后台运行程序最实用两种方式

场景1:用xshell通过 telnet/ssh 远程登录服务器,跑脚本或执行一些耗时较长任务,有时会因为网络不稳定或手贱等原因断开控制终端(:xshell、sourceCRT)远程连接状态...场景2:需要长时间稳定脚本,希望能在Linux后台跑,关掉xshell也没事,且随时可以回来看输出信息或操作。   如果你曾被这类问题困扰过,或现在正为此发愁?那么请往下看。...我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有进程(包括sshd及其进程)。...相当于我们可以用xshell打开多个连接(session),不用时可以将这些连接置为离线状态 - Detached,离线状态下session中程序会正常运行,也就是后台运行,随时可以恢复继续使用,恢复使用时为...bash 是 sshd 进程,当 ssh 断开连接时,HUP 信号自然会影响到它下面的所有进程(包括我们新建立 ping 进程),杀掉所有进程

3.1K21

Supervisor进程管理工具快速入门与使用

Supervisor是用Python开发一套通用进程管理程序,能将一个普通命令行进程变为后台daemon,监控进程状态,异常退出时能自动重启还能通过网页端进行控制; 官方网站:http://supervisord.org.../ 应用场景: 脚本需要通过后台进程运行且保证异常中断后重启服务, 原理: 它是通过fork/exec方式把这些被管理进程当作supervisor进程来启动,这样只要在supervisor配置文件中...,启动,停止,重启等等操作; 集中式管理: supervisor管理进程进程组信息,全部都写在一个ini格式文件,而且supervisor提供了一个web界面 有效性:当supervisor进程挂掉时候...=unexpected ;#设置进程挂掉自动重启情况,当程序exit时候,这个program不会自动重启,默认unexpected #有三个选项,false,unexpected和...[include] files = conf.d/*.ini 进程管理配置文件示例 任意定义一个和脚本相关项目名称选项组(/etc/supervisor/conf.d/test.conf):

87911

Supervisor | 笔记

startsecs=10 ; 启动10秒没有异常退出,就表示进程正常启动了,默认为1秒 autorestart=true ; 程序退出自动重启,可选值:[unexpected.../*.conf 进程配置文件说明 给需要管理进程(程序)编写一个配置文件,放在/etc/supervisor.d/目录下, 以.ini作为扩展名(每个进程配置文件都可以单独分拆也可以把相关脚本放一起...任意定义一个和脚本相关项目名称选项组( /etc/supervisord.d/test.conf ) # 项目名 [program:blog] # 脚本目录 directory=/opt/bin...# 脚本执行命令 command=/usr/bin/python /opt/bin/test.py # supervisor启动时候是否随着同时启动,默认True autostart=true #...当程序exit时候,这个program不会自动重启,默认unexpected,设置进程挂掉自动重启情况,有三个选项,false,unexpected和true。

1.1K20

Mac环境下使用supervisor

第二,当这个进程挂掉时候,linux不会自动重启,想要自动重启的话,我们还要自己写一个监控重启脚本,而supervisor则可以完美的解决这些问题。...那supervisor是如何实现进程管理并重启呢?其实supervisor管理进程,就是通过fork/exec方式把这些被管理进程,当作supervisor进程来启动。...第二,被管理进程作为supervisor进程,当进程挂掉时候,父进程可以准确获取进程挂掉信息,所以当然也就可以对挂掉进程进行自动重启操作,当然重启还是不重启,还要看你配置文件里面有木有设置...3,进程组 supervisor可以对进程组统一管理,也就是说咱们可以把需要管理进程写到一个组里面,然后我们把这个组作为一个对象进行管理,启动、停止、重启等等操作。...Supervisord:主进程,负责管理进程server,它会根据配置文件创建指定数量应用程序进程,管理进程整个生命周期,对crash进程重启,对进程变化发送事件通知等。

87230

【玩转Redis面试第3讲】一次性将Redis RDB持久化和AOF持久化讲透

(2)自动触发 自动触发对应bgsave命令,Redis进程执行fork操作创建进程,RDB持久化过程由进程负责,完成自动结束。阻塞只发生在fork阶段,一般时间很短。...bgsave工作机制 图片 (1)执行bgsave命令,Redis父进程判断当前是否存在正在执行进 程,RDB/AOF进程,如果存在,bgsave命令直接返回。...(4)进程创建RDB文件,根据父进程内存生成临时快照文件,完成对原有文件进行原子替换。...(3)加载AOF/RDB文件成功,Redis启动成功。 (4)AOF/RDB文件存在错误时,Redis启动失败打印错误信息。...RDB 在保存 RDB 文件时父进程唯一需要做就是 fork 出一个进程,接下来工作全部由进程来做,父进程不需要再做其他 IO 操作,所以 RDB 持久化方式可以最大化 Redis 性能。

708147

实验(十)任务管理、进程管理

解释运行脚本脚本名称加上 & 参数使程序在后台运行(而非采取默认前台运行方式): bash test.sh & 程序运行,每打印一个数字,都会暂停一秒。...例如, vi a.sh & 命令会启动vi程序,并在后台运行,通过 jobs 命令可以看到此任务处于挂起(suspend)状态: 图片 运行fg命令,带有+号任务会恢复到前台运行,恢复可以照常使用vi...解释运行脚本,按 Ctrl Z 中止(暂停)该进程放入后台,然后用job命令查看后台任务。 图片 使用fg命令将后台暂停任务恢复到前台运行。 再次按 Ctrl Z 中止该进程放入后台。...86,自己用命令时候要改成上一步看到PID 执行top命令,使其在后台运行,可以通过 jobs 命令看到多出了一条新任务记录,显然是top命令对应任务: 图片 使用 fg 命令恢复带“+”号...图片 (4)使用kill命令终止httpd一个进程(668号进程) kill 668 图片 (5)重启httpd进程(注意参数是阿拉伯数字1) kill -1 663 图片 (6)使用 killall

1.3K30

如何优雅在Windows上跑Shell脚本

前言 喜欢Shell脚本,格式方便阅读,方便调试。 在Windows上Bat脚本,相对没那么友好,至少对来说是这样,还有一个致命原因就是不方便调试……这点比较致命。...下面就谈谈经历: 起因 我们有一台边界 FTP,经常会异常中断,重启 FTP 即可; 为确保数据能有效传输,FTP 异常能及时恢复,所以这个计划就产生了; ---- 环境 Windows server...,每 10 分钟运行一次 ftp_check.sh 脚本; 记录相关日志到 ftp_check.log ; ---- 代码实现 首先去 Mobaxterm 官网下载最新版,拷贝到 Windows server...服务器中; 运行 Mobaxterm,开启一个会话-Shell,类型选择 Bash; 在新开会话中编写 shell 脚本 ---> ftp_check.sh 代码如下仅供参考; #!...和Windows换行符不一样导致) 万能 Mobaxterm,只要你敢想,它就能去完成,比如说运行 Python(需要单独下载 Python插件)

1.9K60

Linux系统初始化进程及文件(带命令)

init进程运行以后将陆续执行系统中其他程序,不断生成新进程,这些进程称为init进程进程,反过来说,init进程是这些进程进程,当然,这些进程也可以进一步生成各自进程,依次不断繁衍下去...stop(停止),终止指定系统服务程序,关闭相应功能, restart(重启),先退出,再重新运行指定系统服务程序。...重启操作了,命令如下 [root@localhont -]# init 0   /关闭当前系统 [root@localhoat -]# init 6   /重启当前系统 而运行级别0.6 又分别对应着...各自作用是什么? 如何控制开机自动运行系统服务,以减少资源占用、提高系统运行效率呢?...(根据主机实际功能需求) ---- 2.优化开机自动加载服务 Linux操作系统在每次开机后会进入默认ysterd运行目标(字符模式或图形模式),运行 该目标中默认设为启动各种系统服务,

34730

什么?终止一个容器竟然用了 10 秒钟,这不能忍!

作为一名系统重启工程师(SRE),你可能经常需要重启容器,毕竟 Kubernetes 优势就是快速弹性伸缩和故障恢复,遇到问题先重启容器再说,几秒钟即可恢复,实在不行再重启系统,这就是系统重启工程师杀手锏...有以下几种可能性: 容器中进程没有收到 SIGTERM[1] 信号。 容器中进程收到了信号,但忽略了。 容器中应用关闭时间确实就是这么长。...init 以守护进程方式存在,是所有其他进程祖先。 它主要负责: 启动守护进程 回收孤儿进程 将操作系统信号转发给进程 1....如果 PID 1 是 init 进程 - 那么 PID 1 会将 TERM 信号转发给进程,然后进程开始关闭,最后容器终止。...要想解决这个问题,就要往脚本中添加信号处理代码,让它捕获到 SIGTERM 信号时就终止进程: #!

97220

Redis持久化机制

1.2 数据库持久化策略 数据库不关心故障 而是在数据文件损坏从数据备份或快照中恢复 RDB 就是这种情况 数据库使用操作日志记录每个操作操作行为 以在失败通过日志恢复一致性。...设置 redis.conf 再使用脚本初始化 500w 数据,等待发现已经落盘: bgsave bgsave 可由 客户端显式触发 配置定时任务触发 当有主从架构时,从服务器向主服务器发送...进程提交完成,会立即给客户端返回响应,备份操作在后台异步执行,期间不会影响Redis正常响应。...保持高性能,因为Redis主进程只要fork一个进程,让进程执行RDB 启动效率高 相对于AOF,直接基于RDB文件重启恢复Redis进程,更加快速 2.6 RDB缺点 耗时 O(n) 写时复制...当父进程要更改其中某片数据时(执行一个写命令),os会将该片数据复制一份以保证进程数据不受影响,所以新 RDB 文件存储是执行 fork 一刻内存数据。 不可控 容易丢失数据。

43630

一文详细揭秘 Redis 持久化,了解一下?

对,数据都是缓存在内存中,当你重启系统或者关闭系统,缓存在内存中数据都会消失殆尽,再也找不回来了。所以,为了让数据能够长期保存,就要将 Redis 放在缓存中数据做持久化存储。...与AOF相比,在恢复数据集时候,RDB 方式会更快一些。 ? 当 Redis 需要保存 dump.rdb 文件时, 服务器执行以下操作: Redis 调用forks. 同时拥有父进程进程。...进程将数据集写入到一个临时 RDB 文件中。 当进程完成对新 RDB 文件写入时,Redis 用新 RDB 文件替换原来 RDB 文件,删除旧 RDB 文件。...分析对比两种方式做了测试,发现这是两种不同风格持久化方式,那么应该如何选择呢?...保存重启 Redis 服务,密码持久化即生效。

47520

supervisor简单使用

介绍 Supervisor 是用Python开发一套通用进程管理程序,是Linux/Unix系统下一个进程管理工具。可以很方便监听、启动、停止、重启一个或多个进程。...能将一个普通命令行进程变为后台daemon,监控进程状态,异常退出时能自动重启,用supervisor管理进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便做到进程自动恢复功能...=10 ; 启动10秒没有异常退出,就表示进程正常启动了,默认为1秒 autorestart=true ; 程序退出自动重启,可选值:[unexpected,true,false...,是否向这个进程组发送stop信号,包括进程 killasgroup=false ;默认为false,向进程组发送kill信号,包括进程 下面我们以nginx为例,来配置一下Nginx守护进程...restart nginx: 重启nginx supervisorctl update :配置文件修改可以使用该命令加载新配置 supervisorctl reload: 重新启动配置中所有程序

48620
领券