লিনাক্স কমান্ড লাইনে প্রতিটি এন কমান্ডের পুনরাবৃত্তি করা সম্ভব? সেকেন্ডে ?
বলুন, আমার আমদানি চলছে, এবং করছি
ls -l
ফাইলের আকার বাড়ছে কিনা তা পরীক্ষা করতে। আমি স্বয়ংক্রিয়ভাবে এই পুনরাবৃত্তি করতে একটি আদেশ পেতে চাই।
লিনাক্স কমান্ড লাইনে প্রতিটি এন কমান্ডের পুনরাবৃত্তি করা সম্ভব? সেকেন্ডে ?
বলুন, আমার আমদানি চলছে, এবং করছি
ls -l
ফাইলের আকার বাড়ছে কিনা তা পরীক্ষা করতে। আমি স্বয়ংক্রিয়ভাবে এই পুনরাবৃত্তি করতে একটি আদেশ পেতে চাই।
উত্তর:
প্রতি 5 সেকেন্ডে দেখুন ...
watch -n 5 ls -l
আপনি যদি পরিবর্তনের ভিজ্যুয়াল কনফার্মেশন --differences
পেতে চান তবে এর আগে সংযোজন করুনls
কমান্ডের ।
ওএসএক্স ম্যান পৃষ্ঠা অনুসারে, রয়েছে
--Cumulative বিকল্পটি "স্টিকি" হাইলাইট করে তোলে, যা পরিবর্তিত সমস্ত অবস্থানের চলমান প্রদর্শন উপস্থাপন করে। -T বা --no-শিরোনাম বিকল্পটি প্রদর্শনের শীর্ষে অন্তর, কমান্ড এবং বর্তমান সময়ের সাথে নীচের ফাঁকা রেখাটি প্রদর্শন করে শিরোনাম বন্ধ করে দেয়।
watch mysql dbname -e \"show processlist\;\"
brew install watch
while true; do
sleep 5
ls -l
done
watch
এছাড়াও পর্দা সাফ করার দুর্ভাগ্যজনক পার্শ্ব প্রতিক্রিয়া রয়েছে, তাই কখনও কখনও লুপটি কার্যকর হয়। কোনটি ব্যবহার করবেন তা আউটপুটটির পছন্দসই বিন্যাসের উপর নির্ভর করে।
--differences
এগুলি হাইলাইট করার জন্য আপনি ব্যবহার করতে পারেন (আপনি যদি টার্মিনালের
watch
। আপনি প্রতিটি অনুরোধে এলোমেলো সংখ্যা উত্পন্ন করতে চান যখন দেখুন উদাহরণস্বরূপ কাজ করে না watch -n 1 echo ${RANDOM}
। এলোমেলো কেবল একবার কল হবে।
"ঘড়ি" ব্যাসিবক্সে একটি সেকেন্ডের ভগ্নাংশের অনুমতি দেয় না, যখন "ঘুম" দেয়। যদি এটি আপনার পক্ষে গুরুত্বপূর্ণ হয় তবে এটি ব্যবহার করে দেখুন:
while true; do ls -l; sleep .5; done
sleep
ইতিমধ্যে ফিরে 0
। যেমন, আমি ব্যবহার করছি:
while sleep 3 ; do ls -l ; done
এটি মিখাইলের দ্রবণের তুলনায় একটি সামান্য বিট ছোট। একটি সামান্য অসুবিধা হ'ল এটি প্রথমবারের জন্য টার্গেট কমান্ড চালানোর আগে ঘুমায়।
যদি কমান্ডটিতে কিছু বিশেষ অক্ষর থাকে যেমন পাইপ এবং কোটস থাকে, কমান্ডটি উদ্ধৃতি সহ প্যাড করা দরকার। উদাহরণস্বরূপ, পুনরাবৃত্তি করার জন্য ls -l | grep "txt"
, ওয়াচ কমান্ডটি হওয়া উচিত:
watch -n 5 'ls -l | grep "txt"'
ক্রোন ছাড়াই নিয়মিত কমান্ড চালানো সম্ভব যখন আমরা সাথে থাকি while
।
একটি আদেশ হিসাবে:
while true ; do command ; sleep 100 ; done &
[ ex: # while true; do echo `date` ; sleep 2 ; done & ]
উদাহরণ:
while true
do echo "Hello World"
sleep 100
done &
শেষটিকে ভুলে যাবেন না &
কারণ এটি আপনার লুপটিকে পটভূমিতে রাখবে। তবে আপনাকে "পিএস-শেফ | গ্রেপ আপনার_স্ক্রিপ্ট" কমান্ড সহ প্রক্রিয়া আইডিটি সন্ধান করতে হবে তবে আপনাকে এটি মারতে হবে। আপনি স্ক্রিপ্টটি চালানোর সময় দয়া করে '&' যুক্ত করুন।
# ./while_check.sh &
এখানে স্ক্রিপ্টের মতো একই লুপ। "While_check.sh" ফাইলটি তৈরি করুন এবং এটি এতে রাখুন:
#!/bin/bash
while true; do
echo "Hello World" # Substitute this line for whatever command you want.
sleep 100
done
তারপরে এটি টাইপ করে চালান bash ./while_check.sh &
echo $!
প্রতিটি পটভূমি প্রক্রিয়া চালু হওয়ার পরে আপনি স্ক্রিপ্টটি সংশোধন করতে পারেন - এটি পটভূমিতে চালু হওয়া শেষ শিশু প্রক্রিয়ার পিআইডি।
echo `date`
শুধু লিখার জন্য একটি দরিদ্র এবং সামান্য বগি উপায় date
। (ত্রুটির সাথে যুক্তির উদ্ধৃতি না দেওয়ার সাথে বাগটি করতে হবে echo
)) এর অকেজো ব্যবহারওecho
ঘড়ি ভাল তবে পর্দা পরিষ্কার করবে।
watch -n 1 'ps aux | grep php'
আপনি যদি "প্রবাহিত" এড়াতে চান, মানে আপনি কমান্ডটি কতটা এন এন সেকেন্ডের চেয়ে কম সময় নেয় তা বিবেচনা না করেই প্রতিটি এন সেকেন্ড কার্যকর করতে চায় (এখানে ধরে নেওয়া হয় যে এটি এন সেকেন্ডের চেয়ে কম সময় নেয়), এখানে কিছু বাশ রয়েছে যা প্রতি 5 সেকেন্ডে এক-দিয়ে একটি আদেশ পুনর্বার করবে- দ্বিতীয় নির্ভুলতা (এবং এটি সতর্কতা অবলম্বন করতে না পারলে প্রিন্ট করে দেবে):
PERIOD=5
while [ 1 ]
do
let lastup=`date +%s`
# do command
let diff=`date +%s`-$lastup
if [ "$diff" -lt "$PERIOD" ]
then
sleep $(($PERIOD-$diff))
elif [ "$diff" -gt "$PERIOD" ]
then
echo "Command took longer than iteration period of $PERIOD seconds!"
fi
done
ঘুম এখনও এক সেকেন্ডের সঠিক হওয়ায় এটি এখনও খানিকটা প্রবাহিত হতে পারে। ডেট কমান্ডের সৃজনশীল ব্যবহার করে আপনি এই নির্ভুলতার উন্নতি করতে পারেন।
আপনি যদি নির্দিষ্ট কিছু বার কিছু করতে চান তবে আপনি সর্বদা এটি করতে পারেন:
repeat 300 do my first command here && sleep 1.5
for x in {1..300} ; do
||break;sleep 1.5; done
আপনি নিম্নলিখিত চালাতে পারেন এবং শুধুমাত্র আকার ফিল্টার করতে পারেন। যদি আপনার ফাইলটি বলা হয় তবে somefilename
আপনি নিম্নলিখিতটি করতে পারেন
while :; do ls -lh | awk '/some*/{print $5}'; sleep 5; done
অনেক ধারণার মধ্যে একটি।
watch -n 5 'ls -l
চালানো হবে ls -l
যে 5s পর কমান্ড
Every 5.0s: ls -l Fri Nov 17 16:28:25 2017
total 169548
-rw-rw-r-- 1 sachin sachin 4292 Oct 18 12:16 About_us_Admission.doc
-rw-rw-r-- 1 sachin sachin 865 Oct 13 15:26 About_us_At_glance.doc
-rw-rw-r-- 1 sachin sachin 1816 Oct 13 16:11 About_us_Principle.doc
-rw-rw-r-- 1 sachin sachin 1775 Oct 13 15:59 About_us_Vission_mission.doc
-rw-rw-r-- 1 sachin sachin 1970 Oct 13 16:41 Academic_Middle_school.doc
-rw-rw-r-- 1 sachin sachin 772 Oct 16 16:07 academics_High_School.doc
-rw-rw-r-- 1 sachin sachin 648 Oct 16 13:34 academics_pre_primary.doc
-rw-rw-r-- 1 sachin sachin 708 Oct 16 13:39 academics_primary.doc
-rwxrwxr-x 1 sachin sachin 8816 Nov 1 12:10 a.out
-rw-rw-r-- 1 sachin sachin 23956 Oct 23 18:14 Ass1.c++
-rw-rw-r-- 1 sachin sachin 342 Oct 23 22:13 Ass2.doc
drwxrwxr-x 2 sachin sachin 4096 Oct 19 10:45 Backtracking
drwxrwxr-x 3 sachin sachin 4096 Sep 23 20:09 BeautifulSoup
drwxrwxr-x 2 sachin sachin 4096 Nov 2 00:18 CL_1
drwxrwxr-x 2 sachin sachin 4096 Oct 23 20:16 Code
drwxr-xr-x 2 sachin sachin 4096 Nov 15 12:05 Desktop
-rw-rw-r-- 1 sachin sachin 0 Oct 13 23:12 doc
drwxr-xr-x 4 sachin sachin 4096 Nov 6 21:18 Documents
drwxr-xr-x 27 sachin sachin 12288 Nov 17 13:23 Downloads
-rw-r--r-- 1 sachin sachin 8980 Sep 19 23:58 examples.desktop
একটি সংক্ষিপ্ত সমাধান, যা আপনি যদি কমান্ডটি ব্যর্থ না হওয়া পর্যন্ত বারবার চালাতে চান তবে বিশেষভাবে কার্যকর এবং আপনাকে সমস্ত আউটপুট দেখতে দেয়।
while ls -l; do
sleep 5
done