পর্যায়ক্রমে একটি অ্যাপ্লিকেশন শুরু এবং বন্ধ করার জন্য কোনও সফ্টওয়্যার রয়েছে কি?


11

অনুকরণীয় ব্যবহারের কেস:

আমি নতুন আগত বার্তাগুলি পরীক্ষা করতে 15 মিনিটের জন্য প্রতি 3 ঘন্টা অন্তর টেলিগ্রাম ডেস্কটপটি শুরু করতে চাই । 15 মিনিটের পরে, অ্যাপ্লিকেশনটি আবার বন্ধ হবে এবং পরবর্তী 3 ঘন্টা পরে পুনরায় চালু করা উচিত।


এটি স্ক্রিপ্ট করা অত্যন্ত সহজ হবে। অ্যাপ্লিকেশন শুরু করবেন, এটি পরীক্ষা করে দেখুন? যদি তা হয় তবে এটি চালানোর আদেশ কী?
জ্যাকব ভিলিজ

সঙ্গে cronআপনি পরিষ্কারভাবে প্রোগ্রাম শুরু করতে পারেন। আপনি এটিকে ক্রোনও করতে পারেন kill -15, তবে এটি অ্যাপ্লিকেশনটির উপর নির্ভর করে যে এটি এটি বন্ধ করার মৃদু স্বভাব হিসাবে পরিচালনা করে, এড়িয়ে যায় বা কেবল ক্র্যাশ করে কিনা।
হ্যারাল্ড

উত্তর:


9

ক্রোন বনাম ব্যাকগ্রাউন্ড স্ক্রিপ্ট

অবশ্যই মনের মধ্যে যে প্রথম জিনিসটি মুছে যায় তা হ'ল ব্যবহার করা 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)

ব্যবহার করা

  • একটি ফাঁকা ফাইলে স্ক্রিপ্টটি অনুলিপি করুন, এটি সংরক্ষণ করুন cycle_run.py
  • কমান্ড দিয়ে এটি চালান:

    python3 /path/to/cycle_run.py <command> <cycle_time> <application_run_time> force
    

    কোথায়:

    • <command>অ্যাপ্লিকেশনটি চালানোর জন্য --%uহুকুমটি ( .desktopফাইলটি থেকে অনুলিপি করা-সেশন ছাড়াই /home/jacob/Downloads/Telegram/Telegram) :
    • <cycle_time> মিনিটের মধ্যে মোট (মোট) চক্র সময় (আপনার উদাহরণে 3 ঘন্টা = 180)
    • <application_run_time> অ্যাপ্লিকেশনটি মিনিটের মধ্যে চলার সময় (আপনার উদাহরণে 15)
    • forceশক্তিশালীভাবে অ্যাপ্লিকেশনটি মেরে ফেলার জন্য এটি একটি alচ্ছিক যুক্তি । অ্যাপ্লিকেশনটি নিখুঁতভাবে হত্যা করার জন্য কেবল এটি ছেড়ে দিন ।

যুক্তি সহ অ্যাপ্লিকেশন চালানো

আপনি যদি আর্গুমেন্ট দিয়ে কোনও অ্যাপ্লিকেশন চালনা করেন তবে অ্যাপ্লিকেশনটি চালানোর জন্য আপনি কমান্ডের চারপাশে উদ্ধৃতি ব্যবহার করেছেন তা নিশ্চিত করুন :

python3 /path/to/cycle_run.py 'gedit /home/jacob/Desktop/test.sh' 30 5

চলমান অ্যাপ্লিকেশনগুলি ছোট বা ট্রেতে চলছে

