Skrip Cron versus latar belakang
Tentu saja hal pertama yang muncul dalam pikiran adalah menggunakannya cron
. Apakah Anda menggunakan cron, atau skrip latar belakang kecil terutama masalah selera.
Keuntungan dari cron adalah ia terhubung pada proses yang sudah ada (meskipun sebuah skrip menambahkan, sebenarnya tidak ada apa - apa pada beban prosesor).
Keuntungan dari skrip latar belakang adalah lebih fleksibel; cukup bunuh dan jalankan dengan argumen lain jika Anda ingin mengubah waktu- atau pengaturan lainnya. Anda juga dapat menggunakannya kembali dengan aplikasi lain tanpa harus melakukan pengaturan lain, cukup dengan perintah saja.
Script di bawah ini dapat dijalankan oleh perintah (misalnya)
python3 <script> <command_to_run_application> <cycle_time> <application_run_time> force
Di mana argumen terakhir, jika diatur, secara paksa membunuh aplikasi. Jika tidak disetel, aplikasi akan ditutup dengan anggun, untuk memastikan kemungkinan perubahan, dll. Tidak akan hilang.
Naskah
#!/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)
Menggunakan
Menjalankan aplikasi dengan argumen
Jika Anda menjalankan aplikasi dengan argumen, pastikan Anda menggunakan tanda kutip di sekitar perintah untuk menjalankan aplikasi , misalnya:
python3 /path/to/cycle_run.py 'gedit /home/jacob/Desktop/test.sh' 30 5
Menjalankan aplikasi diminimalkan atau di dalam baki
Memulai dan mengakhiri aplikasi secara berkala akan sering dibutuhkan hanya diminimalkan dan / atau di dalam baki. Seperti yang diminta oleh OP, beberapa komentar tentang itu:
Jika aplikasi menawarkan memulai di baki dari baris perintah, cukup gunakan argumen untuk melakukannya. Dalam kasus Telgram
, argumen yang digunakan adalah:
-startintray
meskipun opsi tersebut tampaknya tidak bekerja pada semua sistem (tidak pada saya), seperti yang disebutkan di sini . Anda harus menguji dalam situasi Anda.
Jika aplikasi tidak menawarkan opsi baris perintah untuk startup yang diperkecil atau dalam baki, saya sarankan menggunakan skrip (ini) bersama dengan skrip di sini (saya sarankan pid
versi -), yang akan memungkinkan startup. aplikasi diminimalkan.