Puncte:0

Verificați în ExecStartPre dacă există binarul bash

drapel it

Vreau ca serviciul meu să înceapă numai dacă un alt serviciu nu este activ. Pentru a face acest lucru, așa cum este explicat în aceasta alta intrebare, Eu voi face:

ExecStartPre=/bin/bash -xc '/usr/bin/systemctl is-active --quiet other-unit.service && exit 1 || ieșire 0'

Cu toate acestea, există o mică posibilitate ca sistemul de operare să nu includă /bin/bash. În acest caz, aș dori ca serviciul să înceapă oricum. Am încercat să obțin acest lucru folosind:

ExecStartPre=which bash 2>/dev/null && /usr/bin/bash -xc '/usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service && exit 1 || ieșire 0’ || iesirea 0

Dar systemd se plânge:

which[1122772]: /usr/bin/which: opțiune nevalidă -- 'x'
which[1122772]: /usr/bin/which: opțiune nevalidă -- „c”
care[1122772]: /usr/bin/which: nu && în (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

Cred că ExecStartPre= este destul de limitat. Este posibil să realizez ceea ce îmi doresc?

Michael Hampton avatar
drapel cz
De ce suni bash în loc de /bin/sh?
mosquetero avatar
drapel it
Am lipit ce a răspuns la cealaltă întrebare. Dacă trec în /usr/bin/sh, pot fi sigur că va face parte din toate sistemele de operare?
Michael Hampton avatar
drapel cz
Am spus `/bin/sh`, nu `/usr/bin/sh`. Primul există în ultimii 50 de ani pe tot ceea ce este vag asemănător Unix-ului. Este chiar și pe telefonul tău. Nu am spus nimic despre acesta din urmă și nu m-aș baza pe el.
mosquetero avatar
drapel it
Bine. În acest caz, nu trebuie să verific dacă `/bin/sh` este disponibil, mulțumesc. Ați putea scrie asta ca răspuns, astfel încât să pot marca întrebarea ca răspuns, vă rog?
Michael Hampton avatar
drapel cz
BINE. Dar doar de curiozitate, aș dori să știu ce sistem include systemd, dar nu bash.
mosquetero avatar
drapel it
Am vrut doar să acopăr toate cazurile posibile. Am văzut unul cu sistemul de operare Alpine folosind systemd pentru că utilizatorul l-a instalat cumva
Puncte:1
drapel cz

În loc să apelați bash, ar trebui să vă gândiți să apelați shell-ul Bourne /bin/sh care a existat aproape de la începutul Unix și există literalmente pe tot ceea ce este asemănător Unix-ului, până la telefon. (Deși pe sistemele moderne este în general înlocuit cu un shell puțin mai capabil, care rulează în modul de compatibilitate cu shell Bourne atunci când este numit ca /bin/sh.)

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.