Cron ve arka plan komut dosyası
Elbette akla ilk gelen şey kullanmaktır cron
. İster cron kullanın, ister küçük bir arka plan komut dosyası kullanın, esasen bir zevk meselesidir.
Cron'un avantajı, varolan bir işlemi bağlamasıdır (bir komut dosyası , işlemci yüküne aslında hiçbir şey eklemese de).
Bir arka plan komut dosyasının avantajı daha esnek olmasıdır; zamanı veya diğer ayarları değiştirmek isterseniz onu öldürün ve diğer argümanlarla çalıştırın. Başka bir kurulum yapmak zorunda kalmadan diğer uygulamalarla da kullanabilirsiniz, sadece bir komut yeterlidir.
Aşağıdaki komut dosyası komutla çalıştırılabilir (örn.)
python3 <script> <command_to_run_application> <cycle_time> <application_run_time> force
Son argümanın ayarlanması durumunda uygulamayı zorla öldürür. Ayarlanmazsa, uygulama olası değişikliklerin vb. Kaybolmayacağından emin olmak için zarif bir şekilde kapanır.
Senaryo
#!/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)
Kullanmak
Uygulamaları bağımsız değişkenlerle çalıştırma
Bağımsız değişkenleri olan bir uygulama çalıştırırsanız, uygulamayı çalıştırmak için komutun çevresinde tırnak işareti kullandığınızdan emin olun , örneğin:
python3 /path/to/cycle_run.py 'gedit /home/jacob/Desktop/test.sh' 30 5
Uygulamaların simge durumuna küçültülmüş veya tepside çalıştırılması
Uygulamaların periyodik olarak başlatılması ve sonlandırılması genellikle yalnızca simge durumuna küçültülmüş ve / veya tepsi içinde gerekir. OP tarafından talep edildiği gibi, bununla ilgili birkaç açıklama:
Bir uygulama tepsiden komut satırından başlatılmayı teklif ederse , bunu yapmak için argümanı kullanmanız yeterlidir. Durumunda Telgram
, kullanımına argümanı:
-startintray
seçenek burada belirtildiği gibi tüm sistemlerde (benimkinde işe yaramaz) çalışmıyor gibi görünüyor . Durumunuzu test etmeniz gerekecek.
Uygulama, simge durumuna küçültülmüş veya tepsiye başlamak için komut satırı seçeneğini sunmazsa, (bu) komut dosyasını buradakiyle birlikte kullanmanızı öneririm ( pid
- sürümünü öneririm ), bu da başlatmayı mümkün kılacaktır uygulama küçültüldü.