Portál AbcLinuxu, 10. května 2025 08:10
# systemd-cgls /system.slice/scanbd.service /system.slice/scanbd.service: └─3014 /usr/sbin/scanbd -fPo stlačení gombíku:
# systemd-cgls /system.slice/scanbd.service /system.slice/scanbd.service: ├─3014 /usr/sbin/scanbd -f ├─6651 /bin/bash /etc/scanbd/mk_cs9000f.sh └─6689 sleep 60A když teď ve vedlejším terminálu (tedy ani ne v rámci podřízeného skriptu) zkusím
systemctl restart scanbd.service, tak to počká na doběhnutí skriptu (sleep 60) a teprve pak restartuje /usr/sbin/scanbd. Poradí někdo, jak to udělat správným způsobem v rámci systemd? Alternativně by asi šlo by napsat wrapper, spustit jej ze skriptu a zbavit rodičovského procesu, a po skončení rodičovského procesu (bash -c) restartovat service unit? Avšak jak na to?
Řešení dotazu:
Alternativni, hnusne reseni je pomoci at.
Marek"kill -9 $scanbd_pid && systemctl restart scanbd.service", což kupodivu funguje i v rámci skriptu mk_cs9000f.sh, který to přežije a dokončí, co má dělat. Jen budu muset nějak kontrolovat, aby se při nějaké chybce ve skriptu nehromadily nedokončené procesy.
nohup systemctl restart scanbd.service &
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.