ZVANS

Ir tie, kas lasa šīs ziņas pirms jums.
Abonējiet, lai saņemtu jaunus rakstus.
E-pasts
Vārds
Uzvārds
Kā jūs vēlaties lasīt Zvanu?
Nav surogātpasta

Iepriekšējo reizi mēs runājām par darbu ar ievades, izvades un kļūdu straumēm bash skriptos, failu deskriptoros un straumes novirzīšanā. Tagad jūs jau zināt pietiekami daudz, lai uzrakstītu kaut ko savu. Šajā bash apguves posmā jums var rasties jautājumi par to, kā pārvaldīt skriptus un automatizēt to palaišanu.

Līdz šim mēs esam ierakstījuši skriptu nosaukumus komandrindā un nospieduši taustiņu Enter, kas izraisīja programmu tūlītēju palaišanu, taču tas nav vienīgais veids, kā izsaukt skriptus. Šodien mēs runāsim par to, kā skripts var darboties ar Linux signāliem, par dažādām pieejām skriptu palaišanai un to pārvaldīšanai darbības laikā.

Linux signāli

Operētājsistēmā Linux ir vairāk nekā trīs desmiti signālu, ko ģenerē sistēma vai lietojumprogrammas. Šeit ir saraksts ar visbiežāk izmantotajiem, kas noteikti noderēs, izstrādājot komandrindas skriptus.
Signāla kods
Vārds
Apraksts
1
IZGRIEZT
Termināļa slēgšana
2
SIGINT
Signāls, lai apturētu lietotāja veikto procesu no termināļa (CTRL + C)
3
SIGQUIT
Signāls, lai apturētu lietotāja procesu no termināļa (CTRL + \) ar atmiņas iztukšošanu
9
SIGKILL
Beznosacījuma procesa pārtraukšana
15
SIGTERM
Procesa pārtraukšanas pieprasījuma signāls
17
SIGSTOP
Piespiediet procesa apturēšanu, bet nepārtraukšanu
18
SIGTSTP
Procesa apturēšana no termināļa (CTRL+Z), bet netiek izslēgta
19
SIGCONT
Turpināt iepriekš apturēta procesa izpildi

Ja bash apvalks saņem SIGHUP signālu, kad aizverat termināli, tas iziet. Pirms iziešanas tas nosūta SIGHUP signālu visiem tajā esošajiem procesiem, tostarp skriptiem.

SIGINT signāls īslaicīgi aptur darbību. Linux kodols pārtrauc procesora laika piešķiršanu apvalkam. Kad tas notiek, apvalks informē procesus, nosūtot tiem SIGINT signālu.

Bash skripti nekontrolē šos signālus, taču tie var tos atpazīt un izpildīt noteiktas komandas, lai sagatavotu skriptu signālu radītajām sekām.

Signālu sūtīšana skriptiem

Bash apvalks ļauj nosūtīt signālus skriptiem, izmantojot īsinājumtaustiņus. Tas ir ļoti noderīgi, ja jums ir īslaicīgi jāaptur skripts vai jāpārtrauc tā darbība.

Procesa pārtraukšana

CTRL + C taustiņu kombinācija ģenerē SIGINT signālu un nosūta to visiem procesiem, kas darbojas čaulā, izraisot to pārtraukšanu.

Palaidīsim šādu komandu čaulā:

100 $ gulēt
Pēc tam mēs pabeigsim darbu ar taustiņu kombināciju CTRL + C.


Pārtrauciet procesu, izmantojot tastatūru

Procesa īslaicīga apturēšana

CTRL + Z taustiņu kombinācija ģenerē SIGTSTP signālu, kas aptur procesu, bet neaptur to. Šāds process paliek atmiņā un tā darbu var atsākt. Izpildīsim komandu čaulā:

100 $ gulēt
Un īslaicīgi pārtrauciet to ar taustiņu kombināciju CTRL + Z.


Pauzējiet procesu

Skaitlis kvadrātiekavās ir darba numurs, ko čaula piešķir procesam. Apvalks tajā notiekošos procesus apstrādā kā darbus ar unikāliem numuriem. Pirmajam procesam tiek piešķirts numurs 1, otrajam - 2 un tā tālāk.

Ja apturēsit darbu, kas saistīts ar čaulu, un mēģināsiet to iziet, bash izdos brīdinājumu.

Varat skatīt apturētos darbus, izmantojot šādu komandu:

Ps – l


Uzdevumu saraksts

Kolonnā S, kurā tiek parādīts procesa statuss, tiek rādīts T apturētajiem procesiem. Tas norāda, ka komanda ir apturēta vai atrodas izsekošanas stāvoklī.

Ja jums ir jāpārtrauc apturēts process, varat izmantot komandu kill. Jūs varat izlasīt sīkāku informāciju par to.

Viņas zvans izskatās šādi:

Nogalināt procesa ID