পর্যায়ক্রমে অ্যাপ্লিকেশনগুলি শুরু করা এবং শেষ করা প্রায়শই কেবলমাত্র ছোট এবং / অথবা ট্রেতে হবে। ওপি-র অনুরোধ অনুসারে, এ সম্পর্কে কয়েকটি মন্তব্য:

  • যদি কোনও অ্যাপ্লিকেশনটি কমান্ড লাইন থেকে ট্রেতে শুরু করার প্রস্তাব দেয় তবে তা করার জন্য কেবল যুক্তিটি ব্যবহার করুন। ক্ষেত্রে Telgram, যুক্তিটি হ'ল:

    -startintray
    

    যদিও বিকল্পটি সমস্ত সিস্টেমে (এটি খনিতে ঘটে) কাজ করে না বলে মনে হয়, যেমনটি এখানে উল্লেখ করা হয়েছে । আপনাকে আপনার পরিস্থিতিতে পরীক্ষা করতে হবে।

  • আবেদন কমান্ড লাইন বিকল্প অফার করে না এমন কমিয়ে আনা প্রারম্ভ অথবা ট্রেতে, আমি সঙ্গে একযোগে (এই) স্ক্রিপ্ট ব্যবহার করার সুপারিশ করছি এখানে (আমি সুপারিশ করছি pid- সংস্করণ), যা প্রারম্ভে করা সম্ভব করতে হবে অ্যাপ্লিকেশন হ্রাস করা।


প্রিয় @ জ্যাকবভিজিম, আপনার কাছে একটি দুর্দান্ত দক্ষতা রয়েছে! এই বড়দিনের উপস্থিতির জন্য আপনাকে অনেক ধন্যবাদ। আপনার স্ক্রিপ্ট দুর্দান্ত কাজ করে। "একটি বিরতি নিন" হিসাবে একই, আমি এই স্ক্রিপ্টটি একটি দুর্দান্ত, কেবল জিইউআইতে রূপান্তরিত করতে কল্পনা করতে পারি যেখানে ব্যবহারকারী অ্যাপ্লিকেশন (গুলি), চক্র সময় এবং অ্যাপ্লিকেশন চলার সময় সংজ্ঞায়িত করতে পারে। এই জিইউআই তারপরে টেলিগ্রাম বা স্কাইপের মতো অ্যাপ্লিকেশন প্রস্তুত করতে স্টার্টআপে চলতে পারে। আপনি কি মনে করেন?
ওরচিরো

1
@orschiro নিখুঁত শোনায়! গুই কয়েকটি পরিবর্তন সহ :) ব্যবহারের জন্য প্রায় প্রস্তুত :) সুন্দর ক্রিসমাস দিন!
জ্যাকব Vlijm

অ্যাপ্লিকেশনগুলি ছোট বা ব্যাকগ্রাউন্ডে খুলতে বাধ্য করা সম্ভব হবে?
orschiro

@orschiro অফ কোর্স, আপনার মনে কি আছে?
জ্যাকব Vlijm

1
হাই @orschiro উত্তরে একটি বিভাগ যুক্ত করেছে।
জ্যাকব Vlijm

5
  1. আপনার ক্রোনটি এর সাথে সম্পাদনা করুন crontab -e এবং প্রতি 3 ঘন্টা সময়সূচী কাজ হিসাবে চালানোর জন্য আপনার ক্রোনটবটিতে এই লাইনটি যুক্ত করুন

    00 */3 * * * * ~/killtelegram.sh >/dev/null 2>&1 
    

আপনার টার্মিনালটি খুলুন এবং নীচের কমান্ডটি টাইপ করুন

touch ~/killtelegram.sh
chmod +x ~/killtelegram.sh

আপনার পছন্দের সম্পাদকের সাথে কিলটেলগ্রাম.শ খুলুন এবং নীচের মত লিখুন

#!/bin/bash
telegram &
sleep 15m
pkill telegram

সংরক্ষণ এবং ত্যাগ

এটাই. এটি প্রতি 3 ঘন্টা অন্তর স্বয়ংক্রিয়ভাবে খুলবে এবং এটি 15 মিনিটের জন্য থাকবে এবং এটি মারা যাবে।


হাই রাজা, আপনি কি এই বিষয়ে ভোটদান বিবেচনা করবেন: Askubuntu.com/tags/schedule/synonyms ?
জ্যাকব ভিলিজম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.