Cron กับสคริปต์พื้นหลัง
cron
แน่นอนสิ่งแรกที่ปรากฏในใจคือการใช้งาน ไม่ว่าคุณจะใช้ 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
รุ่น -) ซึ่งจะทำให้สามารถเริ่มต้นได้ แอปพลิเคชั่นลดลง