Signāla pārtveršana

Lai iespējotu Linux signāla izsekošanu skriptā, izmantojiet komandu trap. Ja skripts saņem signālu, kas norādīts, izsaucot šo komandu, tas to apstrādā neatkarīgi, savukārt apvalks šādu signālu neapstrādās.

Trap komanda ļauj skriptam reaģēt uz signāliem, kurus citādi apstrādātu apvalks bez tā iejaukšanās.

Apskatīsim piemēru, kas parāda, kā trap komanda norāda izpildāmo kodu un signālu sarakstu, kas atdalīti ar atstarpēm, kurus mēs vēlamies pārtvert. Šajā gadījumā tas ir tikai viens signāls:

#!/bin/bash trap "echo " Trapped Ctrl-C"" SIGINT echo Šis ir testa skripts count=1 kamēr [ $count -le 10 ] veic atbalsi "Cilpa #$count" sleep 1 count=$(($ skaitīt + 1)) darīts
Šajā piemērā izmantotā trap komanda izdrukā īsziņu ikreiz, kad tā saskaras ar SIGINT signālu, ko var ģenerēt, nospiežot tastatūras taustiņu kombināciju Ctrl + C.


Signāla pārtveršana

Katru reizi, kad nospiežat taustiņu kombināciju CTRL + C, skripts izpilda atbalss komandu, kas norādīta, izsaucot trace, nevis ļauj apvalkam to pārtraukt.

Varat pārtvert skripta izejas signālu, izmantojot EXIT signāla nosaukumu, izsaucot trap komandu:

#!/bin/bash trap "echo Goodbye..." EXIT count=1 while [ $count -le 5 ] do echo "Cilpa #$count" sleep 1 count=$(($count + 1)) paveikts


Skripta izejas signāla pārtveršana

Kad skripts iziet normāli vai SIGINT signāla dēļ, apvalks pārtvers un izpildīs atbalss komandu.

Pārtverto signālu pārveidošana un pārtveršanas atcelšana

Lai modificētu skripta pārtvertos signālus, varat palaist trap komandu ar jauniem parametriem:

#!/bin/bash trap "echo "Ctrl-C ir notverts."" SIGINT count=1 while [ $count -le 5 ] do echo "Cilpa #$count" sleep 1 count=$(($count + 1) ) done trap "echo "Es modificēju slazdu!"" SIGINT count=1 while [ $count -le 5 ] do echo "Second Loop #$count" sleep 1 count=$(($count + 1)) done


Signāla pārtveršanas modifikācija

Pēc modifikācijas signāli tiks apstrādāti jaunā veidā.

Signāla pārtveršanu var arī atcelt, vienkārši izpildot trap komandu, nododot tai dubulto domuzīmi un signāla nosaukumu:

#!/bin/bash trap "echo "Ctrl-C ir notverts."" SIGINT count=1 while [ $count -le 5 ] do echo "Cilpa #$count" sleep 1 count=$(($count + 1) ) izdarīts slazds -- SIGINT atbalss "Es tikko noņēmu slazdu" count=1 while [ $count -le 5 ] do echo "Second Loop #$count" sleep 1 count=$(($count + 1)) darīts
Ja skripts saņem signālu pirms slazdošanas atcelšanas, tas to apstrādās, kā norādīts pašreizējā slazdošanas komandā. Palaidīsim skriptu:

$ ./myscript
Un nospiediet tastatūras taustiņu kombināciju CTRL + C.


Signāls pārtverts pirms pārtveršanas tika atcelts.

Pirmā CTRL + C nospiešana notika skripta izpildes laikā, kad bija spēkā signāla pārtveršana, tāpēc skripts izpildīja signālam piešķirto atbalss komandu. Pēc tam, kad izpilde sasniedza unhook komandu, komanda CTRL + C darbojās kā parasti, pārtraucot skriptu.

Palaiž komandrindas skriptus fonā

Dažreiz bash skriptiem ir nepieciešams ilgs laiks, lai pabeigtu uzdevumu. Tomēr, iespējams, jums būs jāspēj normāli strādāt komandrindā, negaidot skripta pabeigšanu. Tas nav tik grūti īstenot.

Ja esat redzējis ps komandas izvadīto procesu sarakstu, iespējams, esat pamanījis procesus, kas darbojas fonā un nav saistīti ar termināli.
Uzrakstīsim šādu skriptu:

#!/bin/bash count=1 kamēr [ $count -le 10 ] gulēt 1 count=$(($count + 1)) pabeigts
Palaidīsim to, norādot simbolu & (&) aiz nosaukuma:

$ ./myscipt &
Tas liks tam darboties kā fona procesam.


Skripta izpilde fonā

Skripts tiks palaists fona procesā, tā identifikators tiks parādīts terminālī, un, kad tā izpilde būs pabeigta, jūs redzēsit ziņojumu par to.

