簡體   English   中英

如何使用另一個腳本重新啟動 python 腳本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM