如何使用另一个脚本重新启动 python 脚本?

How to restart a python script using another?

('The First script' 从用户那里获取输入并 'the second script' 通知任务。)

我一直在尝试使用另一个脚本重新启动 python 脚本,但在尝试了几种方法后我无法成功。我开发了一个提醒,当用户先前设置的时间到达时通知用户,应用程序在 Linux 上运行并且它有 2 个 python 脚本。第一个是接受用户给出的输入来安排任务。例如,“在 12:30 pm 呼叫 boss”。然后 Linux 将在 12:30 下午通知它。另一个正在检查输入并在时机成熟时通知他们。

在第一个脚本中,我试图在用户提供新任务时重新启动另一个脚本,因为脚本需要读取新任务以通知它。我还想在 运行 第二个脚本时终止第一个脚本。但第二个脚本必须仍然有效。在第一个脚本中,我尝试了这些命令来做到这一点:

os.system(f"pkill -f {path2}")
os.system(f"python {path2}")

这些都行不通。

我还想 运行 我的 os 启动时的第二个脚本。

总结:

1- 我想使用另一个脚本重新启动 python 脚本,当第二个脚本为 运行 时第一个脚本应该终止。

2- 我想要 运行 我的 os.

启动时的第二个脚本

Repos关于我的提醒应用的故事是 here

关于 1 :

假设另一个脚本的名称是 2.py(可通过下面的代码更改),这对我来说非常有效:

1.py:

import subprocess
import os
import time

OTHER_SCRIPT_NAME = "2.py"

process_outputs = subprocess.getoutput("ps aux | grep " + OTHER_SCRIPT_NAME) # Searching for the process running 2.py
wanted_process_info = process_outputs.split("\n")[0] # Getting the first line only
splitted_process_info = wanted_process_info.split(" ") # Splitting the string
splitted_process_info = [x for x in splitted_process_info if x != ''] # Removing empty items
pid = splitted_process_info[1] # PID is the secend item in the ps output
os.system("kill -9 " + str (pid)) # Killing the other process
exit()

time.sleep(1000) # Will not be called because exit() was called before

2.py:

import time

time.sleep(100)

关于2:

在linux中,您可以通过将脚本写入/etc/rc.local文件来在启动时执行脚本

只需 运行 来自 rc.local 文件的脚本就可以了:

/etc/rc.local:

python '/path/to/your/scripts'