Ņemiet vērā: lai gan skripts darbojas fonā, tas turpina izmantot termināli, lai izvadītu ziņojumus uz STDOUT un STDERR, kas nozīmē, ka tā izvadītais teksts vai kļūdu ziņojumi būs redzami terminālī.


Procesu saraksts

Izmantojot šo pieeju, izejot no termināļa, tiks aizvērts arī skripts, kas darbojas fonā.

Ko darīt, ja vēlaties, lai skripts turpinātu darboties pēc termināļa aizvēršanas?

Tiek izpildīti skripti, kas neiziet, aizverot termināli

Skriptus var izpildīt fona procesos pat pēc termināļa sesijas iziešanas. Lai to izdarītu, varat izmantot komandu nohup. Šī komanda ļauj palaist programmu, bloķējot procesam nosūtītos SIGHUP signālus. Rezultātā process tiks izpildīts pat tad, kad iziesit no termināļa, kurā tas tika palaists.

Palaižot skriptu, izmantosim šo paņēmienu:

Nohup ./myscript &
Tas tiks izvadīts terminālī.


Komanda nohup

Komanda nohup atvieno procesu no termināļa. Tas nozīmē, ka process zaudēs atsauces uz STDOUT un STDERR. Lai nezaudētu skripta izvadītos datus, nohup automātiski novirza ziņojumus, kas nonāk STDOUT un STDERR, uz failu nohup.out.

Ņemiet vērā: ja palaižat vairākus skriptus no viena direktorija, to izvade nonāks vienā nohup.out failā.

Skatīt uzdevumus

Darba komanda ļauj skatīt pašreizējos darbus, kas darbojas čaulā. Uzrakstīsim šādu skriptu:

#!/bin/bash count=1, kamēr [ $count -le 10 ] veic atbalsi "Cilpa #$count" sleep 10 count=$(($count + 1)) pabeigts
Palaidīsim to:

$ ./myscript
Un īslaicīgi pārtrauciet to ar taustiņu kombināciju CTRL + Z.


Skripta izpilde un pauze

Palaidīsim to pašu skriptu fonā, vienlaikus novirzot skripta izvadi uz failu, lai tas neko nerādītu ekrānā:

$ ./myscript > outfile &
Tagad, izpildot komandu jobs, mēs redzēsim informāciju gan par apturēto skriptu, gan par to, kas darbojas fonā.


Informācijas iegūšana par skriptiem

Slēdzis -l, izsaucot komandu jobs, norāda, ka mums ir nepieciešama informācija par procesa ID.

Apturēto darbu atsākšana

Lai restartētu skriptu fonā, varat izmantot komandu bg.

Palaidīsim skriptu:

$ ./myscript
Nospiediet CTRL + Z, kas īslaicīgi apturēs tā izpildi. Izpildīsim šādu komandu:

$bg


bg komanda

Skripts tagad darbojas fonā.

Ja jums ir vairāki apturēti darbi, varat nodot darba numuru komandai bg, lai restartētu noteiktu darbu.

Lai normāli restartētu darbu, izmantojiet komandu fg:

Plāno palaist skriptus

Linux nodrošina dažus veidus, kā noteiktā laikā palaist bash skriptus. Tie ir at command un cron darba plānotājs.

Komanda at izskatās šādi:

Laikā [-f faila nosaukums]
Šī komanda atpazīst daudzus laika formātus.

  • Standarta, norādot stundas un minūtes, piemēram - 10:15.
  • Izmantojot AM/PM indikatorus, pirms vai pēc pusdienlaika, piemēram - 22:15.
  • Izmantojot īpašus nosaukumus, piemēram, tagad, pusdienlaiks, pusnakts.
Papildus tam, ka komandai at var norādīt laiku, kurā jāpalaiž darbs, tā var arī nodot datumu, izmantojot kādu no tās atbalstītajiem formātiem.
  • Standarta datuma formāts, kurā datums ir rakstīts, izmantojot šablonus MMDDGG, MM/DD/GG vai DD.MM.GG.
  • Datuma teksta attēlojums, piemēram, 4. jūlijs vai 25. decembris, savukārt gadu var norādīt vai iztikt bez tā.
  • Ieraksts kā tagad + 25 minūtes .
  • Ieraksta skats rīt 22:15 .
  • Ieraksta veids 10:15 + 7 dienas.
Neiedziļināsimies šajā tēmā, apskatīsim vienkāršu komandas lietošanas gadījumu:

$ at -f ./myscript tagad


Darbu plānošana, izmantojot komandu at

Slēdzis -M, zvanot uz numuru, tiek izmantots, lai nosūtītu to, ko skripts izvada pa e-pastu, ja sistēma ir konfigurēta tā. Ja e-pasta sūtīšana nav iespējama, šis taustiņš vienkārši nomāc izvadi.

Lai skatītu to darbu sarakstu, kas gaida izpildi, varat izmantot komandu atq:


