ক্রোন বনাম ব্যাকগ্রাউন্ড স্ক্রিপ্ট
অবশ্যই মনের মধ্যে যে প্রথম জিনিসটি মুছে যায় তা হ'ল ব্যবহার করা 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
- সংস্করণ), যা প্রারম্ভে করা সম্ভব করতে হবে অ্যাপ্লিকেশন হ্রাস করা।