用python杀死进程

我需要制作一个从用户获取以下内容的脚本:

1)进程名称(在Linux上)。

2)此进程写入的日志文件名。

它需要终止该进程并确认该进程已关闭。将日志文件名更改为带有时间和日期的新文件名。然后再次运行该过程,确认它已启动,以便继续写入日志文件。

先谢谢您的帮助。

回答:

您可以使用以下pgrep命令检索给定名称的进程ID(PID):

import subprocess

import signal

import os

from datetime import datetime as dt

process_name = sys.argv[1]

log_file_name = sys.argv[2]

proc = subprocess.Popen(["pgrep", process_name], stdout=subprocess.PIPE)

# Kill process.

for pid in proc.stdout:

os.kill(int(pid), signal.SIGTERM)

# Check if the process that we killed is alive.

try:

os.kill(int(pid), 0)

raise Exception("""wasn't able to kill the process

HINT:use signal.SIGKILL or signal.SIGABORT""")

except OSError as ex:

continue

# Save old logging file and create a new one.

os.system("cp {0} '{0}-dup-{1}'".format(log_file_name, dt.now()))

# Empty the logging file.

with open(log_file_name, "w") as f:

pass

# Run the process again.

os.sytsem("<command to run the process>")

# you can use os.exec* if you want to replace this process with the new one which i think is much better in this case.

# the os.system() or os.exec* call will failed if something go wrong like this you can check if the process is runninh again.

希望这可以帮助

以上是 用python杀死进程 的全部内容, 来源链接: utcz.com/qa/416756.html

回到顶部