Neizpildīto uzdevumu saraksts

Neapstiprinātu darbu dzēšana

Komanda atrm ļauj izdzēst neapstiprinātu darbu. Zvanot uz to, norādiet uzdevuma numuru:

$atrm 18


Darba dzēšana

Palaidiet skriptus pēc grafika

Skriptu vienreizējas izpildes plānošana, izmantojot komandu at, var atvieglot dzīvi daudzās situācijās. Bet ko darīt, ja jums ir nepieciešams, lai skripts tiktu izpildīts vienā un tajā pašā laikā katru dienu vai reizi nedēļā, vai reizi mēnesī?

Linux ir crontab utilīta, kas ļauj ieplānot skriptus, kas regulāri jāpalaiž.

Crontab darbojas fonā un, pamatojoties uz datiem tā sauktajās cron tabulās, izpilda ieplānotos darbus.

Lai skatītu esošu cron darba tabulu, izmantojiet šo komandu:

$ crontab –l
Plānojot skripta izpildi pēc grafika, crontab pieņem datus par to, kad darbs ir jāizpilda šādā formātā:

Minūte, stunda, mēneša diena, mēnesis, nedēļas diena.
Piemēram, ja vēlaties, lai noteikts skripts ar nosaukumu komandu tiktu izpildīts katru dienu pulksten 10:30, tas atbildīs šādam ierakstam uzdevumu tabulā:

30 10 * * * komanda
Šeit aizstājējzīme “*”, kas tiek izmantota mēneša, mēneša un nedēļas dienas laukos, norāda, ka cron komandai ir jāpalaiž katra mēneša katru dienu pulksten 10:30.

Ja, piemēram, vēlaties, lai skripts tiktu palaists katru pirmdienu plkst. 16:30, uzdevumu tabulā būs jāizveido šāds ieraksts:

30 16 * * 1 komanda
Nedēļas dienu numerācija sākas no 0, 0 nozīmē svētdienu, 6 nozīmē sestdienu. Šeit ir vēl viens piemērs. Šeit komanda tiks izpildīta katra mēneša pirmajā dienā pulksten 12.00.

00 12 1 * * komandu
Mēneši ir numurēti, sākot no 1.
Lai tabulai pievienotu ierakstu, jums ir jāizsauc crontab ar slēdzi -e:

Crontab –e
Pēc tam varat ievadīt grafika ģenerēšanas komandas:

30 10 * * * /home/likegeeks/Desktop/myscript
Pateicoties šai komandai, skripts tiks izsaukts katru dienu pulksten 10:30. Ja rodas kļūda “Resurss īslaicīgi nav pieejams”, palaidiet tālāk norādīto komandu kā root:

$ rm -f /var/run/crond.pid
Jūs varat organizēt periodisku skriptu palaišanu, izmantojot cron, vēl vienkāršāk, izmantojot vairākus īpašus direktorijus:

/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
Ievietojot skripta failu vienā no tiem, tas tiks palaists attiecīgi katru stundu, katru dienu, nedēļu vai mēnesi.

Palaidiet skriptus pieteikšanās un čaulas startēšanas laikā

Varat automatizēt skriptu palaišanu, pamatojoties uz dažādiem notikumiem, piemēram, lietotāja pieteikšanos vai čaulas palaišanu. Varat lasīt par failiem, kas tiek apstrādāti šādās situācijās. Piemēram, šie ir šādi faili:

$HOME/.bash_profile $HOME/.bash_login $HOME/.profile
Lai palaistu skriptu pieteikšanās laikā, ievietojiet tā izsaukumu failā .bash_profile.

Kā ar skriptu palaišanu, atverot termināli? .bashrc fails palīdzēs to sakārtot.

Rezultāti

Šodien mēs aplūkojām jautājumus, kas saistīti ar skriptu dzīves cikla pārvaldību, runājām par to, kā palaist skriptus fonā, kā plānot to izpildi. Nākamreiz lasiet par funkcijām bash skriptos un bibliotēku izstrādē.

Cienījamie lasītāji! Vai izmantojat rīkus, lai ieplānotu komandrindas skriptu izpildi pēc grafika? Ja jā, lūdzu, pastāstiet mums par tiem.

Būtībā operētājsistēma sastāv no kodola un milzīga programmu komplekta, kas paredzētas dažādu uzdevumu veikšanai, sistēmas uzturēšanai un lietotāja vajadzību apmierināšanai. Gandrīz visa mijiedarbība starp lietotāju un operētājsistēmu tiek veikta, izmantojot programmas. Tāpēc iesācējiem ir svarīgi saprast, kā palaist programmu operētājsistēmā Linux, kas notiek startēšanas laikā un kādas ir palaišanas metodes.

