如何使用另一个脚本重新启动 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'
('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'