Kā palaist vai atkārtot Linux komandu ik pēc X sekundēm uz visiem laikiem


Sistēmas administratoram bieži vien ir nepieciešams atkārtoti palaist komandu noteiktā laika periodā. Bieži vien šādus uzdevumus var viegli izpildīt, izmantojot vienkāršas cron komandas. Lielākajā daļā gadījumu tam vajadzētu darboties, taču īsākais periods, kurā jūs varat palaist cron komandu, ir ik pēc 1 minūtes. Ticiet vai nē, daudzos gadījumos tas notiek pārāk lēni.

Šajā apmācībā jūs iemācīsities vienkāršas skriptu veidošanas metodes, lai pēc noklusējuma ik pēc 3 sekundēm uzraudzītu vai sekotu konkrētai komandai nepārtraukti darbojošā stāvoklī, kas līdzīgs augšējai komandai (nepārtraukti pārrauga procesu un atmiņas izmantošanu).

Mēs neapstāsimies, lai apspriestu iemeslus, kāpēc jums tas būtu bieži jāizpilda. Es uzskatu, ka ikvienam tam ir dažādi iemesli ikdienas darbā vai pat mājās esošajos datoros un klēpjdatoros.

1. Izmantojiet pulksteņa komandu

Skatīties ir Linux komanda, kas ļauj periodiski izpildīt komandu vai programmu, kā arī parāda izvadi uz ekrāna. Tas nozīmē, ka jūs varēsiet redzēt programmas izvadi laikā. Pēc noklusējuma pulkstenis atkārtoti palaiž komandu/programmu ik pēc 2 sekundēm. Intervālu var viegli mainīt, lai tas atbilstu jūsu prasībām.

“Watch” ir ļoti ērti lietojams, lai to pārbaudītu, varat uzreiz aktivizēt Linux termināli un ierakstīt šādu komandu:

# watch free -m

Iepriekš minētā komanda pārbaudīs jūsu sistēmas brīvo atmiņu un ik pēc divām sekundēm atjauninās brīvās komandas rezultātus.

Kā redzams iepriekš minētajā izvadā, jums ir galvene, kurā parādīta informācija par atjaunināšanas intervālu (no kreisās uz labo), izpildāmo komandu un pašreizējo laiku. Ja vēlaties paslēpt šo galveni, varat izmantot opciju -t .

Nākamais loģiskais jautājums ir - kā mainīt izpildes intervālu. Šajā nolūkā varat izmantot opciju -n , kas norāda intervālu, ar kādu komanda tiks izpildīta. Šis intervāls tiek norādīts sekundēs. Pieņemsim, ka vēlaties palaist failu script.sh ik pēc 10 sekundēm, to varat izdarīt šādi:

# watch -n 10 script.sh

Ņemiet vērā, ka, izpildot komandu, kā parādīts iepriekš, jums būs cd jānokļūst direktorijā (uzziniet Learn 15 cd komandu piemērus), kur atrodas skripts, vai citādi norādiet pilnu ceļu uz šo skriptu.

Citas noderīgas skatīšanās komandas iespējas ir:

  1. -b - rada pīkstiena skaņu, ja komandas izeja nav nulle.
  2. -c - interpretē ANSI krāsu secības.
  3. -d - izceļ izmaiņas komandas izvadā.

Pieņemsim, ka vēlaties uzraudzīt reģistrētos lietotājus, servera darbības laiku un vidējās izejas slodzi nepārtraukti ik pēc dažām sekundēm, pēc tam izmantojiet šādu komandu, kā parādīts:

# watch uptime

Lai izietu no komandas, nospiediet CTRL + C .

Šeit komanda uptime darbosies un pēc noklusējuma ik pēc 2 sekundēm parādīs atjauninātos rezultātus.

Operētājsistēmā Linux kopējot failus no vienas vietas uz citu, izmantojot komandu cp , datu progress netiek parādīts, lai redzētu kopējamo datu progresu, varat izmantot watch komanda kopā ar du -s komandu, lai reāllaikā pārbaudītu diska lietojumu.

# cp ubuntu-15.10-desktop-amd64.iso /home/tecmint/ &
# watch -n 0.1 du -s /home/tecmint/ubuntu-15.10-desktop-amd64.iso 