Pirms mēs pārejam pie programmu palaišanas, vispirms ir jāsaprot, kas ir programma. Operētājsistēmā Linux programmas atšķiras no citiem failiem tikai ar to, ka tām ir iestatīts izpildāmais karodziņš. Sīkāk par to jau rakstīju rakstā, tāpēc neatkārtošos.

Visas programmas var iedalīt vairākos veidos:

  • Binārās programmas- satur instrukcijas procesoram, kas ir gatavas izpildei, lielākā daļa programmu ir šādā formātā, tās ir ātras un sistēma tos izpilda nekavējoties;
  • Baitkoda programmas- tās vairs nav procesora instrukcijas, bet gan konkrētas virtuālās mašīnas instrukcijas, kas tās var izpildīt bez virtuālās mašīnas, šādas komandas nevar izpildīt. Šādas programmas patērē vairāk resursu, bet ir arī diezgan ātras, to priekšrocība ir tā, ka tās var izpildīt bez izmaiņām visur, kur var darboties virtuālā mašīna. Šādas programmas ietver Java programmas.
  • Skriptu programmas- šīs programmas sastāv no komandu kopas vienkāršā tekstā, kuras izpilda īpašs tulks. Šādas programmas ir lēnākas, taču tās ir vieglāk izstrādājamas un to kodu var viegli un ātri mainīt.

Tagad pāriesim pie programmu palaišanas.

Programmu palaišana terminālī

Sākotnēji Unix un Linux operētājsistēmām nebija grafiskā interfeisa, tāpēc programmas tika palaistas, izmantojot komandas no termināļa. Tagad tas ir arī iespējams, un to diezgan aktīvi izmanto pieredzējuši lietotāji. Programmas palaišanas sintakse izskatās šādi:

/ceļš/uz/failu/programmu iespējas

Parametri tiek norādīti tikai tad, kad tie ir nepieciešami, bet apvalkam vienmēr ir jāzina pilns ceļš uz programmu. Viss pēc programmas nosaukuma un atstarpes ir parametri. Droši vien jau esat pamanījuši, ka, izpildot programmas, mēs parasti nenorādam pilnu ceļu. Tas būtu ļoti ilgi un neērti.

Izstrādātāji ir nākuši klajā ar risinājumu. Tika izveidots PATH mainīgais, kurā tiek saglabāti visi ceļi uz mapēm, kurās parasti atrodas programmas - /bin, /sbin, /usr/bin, /usr/sbin un tā tālāk. Tās saturu var apskatīt ar komandu:

Ievadot programmas nosaukumu, sistēma meklē izpildāmo failu ar šādu nosaukumu visās mapēs no PATH, un, ja tā to atrod, tā to izpilda. Ja šāda faila nav, tiek parādīts ziņojums “komanda nav atrasta”. Tādējādi, lai palaistu kādu no sistēmas programmām, vienkārši ierakstiet tās izpildāmā faila nosaukumu, piemēram:

Un jūs varat nodot parametrus pēc atstarpes:

Ja programma nav šajos direktorijos, jums jānorāda pilns ceļš uz to:

/usr/local/bin/ls1

Ja vēlaties palaist programmu caur ubuntu termināli, kas atrodas pašreizējā mapē, situācija būs nedaudz atšķirīga. Sistēma meklē tikai mainīgā PATH mapes, tā neveic meklēšanu pašreizējā direktorijā. Tāpēc, ierakstot izpildāmā faila nosaukumu, tiks parādīts kļūdas ziņojums. Jums ir jānorāda pilns ceļš, kā jūs atceraties, ka tas būs./:

Dažreiz kļūst nepieciešams pārsūtīt kādu īpašu . Piemēram, mainīgais EDITOR norāda, kurš teksta redaktors ir jāizmanto pēc noklusējuma. Varat norādīt mainīgā nosaukumu un tā vērtību pirms komandas nosaukuma, izmantojot sintaksi:

mainīgā_nosaukums = komanda vērtība

Piemēram:

EDITOR=nano visudo

Pēc noklusējuma šī komanda atver iestatījumus Vim redaktorā, bet ar šo vides mainīgo iestatījumi tiks atvērti nano redaktorā.

Programmu palaišana kā citam lietotājam

Jūs jau zināt, kā palaist programmu Linux terminālī, bet kā ir ar citiem lietotājiem? Operētājsistēmā Windows ir diezgan izplatīta parādība, ka programmas tiek darbinātas kā administratoram, lai programma varētu iegūt vairāk piekļuves tiesību sistēmā. Operētājsistēmā Linux šim nolūkam tiek izmantota utilīta sudo. Viņas vārdu var atšifrēt kā s ragana u ser darīt- mainiet lietotāju un izpildiet. Pēc noklusējuma utilīta palaiž komandu kā saknes superlietotāju:

sudo komanda
sudo whoami

Bet, izmantojot opciju -u, varat palaist programmu kā jebkurš lietotājs, kas ir pieteicies sistēmā:

