ubuntu Linux怎么解决僵尸进程?

ubuntu Linux怎么解决僵尸进程?,第1张

僵尸进程的产生是因为父进程没有 wait() 子进程。所以如果我们自己写程序好前的话一定要在父进程中通过 wait() 来避免僵尸进程的产生。

系统中出现了僵尸进程时,我们是无法通过 kill 命令把它清旦袜塌除掉的。模圆但是我们可以杀死它的父进程,让它变成孤儿进程,并进一步被系统中管理孤儿进程的进程收养并清理。

方法/步骤

要关闭进程,我们首先要打开类似于windows系统下面的“任务管理器”程序,在Ubuntu系统下“任务管理器”叫做“系指局统监视器”,他们的功能基本类似,不过Ubuntu下面的“系统监视器”比windows的任务管理器功能更强大。

有两种方法可以打开“系统监视器”,下面我们分别说明

打开系统监视器方法一

依次点击“system”--->“Administration”----->“System Monitor”,如下图所示:

打开系统监视器方法二

对于喜欢命令的朋友来说,可以用下面的命令打开系统监视器,打开终端命令窗口,然后输入以下命令执行:

gnome-system-monitor

系统监视器打开后如下图所示,默认的页面我们可以看到关于系统的配置情况

我们点击“Processes”,进入到进程列表界面,现在感觉到和windows下的任务管理器很相似缺模吧。

下面我们就进入我们的正题,结束进程,一般结束之前自己一定要对这个进程有所了解,知道它具体的功能作用,不然结束后,可能会引起系统的不稳定甚至死机。

因为我这个电脑上面没有蓝牙模块,但是进程伏逗缓里面有提供蓝牙模块的服务功能,所以我们就以这个进程为例来作为我们结束的对象,我们选择这个进程bluetooth-applet,如下图所示:

在bluetooth-applet进程上面点鼠标右键,之后会d出如下关于对进程 *** 作的一些菜单,我们这里要彻底的结束bluetooth-applet进程,所以我们选择“kill process”

选择并点击“kill process”后,会d出结束进程的确认提示框,如下图所示,我们选择选择“kill process”就可以结束bluetooth-applet进程了。

结束bluetooth-applet进程后,我们再看进程列表里面已经没有bluetooth-applet进程了, *** 作非常简单,也和windows系统下面结束进程的方法类似 -_-

这里所需要的python依赖项相对较少,只需要安装下schedule即可(这个包很小散猜扮,无需镜像也会很快装完),这个是定时任务时会用到的,直接在运行的python环境下执行以下命令:

pip install schedule

1

1

二、重启任务

这一部分我们将贴出代码,大致逻辑是先检测到我们要重启的程序id,然后kill掉之后,进行重新启动,代码如下兆带:

import os,sys,schedule

import subprocess,time

def restart_frp():

child =subprocess.Popen(["pgrep","-f","xxx"],stdout=subprocess.PIPE,)

pid=child.stdout.read().decode("utf-8").strip()

#print(pid)

if pid!="":

os.system("kill -9 "+pid)

child2=subprocess.Popen("xxx",stdout=subprocess.PIPE,shell=True)

print(time.strftime("%Y-%m-%d %H:%M",time.localtime()))

if __name__ == '__main__':

restart_frp()

schedule.every().hour.do(restart_frp)

while True:

schedule.run_pending()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

其中的xxx均为你要 *** 作的程序名称

三、bug记录

自己在运行中若遇到如下错误:冲灶在这里插入图片描述

则执行如下 *** 作:

第一步,执行命令

ls -l /bin/sh

1

1

若显示结果为:/bin/sh ->dash,那就执行第二步:

sudo dpkg-reconfigure dash (出现窗口选择no)

1

1

第三步,再次执行命令:

ls -l /bin/sh

1

1

显示为 /bin/sh ->bash后,重新运行程


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12332995.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存