উত্তর:
আপনি watch
কমান্ডটি ব্যবহার করতে পারেন , নিয়মিত বিরতিতে কোনও নির্ধারিত কমান্ড চালাতে ঘড়ি ব্যবহার করা হয়।
টার্মিনাল খুলুন এবং টাইপ করুন:
watch -n x <your command>
আপনি চান সেকেন্ডের সময় হতে এক্স পরিবর্তন করুন ।
watch
কমান্ড এবং এর বিকল্পগুলি ব্যবহারে আরও সহায়তার man watch
জন্য, এই লিঙ্কটি চালান বা দেখুন ।
উদাহরণস্বরূপ: নিম্নলিখিত Ter০ এর দশকে একই টার্মিনালে ডেস্কটপ ডিরেক্টরিটির বিষয়বস্তু তালিকাভুক্ত করা হবে যাতে আপনি জানতে পারবেন যে কোনও পরিবর্তন হয়েছে কিনা:
watch -n 60 ls -l ~/Desktop
watch
"ইতিহাস সক্ষম" টাইপ কমান্ড দিয়ে ব্যবহার করার কোনও উপায় আছে কি ? আমি ব্যবহার watch
করতে পছন্দ করি তবে কখনও কখনও আমি শেষের মৃত্যুদণ্ডের পরিবর্তে পূর্বের মৃত্যুদণ্ড কার্যকর করতে চাই see এবং হ্যাঁ, আমি জানি আমি এটি while true
সম্পাদন করতে স্ক্রিপ্টিং ( ) ব্যবহার করতে watch
পারি , তবে ইউটিটিটি ব্যবহার করা এত পরিষ্কার!
আপনি এই কমান্ডটি টার্মিনালে ব্যবহার করতে পারেন, nux এর উত্তর ছাড়াও:
while true; do <your_command>; sleep <interval_in_seconds>; done
উদাহরণ
while true; do ls; sleep 2; done
এই কমান্ডটি ls
2 সেকেন্ডের ব্যবধানে আউটপুট প্রিন্ট করবে ।
প্রক্রিয়া বন্ধ করতে Ctrl+ ব্যবহার করুন C।
এর কিছু কমতি রয়েছে watch
watch
এএনএসআই রঙ সিকোয়েন্সগুলি -c
বা --color
বিকল্প ব্যবহার করে পালিয়ে যাওয়া অক্ষরগুলিকে ব্যাখ্যা করবে । উদাহরণস্বরূপ আউটপুট pygmentize
কাজ করবে তবে এটি ব্যর্থ হবে ls --color=auto
।উপরের পরিস্থিতিতে এটি আরও ভাল বিকল্প হিসাবে উপস্থিত হতে পারে।
watch
তার জন্য বিদ্যমান, এটি আমি কিছুটা অযথা যা বলব
watch
বেশিরভাগ ক্ষেত্রেই ভাল। এই কারণেই আমি শুরুতে "নক্সের উত্তর বাদে" উল্লেখ করেছি। তবে watch
উদাহরণস্বরূপ কয়েকটি সমস্যা রয়েছে যার সাথে কেউ কোনও এলিয়াস কমান্ড ব্যবহার করতে পারে নাwatch
। উদাহরণস্বরূপ নিন ll
যা aliised হয় ls -laF
কিন্তু ব্যবহার করা যাবে না watch
। এছাড়াও যদি কোনও কমান্ডের আউটপুট বেশ দীর্ঘ হয় তবে আপনি ব্যবহার করে স্ক্রোলিং করতে সমস্যায় পড়বেন watch
। এই কয়েকটি বিশেষ ক্ষেত্রে এই উত্তরটি আরও ভাল বিকল্প হিসাবে উপস্থিত হতে পারে।
watch
কমপক্ষে আমার সংস্করণটি রঙিন আউটপুটের জন্য -c
বা --color
বিকল্পগুলির অনুমতি দেয় ।
while sleep x
আরও ভাল - এটি হত্যা করা সহজ।
watch
এটি কমান্ডের ইতিহাস রাখে।
শুধু পিচ চেয়েছিলেন souravc এবং nux এর উত্তর:
watch
উদাহরণস্বরূপ FreeBSD 'র উপর, ঘড়ি "অন্য TTY লাইনে স্নুপ" করার জন্য একটি কমান্ড - উবুন্টু উপর পুরোপুরি কাজ করবে, আপনি এড়াতে যে আপনি যদি আপনার "ইউনিক্স-Fu" বিশুদ্ধ হতে চান করতে পারেন।while true; do command; sleep SECONDS; done
এছাড়াও একটি সতর্কতা আছে - আপনার কমান্ড সিটিআর + সি ব্যবহার করে হত্যা করা আরও কঠিন হতে পারে । আপনি পছন্দ করতে চাইতে পারেন while sleep SECONDS; do command; done
- এটি কেবল খাটো নয়, বাধা দেওয়াও সহজ। সাবধানবাণীটি হ'ল এটি প্রথমে ঘুমাবে, তারপরে আপনার কমান্ডটি পরিচালনা করুন, যাতে কমান্ডের SECONDS
প্রথম ঘটনাটি ঘটে যাওয়ার আগে আপনাকে কিছুটা অপেক্ষা করতে হবে।sleep
মধ্যে while
লুপ? আমি কোনও পার্থক্য খুঁজে পেলাম না, Ctrl + C তাত্ক্ষণিকভাবে লুপটি ভেঙে ফেলল যাই হোক না কেন।
command
এবং মেরে ফেললে sleep
কেবল ভেঙে যায় true
।
cron
ডেমনের জন্য আদর্শ টাস্কের মতো মনে হয় যা পর্যায়ক্রমিক কমান্ডগুলি চালনার অনুমতি দেয়। crontab -e
আপনার ব্যবহারকারীর ক্রোন কনফিগারেশন সম্পাদনা করতে কমান্ডটি চালান । এর বিন্যাসটি ক্রন্টব (5) এ নথিভুক্ত করা হয়েছে । মূলত আপনার পাঁচটি সময় সম্পর্কিত, স্থান-বিচ্ছিন্ন ক্ষেত্র রয়েছে যার পরে একটি আদেশ থাকবে:
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sunday, or use names)
উদাহরণস্বরূপ, আপনি যদি প্রতি মঙ্গলবার 11 টা সকালে পাইথন স্ক্রিপ্টটি চালাতে চান:
0 11 * * 1 python ~/yourscript.py
কিছু বিশেষ নামও রয়েছে যা সময়কে প্রতিস্থাপন করে, যেমন @reboot
। আপনার যদি একটি অস্থায়ী ডিরেক্টরি তৈরি করতে হয় তবে খুব সহায়ক। আমার ক্রোনটাব থেকে (তালিকাভুক্ত crontab -l
):
# Creates a temporary directory for ~/.distcc at boot
@reboot ln -sfn "$(mktemp -d "/tmp/distcc.XXXXXXXX")" "$HOME/.distcc"
cron
টার্মিনালের চেয়ে পর্দার আড়ালে চলে
আপনি যদি ফাইল সিস্টেমটি নিরীক্ষণ করেন তবে inotifywait
উজ্জ্বল এবং অবশ্যই আপনার সিস্টেমে কম লোড যুক্ত করে।
উদাহরণ:
ইন 1 ম টার্মিনাল এই কমান্ড টাইপ করুন:
$ inotifywait .
তারপরে ২ য় টার্মিনালে যে কোনও কমান্ড বর্তমান ডিরেক্টরিকে প্রভাবিত করে,
$ touch newfile
তারপরে মূল টার্মিনাল ইনোটিফয়েট জেগে উঠবে এবং ইভেন্টটির প্রতিবেদন করবে
./ CREATE newfile2
বা একটি লুপে
$ while true ; do inotifywait . ; done
Setting up watches.
Watches established.
./ OPEN newfile2
Setting up watches.
Watches established.
./ OPEN newfile2
Setting up watches.
Watches established.
./ DELETE newfile
Setting up watches.
Watches established.
./ CREATE,ISDIR newdir
Setting up watches.
Watches established.
grep something InALogFile|less
একটি স্ক্রিপ্ট?
.
কমান্ডটি আমি ছাড়তে পারি না তার চেয়ে সহজ আর কী হতে পারে ।
-m
ক্রমাগত একটি লুপ ছাড়াই নিরীক্ষণ করতে পারেন ।
repeat
নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করে আপনি নিজের কমান্ড তৈরি করতে পারেন ; এখানে ক্রেডিট :
প্রথমে আপনার .bash_aliases
ফাইলটি খুলুন :
$ xdg-open ~/.bash-aliases
দ্বিতীয়ত, ফাইলের নীচে এই লাইনগুলি পেস্ট করুন এবং সংরক্ষণ করুন:
repeat() {
n=$1
shift
while [ $(( n -= 1 )) -ge 0 ]
do
"$@"
done
}
তৃতীয়ত, হয় বন্ধ করে আবার আপনার টার্মিনালটি আবার খুলুন, বা টাইপ করুন:
$ source ~/.bash_aliases
এট ভয়েইল! আপনি এখন এটি এর মতো ব্যবহার করতে পারেন:
$ repeat 5 echo Hello World !!!
অথবা
$ repeat 5 ./myscript.sh
আপনি crontab ব্যবহার করতে পারেন। কমান্ডটি চালনা করুন crontab -e
এবং এটি আপনার পছন্দের পাঠ্য সম্পাদক দিয়ে খুলুন, তারপরে এই লাইনটি যুক্ত করুন
*/10 * * * * /path-to-your-command
এটি প্রতি 10 মিনিটে আপনার আদেশটি চালাবে
* */4 * * * /path-to-your-command
এটি প্রতি 4 ঘন্টা পরে আপনার কমান্ড চালাবে
$ ..some command...; for i in $(seq X); do $cmd; sleep Y; done
বার বার এক্স সংখ্যা।
ওয়াই সময় পুনরাবৃত্তি অপেক্ষা।
উদাহরণ:
$ echo; for i in $(seq 5); do $cmd "This is echo number: $i"; sleep 1;done
উপরে প্রস্তাবিত "ঘড়ি" পদ্ধতির সাথে আরেকটি উদ্বেগ হ'ল প্রক্রিয়াটি কেবল তখনই ফলাফলটি প্রদর্শন করে। "তারিখ; ঘুম 58; তারিখ" 2 তারিখগুলি কেবল 59 সেকেন্ডের পরে প্রদর্শন করবে ... আপনি যদি 4 মিনিটের জন্য কিছু চালনা শুরু করেন, যা ধীরে ধীরে একাধিক পৃষ্ঠাগুলির সামগ্রী প্রদর্শন করে, আপনি এটি সত্যিই দেখতে পাবেন না।
অন্যদিকে, "যখন" পদ্ধতির সাথে উদ্বেগটি হ'ল এটি কার্যকালীন সময়টিকে বিবেচনায় নেয় না।
while true; do script_that_take_between_10s_to_50s.sh; sleep 50; done
এটির সাথে স্ক্রিপ্টটি প্রতি মিনিটে এক সময় চলবে, কিছু সময় 1m40 লাগতে পারে। সুতরাং যদি কোনও ক্রোন প্রতি মিনিটে এটি চালাতে সক্ষম হয় তবে এটি তা করবে না।
সুতরাং শেলের আউটপুটটি তৈরি হওয়ার সাথে সাথে দেখতে এবং অনুরোধের সঠিক সময়টির জন্য অপেক্ষা করতে, আপনাকে আগে এবং পরে সময়টি দেখতে হবে এবং কিছুক্ষণের সাথে লুপ করতে হবে।
কিছুটা এইরকম:
while ( true ); do
echo Date starting `date`
before=`date +%s`
sleep `echo $(( ( RANDOM % 30 ) + 1 ))`
echo Before waiting `date`
after=`date +%s`
DELAY=`echo "60-($after-$before)" | bc`
sleep $DELAY
echo Done waiting `date`
done
এটি এটিকে আউটপুট দেবে:
আপনি দেখতে পাচ্ছেন, প্রতি মিনিটে কমান্ডটি চালিত হয়:
Date starting Mon Dec 14 15:49:34 EST 2015
Before waiting Mon Dec 14 15:49:52 EST 2015
Done waiting Mon Dec 14 15:50:34 EST 2015
Date starting Mon Dec 14 15:50:34 EST 2015
Before waiting Mon Dec 14 15:50:39 EST 2015
Done waiting Mon Dec 14 15:51:34 EST 2015
আপনি কেবল echo $(( ( RANDOM % 30 ) + 1 ))
যা চান তার সাথে "স্লিপ " কমান্ডটি প্রতিস্থাপন করুন এবং এটি টার্মিনাল / শেলটিতে ঠিক প্রতি মিনিটেই চালানো হবে। আপনি যদি অন্য সময়সূচী চান, তবে আপনার যা প্রয়োজন তা কেবল "60" সেকেন্ডে পরিবর্তন করুন।
ডিবাগ লাইন ছাড়াই সংক্ষিপ্ত সংস্করণ:
while ( true ); do
before=`date +%s`
sleep `echo $(( ( RANDOM % 30 ) + 1 ))` # Place you command here
after=`date +%s`
DELAY=`echo "60-($after-$before)" | bc`
sleep $DELAY
done
watch -n 1 'echo $COLUMNS'
এবং এর মধ্যে পার্থক্যটি চেষ্টা করুনwatch -n 1 echo $COLUMNS
- প্রাক্তনটি প্রতি সেকেন্ডে প্রসারিত হয়, তবে দ্বিতীয়টি শুরু হওয়ার আগে একবার প্রসারিত হয়watch
।