sudo -u lietotājvārda komanda
sudo -u postgres whoami

Komanda whoami (kas es esmu) parāda pašreizējā lietotāja vārdu.

Kā palaist programmu fonā

Dažkārt rodas nepieciešamība terminālī palaist kādu ilgstoši darbojošos programmu, lai tā netraucētu turpmākajam darbam. Lai to izdarītu, varat izmantot programmas palaišanu fonā operētājsistēmā Linux:

programmas_nosaukums &

Piemēram:

dd if=/dev/nulle no=~/failu skaits=100000 &

Sistēma izvadīs PID — programmas unikālo identifikatoru, ko pēc tam varat izmantot, lai to aizvērtu:

Kā palaist skriptu operētājsistēmā Linux

Mēs jau teicām, ka programmas ir sadalītas binārajās un interpretētajās. Iepriekš mēs runājām tikai par binārajām programmām. Lai palaistu tulkotās programmas, jums ir nepieciešams tieši tulks, piemēram, programmās, kas rakstītas tādās valodās kā Java, Python, Perl, Ruby, PHP, NodeJS un daudzās citās. Šādas programmas palaišanas sintakse ir atšķirīga:

tulks /ceļš/uz/failu/programmu iespējas

Dažādi tulki uzvedas atšķirīgi, tāpēc labāk nekavējoties norādīt pilnu ceļu uz programmu. Python parasti paņem skriptus no pašreizējās mapes, nenorādot pilnu ceļu:

python hellowrld.py

Un Java programmas ir jāpalaiž šādi:

java -jar programma.jar

Interpretētajiem programmas failiem izpildāmības karodziņš nav obligāts, jo tie tiek nodoti kā parametrs galvenajai programmai. Izņēmums ir tikai Bash skripti. Varat palaist skriptu ar tulku:

Vai vienkārši ierakstiet ceļu uz skriptu:

Apvalks pati nosaka savus skriptus pēc izpildāmības karoga un izpilda tos. Ja izpildāmības karodziņš nav iestatīts, jums tas jāpievieno:

sudo chmod u+x ./script.sh

Tāpēc lielākajai daļai interpretēto programmu ir izveidoti vienkārši sh skripti, kurus var ātri palaist.

Linux programmu palaišana GUI

Daudz ērtāk ir palaist programmas, izmantojot grafisko interfeisu. Ja šādā veidā nav iespējams palaist konsoles programmas, tad ir visu grafisko utilītu saīsnes, kuras varat atrast sistēmas galvenajā izvēlnē:

Turklāt programmu var palaist no failu pārvaldnieka, veicot dubultklikšķi uz peles, bet tad tai ir jāiestata izpildāmības karodziņš.

Skriptu palaišana GUI darbojas tieši tādā pašā veidā. Visas izvēlnes īsceļus varat atrast direktorijā /usr/share/applications/. Jebkuru programmu var palaist, veicot dubultklikšķi no šejienes. Bet apskatīsim, kas atrodas saīsnē, lai to izdarītu, atveriet to teksta redaktorā:


Cita starpā rindā Exec ir komanda, kas palaiž Linux programmu, veicot dubultklikšķi uz saīsnes. Varat izmantot kādu no esošajiem īsceļiem un izveidot savu, pamatojoties uz to. Tas ir vienkārši programmas nosaukums. Bet ir svarīgi atzīmēt, ka labāk ir norādīt pilnu ceļu tādās vietās kā saīsnes, skripti, cron un tā tālāk, jo tas samazinās kļūdu skaitu, jo jūs nevarat zināt, vai sistēma šajā gadījumā pārbauda PATH vai meklē programmu tikai pašreizējā direktorijā. Tagad jūs zināt visu par to, kā palaist programmu operētājsistēmā Linux.

secinājumus

Šajā rakstā mēs apskatījām, kā palaist programmu, izmantojot ubuntu termināli vai citos Linux izplatījumos. Lai gan šī tēma šķiet ļoti vienkārša, ir daži interesanti punkti, kas var būt noderīgi. Bet jūs jau zināt par tiem. Ja jums ir kādi jautājumi, jautājiet komentāros!

  1. Vai jums ir jāizpilda SQL vaicājums, kura rezultāts jāgaida vairākas stundas vai dienas?
  2. Vai jums ir jāpalaiž lietojumprogramma fonā?
  3. Vai jums ir jāpalaiž programma fonā un jāatgriežas pie tās?
  4. Vai izmantojat Linux konsoli un strādājat ar ssh?

Tad jums noteikti jāzina par ekrāns.

Ekrāna pamati

Ekrāns operētājsistēmā Linux- tie ir kā “Windows logi”, kurus var samazināt/paplašināt. Vienā logā var kaut ko darīt, piemēram, apskatīt fotogrāfijas. Bet, ja jums ir nepieciešams klausīties mūziku papildus fotoattēlu skatīšanai, jūs atvērsit jauns logā (explorer), dodieties uz mūzikas direktoriju un atveriet dziesmu audio programmā.

