Puncte:0

Cum să rulați mai multe scripturi shell, dar să le terminați pe toate dacă întâmpinați o eroare/nu se încheie cu succes?

drapel jp

Am un script shell care rulează mai multe alte scripturi shell în paralel, de ex. ./run_all.sh conţine

./run1.sh &
./run2.sh &
./run3.sh &

aștepta
ecou "Toate 3 complete"

Cum pot încheia toate procesele dacă unul dintre ele iese din cauza unei erori etc.? The && necesită ca fiecare script să se termine cu succes, dar rulează secvenţial.

FedKad avatar
drapel cn
Ai încercat comanda `wait -n`? Vezi: https://linuxize.com/post/bash-wait/
Puncte:0
drapel in

S-ar putea să încerci ceva de genul acesta:

  { run1.sh || killthe others.sh 1 ; } &
  { run2.sh || ucide pe alții.sh 2 ; } &
  { run3.sh || ucide pe alții.sh 3 ; } &

astfel încât fiecare comandă să fie rulată în fundal (prin intermediul &), dar dacă orice comandă eșuează (returnează o eroare, adică o stare diferită de zero), atunci operatorul de control „sau” || permite rularea scriptului „killtheothers.sh”. Va trebui să scrieți killtheothers.sh, poate folosind comanda „killall”. L-am arătat folosind un parametru pentru a specifica ce comandă runX nu ar trebui să o ucidă scriptul.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.