크론과 백그라운드 스크립트
물론 가장 먼저 떠오르는 것은 사용하는 것입니다 cron
. 크론을 사용하든 작은 배경 스크립트를 사용하든간에 주로 맛의 문제입니다.
cron의 장점은 기존 프로세스를 연결한다는 것입니다 (스크립트는 실제로 프로세서로드에 아무 것도 추가하지 않지만 ).
백그라운드 스크립트의 장점은 더 유연하다는 것입니다. 시간 또는 다른 설정을 변경하려면 간단히 죽이고 다른 인수로 실행하십시오. 다른 설정을 수행 할 필요없이 다른 응용 프로그램과 함께 재사용 할 수도 있습니다. 명령만으로 충분합니다.
아래 스크립트는 명령에 의해 실행될 수 있습니다 (예 :)
python3 <script> <command_to_run_application> <cycle_time> <application_run_time> force
마지막 인수가 설정되면 응용 프로그램을 강제 종료 합니다. 설정하지 않으면 변경 사항 등이 손실되지 않도록 응용 프로그램이 정상적으로 종료됩니다.
스크립트
#!/usr/bin/env python3
import subprocess
import time
import sys
force = False
args = sys.argv[1:]; app = args[0].replace("'", "")
proc = app.split()[0].split("/")[-1]
cycle = int(args[1])*60; run = int(args[2])*60
try:
if args[3] == "force":
force = True
except IndexError:
pass
def get_pid(proc_name):
try:
return subprocess.check_output(
["pgrep", proc_name]
).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
def kill(pid, force):
if force == False:
subprocess.Popen(["kill", "-s", "TERM", pid])
elif force == True:
subprocess.Popen(["kill", pid])
while True:
subprocess.Popen(["/bin/bash", "-c", app])
time.sleep(run)
pid = get_pid(proc)
if pid != None:
kill(pid, force)
time.sleep(cycle - run)
사용
인수를 사용하여 응용 프로그램 실행
인수와 함께 응용 프로그램을 실행하는 경우 명령 주위에 따옴표를 사용 하여 응용 프로그램을 실행해야합니다 . 예 :
python3 /path/to/cycle_run.py 'gedit /home/jacob/Desktop/test.sh' 30 5
응용 프로그램을 최소화하거나 트레이에서 실행
주기적으로 응용 프로그램을 시작하고 종료하는 작업은 최소화 및 / 또는 트레이에서만 필요합니다. OP의 요청에 따라 다음과 같은 몇 가지 사항이 있습니다.
경우 응용 프로그램 이벤트 명령 줄에서 트레이에 시작, 단순히 그렇게 인수를 사용합니다. 의 경우 Telgram
사용할 인수는 다음과 같습니다.
-startintray
여기에 언급 된 것처럼 옵션이 모든 시스템에서 작동하지는 않는 것 같습니다 . 상황에 따라 테스트해야합니다.
응용 프로그램이 시작을 최소화하거나 트레이에 명령 줄 옵션을 제공하지 않으면 여기에있는 스크립트와 함께이 스크립트를 사용하는 것이 좋습니다 (이 pid
버전 은 -버전을 제안 함 ). 응용 프로그램이 최소화되었습니다.