Runājot par Linux konsoli (īpaši, strādājot ar ssh), tad mums būs ārkārtīgi neērti darbināt dažādas lietojumprogrammas vienā konsolē. Vai, iespējams, otro operāciju nemaz nevarēs veikt, kamēr pirmā vēl turpinās savu darbu. Šis ir pirmais punkts. Otrs punkts ir tāds, ka jebkuras jūsu (klienta) kļūmes gadījumā pašreizējā darbība tiks pārtraukta. Pāris piemēri, kad, strādājot ar ssh, jums var būt nepieciešams ekrāns:

  • ja kopējat vai pārvietojat lielu failu daudzumu no viena direktorija uz citu
  • ja palaižat smagu sql vaicājumu
  • ja jums ir nepieciešams palaist programmu, kas "nolaupa" konsoli

Jūs droši vien būtu ļoti skumji, ja nejauši aizvērta termināļa vai strāvas pārsprieguma dēļ tiktu pārtraukts SQL vaicājums, kas jau bija darbojies vairāk nekā 10 stundas. Ekrāna gadījumā ekrāns darbojas serverī, pieprasījuma iniciators būs ekrāna objekts, un pieprasījums vairs netiks pārtraukts klienta problēmu dēļ. Ja savienojums tiek zaudēts, procesi neapstājas, bet turpina darboties, un jūs jebkurā laikā varat atgriezties pie tiem.

Darbs ar ekrānu

Par radīšanu ekrāns un sāciet ar to strādāt, komandrindā ierakstiet:

kur test1 ir patvaļīgs ekrāna objekta nosaukums, ērtības labad varat to saukt kā vien vēlaties.

Tas izveidos ekrānu zem nosaukuma tests1. Tagad varat veikt jebkuras ilgstošas ​​darbības. Piemēram, palaidiet sql vaicājumu:

Mysql -u ... izvēlieties * no ... atjaunināt ...

Jau šajā posmā, ja pazaudējat internetu, jūs nejauši aizverat termināļa cilni, dators tiks restartēts - jūs nezaudēsit datus un sql vaicājums netiks pārtraukts.

Lai izietu no ekrāna, nospiediet šādus taustiņus:

+ & — iziet no ekrāna. Pieprasījums turpinās darboties. Visi procesi, kas darbojas ekrānos, turpina darboties.

Lai atgrieztos savā ekrānā vai jebkurā citā ekrāna logā, varat skatīt visus pieejamos ekrānus:

ekrāns -r — izvēlieties un aktivizējiet vienu no ekrāniem.

Kad ekrāna sesija vairs nav nepieciešama, lai pilnībā beigtu ekrāna sesiju, aktivizējiet ekrānu, izmantojot taustiņu screen -r un noklikšķiniet tajā + vai drukas izeja .

Servera, kurā darbojas Linux, administrēšanu bieži pavada vairākas manipulācijas ar komandām termināļa logā. Šis ir pazīstams attēls tiem, kas administrē Linux serverus, un dažos gadījumos ir ērti palaist komandas fonā. To var labi izmantot praksē, un ir vērts atzīmēt iemeslus, kāpēc tas varētu būt noderīgi:
— Kad terminālis ir pārslogots ar ziņojumu gūzmu un nav iespējams paralēli veikt papildu darbības;
— Ja aizverat termināli, pašreizējais process un tā pakārtotie procesi apstājas;
Šīs problēmas var atrisināt vienkārši, mums ir pilnībā jāatdala darbības process no vadības termināļa.

Šajā rakstā mēs apskatīsim Linux noderīgo spēju palaist komandas fonā. Citiem vārdiem sakot, process, kuru palaižat, tiks izpildīts atsevišķi no vadības termināļa.

Kā palaist komandas vai procesus fonā
Ja process darbojas termināļa logā, varat to apturēt, izmantojot komandu Ctrl+Z, droši vien daudzi to zina un domās, nu ko. Un šeit ir tas, kas ir interesanti, tādējādi apturot procesu, mēs varam to turpināt fonā, lai to izdarītu, mums jāievada komanda

Pēc šīs komandas ievadīšanas process turpināsies, bet fonā. Lai skatītu visus procesus, kas darbojas fonā, varat ievadīt komandu

Apskatīsim vienkāršu piemēru, kā to var izmantot. Pieņemsim, ka mums ir , kas mums ir jāizsaiņo, bet mums nav laika gaidīt, un mēs vēlamies strādāt paralēli.

Fonā notiek arhīva izpakošana

$ tar -czf home.tar.gz .

Klikšķis Cntr+Z, pēc tam ievadiet komandas

$bg$darbs

Otrs veids ir komandas beigās pievienot &, kas liks sistēmai palaist komandu fonā.

