[英]How can i let the BASH script run as process? So that even the Python script is killed the BASH script runs forever?
我需要跟蹤並啟動一些BASH腳本作為進程(如果由於某種原因崩潰等)。 所以我嘗試如下:但沒有工作
def ps(self, command):
process = subprocess.Popen(['/bin/bash'], shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
process.stdin.write(command + '\n')
process.stdout.readline()
ps("/var/tmp/KernelbootRun.sh")
ps("ps aux | grep processCreator.py | awk '{print $2}' | xargs kill -9")
沒有工作。
如何使用disown通過子shell運行它:
import os
def ps(self, command):
os.system(command + " & disown")
ps("/var/tmp/KernelbootRun.sh")
ps("ps aux | grep processCreator.py | awk '{print $2}' | xargs kill -9")
請注意,有時您必須使用空輸入和輸出來在終端關閉時保持您的進程處於活動狀態:
ps("</dev/null /var/tmp/KernelbootRun.sh >/dev/null 2>&1")
ps("</dev/null ps aux | grep processCreator.py | awk '{print $2}' | xargs kill -9 >/dev/null 2>&1")
或者也許定義另一個功能:
def psn(self, command):
os.system("</dev/null " + command + " >/dev/null 2>&1 & disown")
psn("/var/tmp/KernelbootRun.sh")
psn("ps aux | grep processCreator.py | awk '{print $2}' | xargs kill -9")
這很好,作為我的電影的獨立過程。
p.py:
import subprocess
subprocess.Popen("/var/tmp/runme.sh", shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
runme.sh:
#!/bin/bash
export DISPLAY=:0.0
vlc /var/tmp/Terminator3.Movie.mp4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.