क्रोन बनाम बैकग्राउंड स्क्रिप्ट
बेशक सबसे पहली बात यह है कि दिमाग में पॉप का उपयोग करना है 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
रनिंग एप्लिकेशन कम से कम या ट्रे में
समय-समय पर अनुप्रयोगों को शुरू करना और समाप्त करना अक्सर कम से कम और / या ट्रे में आवश्यक होगा। ओपी द्वारा अनुरोध के रूप में, उस पर कुछ टिप्पणी:
यदि कोई एप्लिकेशन कमांड लाइन से ट्रे में शुरू होता है, तो बस ऐसा करने के लिए तर्क का उपयोग करें। Telgram
उपयोग करने के लिए तर्क के मामले में है:
-startintray
हालांकि विकल्प सभी प्रणालियों पर काम नहीं करता है (यह मेरा काम करता है), जैसा कि यहां बताया गया है । आपको अपनी स्थिति में परीक्षण करना होगा।
यदि एप्लिकेशन स्टार्टअप को कम या ट्रे में कमांड लाइन विकल्प की पेशकश नहीं करता है, तो मैं यहां एक के साथ संयोजन में (इस) स्क्रिप्ट का उपयोग करने का सुझाव pid
दूंगा (मैं सुझाव देता हूं - संस्करण), जो स्टार्टअप के लिए संभव बना देगा। आवेदन कम से कम।