$ tar -czf home.tar.gz . &$darbs

Šī metode ļauj procesiem darboties fonā, tomēr STDIN, STDOUT, STDERR joprojām ir savienoti ar termināli. Tagad nodrošināsim, ka process darbojas pat tad, kad terminālis ir aizvērts.

Procesa izpilde pēc termināļa loga aizvēršanas
Lai process turpinātu darboties pat pēc termināļa loga aizvēršanas, mēs varam izmantot komandu atteikties. Tas “atslēgs” procesu no termināļa loga čaulas, pēc kura tas tiks izpildīts pat pēc konsoles loga aizvēršanas.
Apskatīsim standarta komandas izmantošanas piemēru rsync, mēģināsim to izpildīt fonā un atsaistīt procesu no termināļa.

$ sudo rsync Templates/* /var/www/html/ & $ jobs $ disown -h %1 $ jobs

Varat arī izmantot komandu nohup, tas ļaus procesam turpināt darboties pat tad, kad lietotājs iziet no sistēmas čaulas.

$ nohup tar -czf iso.tar.gz Veidnes/* & $ darbi

Kā atdalīt procesu no Linux vadības termināļa
Lai pilnībā atdalītu procesu no vadības termināļa, varat izmantot arī komandu, kas būs efektīva, izmantojot grafisko lietotāja interfeisu (GUI), piemēram, pārlūkprogrammu Firefox.

$ firefox/dev/null &

Linux (un praktiski visās Unix sistēmās) /dev/null ir īpašs ierīces fails, ko sauc arī par “null ierīci”. Rakstīšana tajā tiek veikta veiksmīgi, neatkarīgi no uzrakstītās informācijas apjoma, lasīšana no tā ir līdzvērtīga faila beigu (EOF) nolasīšanai.

Fona procesu uzsākšana un apstrāde: darba vadība

Iespējams, to pamanījāt pēc komandas ievadīšanas Terminālis "E, parasti jums ir jāgaida, līdz tas tiks pabeigts apvalks atdos jums kontroli. Tas nozīmē, ka esat izpildījis komanduprioritātes režīms . Tomēr ir gadījumi, kad tas nav vēlams.

Pieņemsim, piemēram, ka jūs nolemjat rekursīvi pārkopēt vienu lielu direktoriju citā. Jūs arī izvēlējāties ignorēt kļūdas, tāpēc novirzījāt kļūdu kanālu uz/dev/null:

cp -R images/ /shared/ 2>/dev/null

Šīs komandas izpilde var ilgt vairākas minūtes. Jums ir divi risinājumi: pirmais ir nežēlīgs, kas nozīmē komandas apturēšanu (nogalināšanu) un pēc tam tās izpildīšanu vēlreiz, bet piemērotākā laikā. Lai to izdarītu, noklikšķiniet uz Ctrl+c : tiks pabeigts process un jūs atgrieztos uzvednē. Bet pagaidiet, pagaidām to nedariet! Turpini lasīt.

Pieņemsim, ka vēlaties, lai komanda tiktu izpildīta, kamēr veicat kaut ko citu. Risinājums būtu procesa palaišanafons . Lai to izdarītu, noklikšķiniet uz Ctrl+z lai apturētu procesu:

Šajā gadījumā process turpinās savu darbu, bet kā fona uzdevums, kā norāda zīme & (ampersand) rindas beigās. Pēc tam tiksiet novirzīts atpakaļ uz uzvedni un varēsit turpināt darbu. Procesu, kas darbojas kā fona uzdevums vai fonā, sauc par fonuuzdevums .

Protams, jūs varat nekavējoties palaist procesus kā fona uzdevumus, pievienojot zīmi & komandas beigās. Piemēram, varat palaist direktoriju kopēšanas komandu fonā, ierakstot:

cp -R images/ /shared/ 2>/dev/null &

Ja vēlaties, varat arī atjaunot šo procesu priekšplānā un gaidīt, līdz tas tiks pabeigts, ierakstotfg (Priekšplāns - prioritāte). Lai to atgrieztu fonā, ievadiet tālāk norādīto secību Ctrl+z , bg .

Tādā veidā jūs varat izpildīt vairākus uzdevumus: katrai komandai tiks piešķirts uzdevuma numurs. Komanda apvalks "a darba vietas parāda visu ar pašreizējo saistīto darbu sarakstu apvalks "om. Pirms uzdevuma ir zīme + , atzīmējot pēdējo fonā darbojošos procesu. Lai atjaunotu noteiktu darbu prioritātes režīmā, varat ievadīt komandufg , Kur - uzdevuma numurs, piemēram,5. fg .

ZVANS

Ir tie, kas lasa šīs ziņas pirms jums.
Abonējiet, lai saņemtu jaunus rakstus.
E-pasts
Vārds
Uzvārds
Kā jūs vēlaties lasīt Zvanu?
Nav surogātpasta