1. 程式人生 > 實用技巧 >Windows 自動監聽程式,遊戲伺服器掛掉以後,自動監聽程式將其重啟起來

Windows 自動監聽程式,遊戲伺服器掛掉以後,自動監聽程式將其重啟起來

cmd start 命令

C:\Users\runsheng999>start/?
啟動一個單獨的視窗以執行指定的程式或命令。

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
      [command/program] [parameters]

    
"title" 在視窗標題欄中顯示的標題。 path 啟動目錄。 B 啟動應用程式,但不建立新視窗。 應用程式已忽略 ^C 處理。除非應用程式 啟用 ^C 處理,否則 ^Break 是唯一可以中斷 該應用程式的方式。 I 新的環境將是傳遞 給 cmd.exe 的原始環境,而不是當前環境。 MIN 以最小化方式啟動視窗。 MAX 以最大化方式啟動視窗。 SEPARATE 在單獨的記憶體空間中啟動
16 位 Windows 程式。 SHARED 在共享記憶體空間中啟動 16 位 Windows 程式。 LOW 在 IDLE 優先順序類中啟動應用程式。 NORMAL 在 NORMAL 優先順序類中啟動應用程式。 HIGH 在 HIGH 優先順序類中啟動應用程式。 REALTIME 在 REALTIME 優先順序類中啟動應用程式。 ABOVENORMAL 在 ABOVENORMAL 優先順序類中啟動應用程式。 BELOWNORMAL 在 BELOWNORMAL 優先順序類中啟動應用程式。 NODE 將首選非一致性記憶體結構(NUMA)節點指定為 十進位制整數。 AFFINITY 將處理器關聯掩碼指定為十六進位制數字。

監聽各個程序

import os
import time
import win32com.client

def check_exsit(process_name):
    WMI = win32com.client.GetObject('winmgmts:')
    processCodeCov = WMI.ExecQuery('select * from Win32_Process where Name like "%{}%"'.format(process_name))
    if len(processCodeCov) > 0:
        return True
    else:
        return False

if __name__ == '__main__':
    while True :
        time.sleep( 10 )

        res = check_exsit('CSConsole.exe')
        if not res :
            print(os.system('start "CS" /d ".\\Debug" /MIN "CSConsole.exe"'))
            time.sleep( 10 )

        res = check_exsit('GSConsole.exe')
        if not res :
            print(os.system('start "GS" /d ".\\Debug\\GSATT2" /MIN "GSConsole.exe"'))
            time.sleep( 10 )

        res = check_exsit('RSConsole.exe')
        if not res :
            print(os.system('start "RS" /d ".\\Debug" /MIN "RSConsole.exe"'))
            time.sleep( 10 )