Sunt în proces de migrare a tuturor scripturilor personalizate parvenite la systemd. Am întâlnit un script care utilizează mai multe servicii. Nu pot să-mi dau seama care este sintaxa potrivită pentru a gestiona acest lucru sau dacă trebuie doar să creez separat .serviciu
fișiere unitare pentru fiecare. Este posibil acest lucru pentru șablon? The Documentația unității SystemD nu îmi oferă multe informații, cu excepția modului de a crea un fișier șablon (anexând @
la nume) și modul de utilizare %i
pentru a semnifica o instanță.
Parvenitul original dealer-start-all.conf
jurnalul consolei
începe la dealer-start
scenariu
declare -a dealers=("TimeZone" "Timeout" "Inquiry" "Refuz")
pentru introduceți „${dealers[@]}”
do
if initctl list | grep „^ distribuitor ($tip)”
atunci
stop dealer type=$tip
fi
start dealer type=$tip
echo "dealer$type a început"
Terminat
scriptul final
Cealaltă parte a ei, dealer.conf
, ar trebui să fie destul de tăiat și uscat prin folosire %i
în ExecStart
porție, cum ar fi:
ExecStart=/usr/bin/php -f /path/to/dealer%i.php
jurnalul consolei
instanță $type
opriți pe dealer-stop
scenariu
sudo -u root php -f /path/to/dealer$type.php
scriptul final
script post-oprire
dacă [ -z „$UPSTART_STOP_EVENTS” ]
atunci
echo "dealer$type s-a oprit la `date +"%F %T.%N"` Rulați 'initctl emit dealer-stop' apoi 'initctl emit dealer-start' pe `hostname` pentru a rula din nou." | mail -s „dealer$type Stopped” [email protected]
altfel
echo "dealer$type a fost oprit manual la `data +"%F %T"`."
fi
scriptul final
Pur și simplu nu înțeleg cum să traduc matricea din prima într-o versiune systemd? Ar trebui să le împart în fișiere de unitate individuale? Dacă da, atunci aceasta nu este o problemă și se poate face cu ușurință. Nu sunt sigur de sintaxă (dacă există) pentru a face ceea ce face primul.