[英]How to restart a python script using another?
(“第一個腳本”從用戶那里獲取輸入,“第二個腳本”通知任務。)
我一直在嘗試使用另一個腳本重新啟動 python 腳本,但是在嘗試了幾種方法后我無法成功。 我開發了一個提醒,當用戶之前設置的時間到達時通知用戶,應用程序在 Linux 上運行,它有 2 個 python 腳本。 第一個是接受用戶提供的輸入來安排任務。 例如,“下午 12:30 打電話給老板”。 然后 Linux 將在下午 12:30 通知它。 另一個是檢查輸入並在時間到來時通知他們。
在第一個腳本中,我試圖在用戶給出新任務時重新啟動另一個腳本,因為腳本需要讀取新任務來通知它。 我還想在運行第二個腳本時終止第一個腳本。 但是第二個腳本必須仍然有效。 在第一個腳本中,我嘗試了這些命令來做到這一點:
os.system(f"pkill -f {path2}")
os.system(f"python {path2}")
這些都行不通。
另外我想在我的操作系統啟動時運行第二個腳本。
概括:
1-我想使用另一個腳本重新啟動 python 腳本,並且在運行第二個腳本時應該終止第一個腳本。
2-我想在我的操作系統啟動時運行第二個腳本。
關於我的提醒應用程序的存儲庫在這里。
關於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 文件運行您的腳本,您就可以使用 go:
/etc/rc.local:
python '/path/to/your/scripts'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.