Ja jūs domājat, ka iepriekšminētais process ir pārāk sarežģīts, lai to sasniegtu, iesaku jums izmantot komandu Advance copy, kas parāda datu progresu kopēšanas laikā.

2. Izmantojiet miega komandu

Miega režīmu bieži izmanto, lai atkļūdotu čaulas skriptus, taču tam ir arī daudzi citi noderīgi mērķi. Piemēram, kombinējot ar for vai while , jūs varat iegūt diezgan lieliskus rezultātus.

Ja jūs esat jauns skriptēšanas skripts, šeit varat pārbaudīt mūsu rokasgrāmatu par bash cilpām.

Gadījumā, ja pirmo reizi dzirdat komandu "sleep" , tā tiek izmantota, lai kaut ko aizkavētu uz noteiktu laiku. Skriptos varat to izmantot, lai norādītu skriptam izpildīt 1. komandu, pagaidīt 10 sekundes un pēc tam izpildīt 2. komandu.

Izmantojot iepriekš minētās cilpas, jūs varat pateikt bash izpildīt komandu, gulēt N sekundes un pēc tam vēlreiz palaist komandu.

Zemāk varat redzēt abu cilpu piemērus:

# for i in {1..10}; do echo -n "This is a test in loop $i "; date ; sleep 5; done

Iepriekš minētais viens līnijpārvadātājs palaidīs atbalss komandu un parādīs pašreizējo datumu, kopā 10 reizes, ar 5 sekunžu miegu starp izpildījumiem.

Šeit ir izejas paraugs:

This is a test in loop 1 Wed Feb 17 20:49:47 EET 2016
This is a test in loop 2 Wed Feb 17 20:49:52 EET 2016
This is a test in loop 3 Wed Feb 17 20:49:57 EET 2016
This is a test in loop 4 Wed Feb 17 20:50:02 EET 2016
This is a test in loop 5 Wed Feb 17 20:50:07 EET 2016
This is a test in loop 6 Wed Feb 17 20:50:12 EET 2016
This is a test in loop 7 Wed Feb 17 20:50:17 EET 2016
This is a test in loop 8 Wed Feb 17 20:50:22 EET 2016
This is a test in loop 9 Wed Feb 17 20:50:27 EET 2016
This is a test in loop 10 Wed Feb 17 20:50:32 EET 2016

Jūs varat mainīt atbalss un datuma komandas ar savām komandām vai skriptu un mainīt miega intervālu atbilstoši savām vajadzībām.

# while true; do echo -n "This is a test of while loop";date ; sleep 5; done

Šeit ir izvades paraugs:

This is a test of while loopWed Feb 17 20:52:32 EET 2016
This is a test of while loopWed Feb 17 20:52:37 EET 2016
This is a test of while loopWed Feb 17 20:52:42 EET 2016
This is a test of while loopWed Feb 17 20:52:47 EET 2016
This is a test of while loopWed Feb 17 20:52:52 EET 2016
This is a test of while loopWed Feb 17 20:52:57 EET 2016

Iepriekš minētā komanda darbosies, līdz lietotājs to vai nu nokauj, vai pārtrauc. Tas var būt noderīgi, ja jums ir nepieciešams palaist komandu, kas darbojas fonā, un jūs nevēlaties rēķināties ar cron.

Svarīgi: lietojot iepriekš minētās metodes, ļoti ieteicams pirms nākamās izpildes iestatīt pietiekami ilgu intervālu, lai komandai būtu pietiekami daudz laika, lai pabeigtu darbību.

Secinājums

Šīs apmācības paraugi ir noderīgi, taču tie nav domāti, lai pilnībā aizstātu cron lietderību. Jūsu ziņā ir atrast, kurš no jums darbojas labāk, bet, ja mums ir jānošķir abu metožu izmantošana, es teiktu tā:

  1. Izmantojiet cron, kad jums periodiski jāpalaiž komandas arī pēc sistēmas atkārtotas palaišanas.
  2. Izmantojiet šajā apmācībā paskaidrotās metodes programmām/skriptiem, kas paredzēti darbībai pašreizējā lietotāja sesijā.

Kā vienmēr, ja jums ir kādi jautājumi vai komentāri, nevilcinieties tos iesniegt zemāk esošajā komentāru sadaļā.