লিনাক্সে স্বয়ংক্রিয়ভাবে পুনরাবৃত্তি কমান্ড


303

লিনাক্স কমান্ড লাইনে প্রতিটি এন কমান্ডের পুনরাবৃত্তি করা সম্ভব? সেকেন্ডে ?

বলুন, আমার আমদানি চলছে, এবং করছি

ls -l

ফাইলের আকার বাড়ছে কিনা তা পরীক্ষা করতে। আমি স্বয়ংক্রিয়ভাবে এই পুনরাবৃত্তি করতে একটি আদেশ পেতে চাই।

উত্তর:


541

প্রতি 5 সেকেন্ডে দেখুন ...

watch -n 5 ls -l

আপনি যদি পরিবর্তনের ভিজ্যুয়াল কনফার্মেশন --differencesপেতে চান তবে এর আগে সংযোজন করুনls কমান্ডের ।

ওএসএক্স ম্যান পৃষ্ঠা অনুসারে, রয়েছে

--Cumulative বিকল্পটি "স্টিকি" হাইলাইট করে তোলে, যা পরিবর্তিত সমস্ত অবস্থানের চলমান প্রদর্শন উপস্থাপন করে। -T বা --no-শিরোনাম বিকল্পটি প্রদর্শনের শীর্ষে অন্তর, কমান্ড এবং বর্তমান সময়ের সাথে নীচের ফাঁকা রেখাটি প্রদর্শন করে শিরোনাম বন্ধ করে দেয়।

লিনাক্স / ইউনিক্স ম্যান পৃষ্ঠাটি এখানে পাওয়া যাবে


4
চমৎকার - কর্ড কমান্ড লাইনে ফলাফল সংযোজন না করায় কর্ণধার
মার্টি ওয়ালেস

1
পরিবর্তনের হাইলাইট করতে দেয় এমন উত্তরের উত্তর যুক্ত করেছে
রাককোড

3
মনে রাখবেন যে বিশেষ ক্যারেক্টারগুলি আপনাকে পালাতে হবে যা আপনি যে কমান্ডটি দেখছেন তার অংশ, উদাহরণস্বরূপ: watch mysql dbname -e \"show processlist\;\"
pfrenssen

11
brew install watch
জোশ উঙ্গার

1
ঘড়ি ম্যাক ওএস এক্স 10.10
জোও নুনস

118
while true; do
    sleep 5
    ls -l
done

10
watchএছাড়াও পর্দা সাফ করার দুর্ভাগ্যজনক পার্শ্ব প্রতিক্রিয়া রয়েছে, তাই কখনও কখনও লুপটি কার্যকর হয়। কোনটি ব্যবহার করবেন তা আউটপুটটির পছন্দসই বিন্যাসের উপর নির্ভর করে।
উইলিয়াম পার্সেল

আমি সাধারণত লুপটি করব, তবে এটি একটি লাইনে করব। ঘড়ির চেয়ে আরও ভাল দেখাচ্ছে, যদিও আমাকে এটিতে যেতে হবে।
ডন ব্রানসন

1
@ মার্টিওয়েলেস এটি কমান্ড লাইন (যখন লুপ) দিয়ে করা যায়।
কীজার

--differencesএগুলি হাইলাইট করার জন্য আপনি ব্যবহার করতে পারেন (আপনি যদি টার্মিনালের
পুনর্নির্মাণের

এই চেয়ে ভাল watch। আপনি প্রতিটি অনুরোধে এলোমেলো সংখ্যা উত্পন্ন করতে চান যখন দেখুন উদাহরণস্বরূপ কাজ করে না watch -n 1 echo ${RANDOM}। এলোমেলো কেবল একবার কল হবে।
মার্সিন

92

"ঘড়ি" ব্যাসিবক্সে একটি সেকেন্ডের ভগ্নাংশের অনুমতি দেয় না, যখন "ঘুম" দেয়। যদি এটি আপনার পক্ষে গুরুত্বপূর্ণ হয় তবে এটি ব্যবহার করে দেখুন:

while true; do ls -l; sleep .5; done

1
আপনার যদি কোথাও আউটপুটটি পাইপ করা প্রয়োজন (বার আইন্ট রিকভার্সের মতো)
স্টিফেন স্মিথ

1
ধন্যবাদ। এটি ব্যস্তবক্স কনসোলগুলির জন্য কাজ করে যাগুলির দেখার কমান্ড নেই। আমি এটি আমার সিস্টেমের আপটাইম পরিমাপ করতে ব্যবহার করেছি: সত্য হলেও; আপটাইম কর; ঘুম 1; সম্পন্ন
সান্তিয়াগো ভিলাফুয়ের্তে

ব্যস্তবক্সের পুরানো সংস্করণে এফডাব্লুআইডাব্লু (v1.11.2) আমি আটকে আছি, কোনও ঘড়ি নেই, এবং ঘুম ভগ্নাংশ সমর্থন করে না। তবে আপনি ঘুম 1 সফলভাবে ব্যবহার করতে পারেন।
মুডবুম

সাইগউইনে এটি চালানোর জন্য এটি দুর্দান্ত উপায়
ব্র্যাডলি

34

sleepইতিমধ্যে ফিরে 0। যেমন, আমি ব্যবহার করছি:

while sleep 3 ; do ls -l ; done

এটি মিখাইলের দ্রবণের তুলনায় একটি সামান্য বিট ছোট। একটি সামান্য অসুবিধা হ'ল এটি প্রথমবারের জন্য টার্গেট কমান্ড চালানোর আগে ঘুমায়।


18

যদি কমান্ডটিতে কিছু বিশেষ অক্ষর থাকে যেমন পাইপ এবং কোটস থাকে, কমান্ডটি উদ্ধৃতি সহ প্যাড করা দরকার। উদাহরণস্বরূপ, পুনরাবৃত্তি করার জন্য ls -l | grep "txt", ওয়াচ কমান্ডটি হওয়া উচিত:

watch -n 5 'ls -l | grep "txt"'


পাইপযুক্ত এক্সপ্রেশনটিতে সঠিকভাবে কাজ করতে ঘড়ি পেতে আমার সমস্যা হয়েছিল, তবে এটি পড়ার পরে আমি এটি ঠিক করতে পারলাম :)
4'16

