উত্তর:
( sleep 300 ; echo "80" > /sys/class/leds/blue/brightness ) &
এইভাবে আপনার স্ক্রিপ্টটি চলতে থাকে, বা আপনি তত্ক্ষণাত্ নিয়ন্ত্রণ পুনরুদ্ধার করেন, যখন স্ক্রিপ্টটির একটি নতুন পটভূমি টাস্ক দুটি কমান্ড সহ শুরু হয়: ঘুম এবং প্রতিধ্বনি।
সাধারণ ত্রুটি পারেন দিতে চেষ্টা করছে sleepবা echoবা উভয় &যা না করবে না কাজ দেয়ার উদ্দেশ্যে করা হয়। কমান্ডের একটি সিরিজ চালু করা ()যদিও এগুলি একটি পৃথক শেল প্রক্রিয়া তৈরি করে, যা আপনি এরপরে পুরোটিকে প্রেক্ষাপটে প্রেরণ করতে পারেন &।
সেই বুদ্ধিটির কাছে, যেখানে আমি এটি সক্রিয়ভাবে দরকারী বলে মনে করি। এম্বেড থাকা ডিভাইসে আমি বিকাশ করি সেখানে একটি প্রধান অ্যাপ্লিকেশন যা একটি ওয়াচডগের সাথে কাজ করে। যদি এটি এমনভাবে ব্যর্থ হয় যা প্রারম্ভের পরপরই ওয়াচডোগ রিসেটকে ট্রিগার করে, বারবার, ওএস শুরু এবং রিসেটের মধ্যে সময়কাল খুব কম হয়, তবে অ্যাপ্লিকেশন স্টার্টআপটি ব্লক করার পক্ষে যথেষ্ট নয়, কারণ দূরবর্তীভাবে এটি ঠিক করা শক্ত। সুতরাং সিস্টেমটি এত তাড়াতাড়ি পুনরায় আরম্ভ করার নির্ধারণ করার একটি উপায় আমার প্রয়োজন এবং এটি যদি ম্যানুয়ালি সংশোধন করার জন্য সময় দেয় তবে তা বিলম্বের সাথে পরিচয় করিয়ে দেয়।
[ -f /tmp/startdelay ] && sleep 30
touch /tmp/startdelay
( sleep 30 ; rm /tmp/startdelay ) &
[ -f /tmp/noautostart ] && exit 0
start_app
যদি আমি লগ ইন করি এবং সম্পাদনা করি touch /tmp/noautostartতবে মূল অ্যাপ্লিকেশনটি আরম্ভ হবে না। যদি ওয়াচডাগ কিক করে থাকে rm /tmp/startdelayতবে সম্পাদনা করা হবে না এবং পরবর্তী সময় সিস্টেমটি শুরু হলে এটি বন্ধ করার জন্য এটি আমাকে 30s অতিরিক্ত দেবে। অন্যথায় পুনরায় আরম্ভ করা দেরি না করে দ্রুত হবে।
&ব্যাকগ্রাউন্ডের সাথে ঘুম যুক্ত একটি ফাংশন চালানো ছিল ; "আপনারও ঘুমের ব্যাকগ্রাউন্ড করতে হবে" শুরু থেকেই প্রথম লাইনে ছিল। আপনি যদি আমাকে বিশ্বাস না করেন তবে সম্পাদনার ইতিহাস দেখুন। এবং আমার উত্তরটি আপনার থেকে 5 মিনিটের বেশি পুরানো: পি
()গোষ্ঠীটি ব্যাকগ্রাউন্ড না করলে, মস্তকটি শেষ না হওয়া পর্যন্ত আসল শেলটি থামবে))
atকমান্ড ব্যবহার করুন
echo "echo \"80\" > /sys/class/leds/blue/brightness" | at now + 5 min
যে পটভূমি চলবে
echoপুরোপুরি হেরিডোক বা এখানে ব্যবহারের মাধ্যমে পূর্ববর্তীতা করতে পারেন।
atএকটি স্ট্যান্ডার্ড পসিক্স কমান্ড। কোন ইউনিক্সের মতো সিস্টেমে এটি ডিফল্টরূপে উপলব্ধ নেই?
আপনি যদি 5 মিনিটের মধ্যে কিছু চালাতে চান তবে আপনার প্রোগ্রামটির বাকি অংশটি চালিয়ে যেতে (বা সমাপ্ত) করতে চান তবে আপনার ঘুমের ব্যাকগ্রাউন্ডও দরকার:
#!/bin/bash
runWithDelay () {
sleep $1;
shift;
"${@}";
}
runWithDelay 3 echo world &
echo hello
এটি মুদ্রণ করবে helloএবং তারপরে 3 সেকেন্ড পরে (মূল প্রোগ্রামটি বেরিয়ে আসার পরে), মুদ্রণ করবে world।
গুরুত্বপূর্ণ অংশটি হ'ল &ব্যাকগ্রাউন্ডে ফাংশন এক্সিকিউশনটি কাঁটাচামচ করা।
runWithDelay () { sleep $1; "${@:2}"; }পরিবর্তে পরামর্শ দিতে পারি?
doWhateverWithDelay 3 &আপনার দ্বিতীয় উদাহরণে পড়া উচিত ।
-n) দিয়ে আর্গোগুলি ব্যবহার করেছি , তবে স্পষ্টতই এটি কিছুটা নিষ্পাপ ছিল।