13

ক্রোন ছাড়াই নিয়মিত কমান্ড চালানো সম্ভব যখন আমরা সাথে থাকি 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 &


সর্বশেষ & শেষের বাইরে এবং কমান্ডটি লেখার মতো নয়, তবে স্ক্রিপ্টটিকে &: bash ./ while_check.sh & এর সাথে কল করা?
আরশ

@ আরঁশ: আমরা স্ক্রিপ্টটি চালাতে পারি / </ moment_check.sh & সুতরাং আমরা তত্ক্ষণাত্ প্রসেস আইডিটি পেতে পারি, যখন আমরা & স্ক্রিপ্ট যুক্ত করি এবং & এ ছাড়া স্ক্রিপ্টটি চালিত করি, আমরা কোনও প্রক্রিয়া আইডি পাইনি তবে এটি চলবে পটভূমি, আমি সম্পাদিত হিসাবে আমাদের স্ক্রিপ্ট বন্ধ করতে হবে প্রয়োজন হয় প্রক্রিয়া আইডি পেতে আমাদের পিএস কমান্ড প্রয়োজন।
রঞ্জিতকুমার টি

আপনি যদি চান, echo $!প্রতিটি পটভূমি প্রক্রিয়া চালু হওয়ার পরে আপনি স্ক্রিপ্টটি সংশোধন করতে পারেন - এটি পটভূমিতে চালু হওয়া শেষ শিশু প্রক্রিয়ার পিআইডি।
জোনাথন লেফলার

echo `date` শুধু লিখার জন্য একটি দরিদ্র এবং সামান্য বগি উপায় date। (ত্রুটির সাথে যুক্তির উদ্ধৃতি না দেওয়ার সাথে বাগটি করতে হবে echo)) এর অকেজো ব্যবহারওecho
ট্রিপলি


6

আপনি যদি "প্রবাহিত" এড়াতে চান, মানে আপনি কমান্ডটি কতটা এন এন সেকেন্ডের চেয়ে কম সময় নেয় তা বিবেচনা না করেই প্রতিটি এন সেকেন্ড কার্যকর করতে চায় (এখানে ধরে নেওয়া হয় যে এটি এন সেকেন্ডের চেয়ে কম সময় নেয়), এখানে কিছু বাশ রয়েছে যা প্রতি 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

ঘুম এখনও এক সেকেন্ডের সঠিক হওয়ায় এটি এখনও খানিকটা প্রবাহিত হতে পারে। ডেট কমান্ডের সৃজনশীল ব্যবহার করে আপনি এই নির্ভুলতার উন্নতি করতে পারেন।


ধন্যবাদ .. তবে আমার 2 টি প্রশ্ন আছে, 1- কোডটি কোথায় সংরক্ষণ করতে হবে? অন্য কথায়, কোন স্ক্রিপ্টে আমি সেই স্ক্রিপ্টটি যুক্ত ফাইলটি রেখে দেব? এটি এটি স্বয়ংক্রিয়ভাবে চালিত করে তোলে ?! 2- সেখানে আমার সমস্ত কোড টাইপ না করে কীভাবে পিএইচপি ফাইল (# কর কমান্ড) অন্তর্ভুক্ত করবেন?
হোসাম

1
আমি আপনাকে বাশ স্ক্রিপ্টগুলিতে কিছুটা গবেষণা করার পরামর্শ দিচ্ছি যাতে আপনি সেগুলি কীভাবে চালাতে হয় এবং এর বাইরে কীভাবে হয় তার মূল বিষয়গুলি বুঝতে পারেন।
এমকোট

4

আপনি যদি নির্দিষ্ট কিছু বার কিছু করতে চান তবে আপনি সর্বদা এটি করতে পারেন:

repeat 300 do my first command here && sleep 1.5

8
বাশ for x in {1..300} ; do ||break;sleep 1.5; done
ডু

4

আপনি নিম্নলিখিত চালাতে পারেন এবং শুধুমাত্র আকার ফিল্টার করতে পারেন। যদি আপনার ফাইলটি বলা হয় তবে somefilenameআপনি নিম্নলিখিতটি করতে পারেন

while :; do ls -lh | awk '/some*/{print $5}'; sleep 5; done

অনেক ধারণার মধ্যে একটি।


2

আরও সহজে ড্রিফ্ট কমাতে, ব্যবহার করুন:

while :; do sleep 1m & some-command; wait; done

লুপ স্ট্রাকচারটি চালানোর জন্য বাশের সময় এবং প্রকৃতপক্ষে সঞ্চালনের জন্য স্লাইড কমান্ডের কারণে অল্প পরিমাণে বামন থাকবে।

ইঙ্গিত: ':' 0 টি পর্যন্ত প্রত্যাশিত সত্য।


1
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

1

একটি সংক্ষিপ্ত সমাধান, যা আপনি যদি কমান্ডটি ব্যর্থ না হওয়া পর্যন্ত বারবার চালাতে চান তবে বিশেষভাবে কার্যকর এবং আপনাকে সমস্ত আউটপুট দেখতে দেয়।

while ls -l; do
    sleep 5
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.