Saya telah membaca manual layanan systemd beberapa kali, tetapi saya masih tidak dapat menemukan pola dasar systemd:
Saya ingin menjalankan proses startup sekali (seperti wadah buruh pelabuhan, atau memformat drive) saat boot, berhasil selesai. Tetapi jika saya menggunakan Type = oneshot untuk itu, maka saya tidak bisa menggunakan Restart = on-failure, dan jika gagal, maka tidak akan mencoba lagi pekerjaan itu. Apakah saya melewatkan sesuatu yang jelas di sini?
Saya juga mencoba mengatur Type = simple dengan Restart = on-failure, tetapi dalam banyak kasus ini saya memerlukan perilaku berikut (dari halaman manual) yang diberikan oleh layanan oneshot:
Perilaku oneshot mirip dengan yang sederhana; namun, diharapkan proses tersebut harus keluar sebelum systemd memulai unit tindak lanjut.
Pembaruan:
Restart=
dengan mengatur FailureAction=[self.unit]
(ganti [self.unit] dengan nama unit). Agak kasar, tapi setidaknya eksplisit dan cukup mudah untuk diikuti.
FailureAction
mengambil nilai yang sama dengan StartLimitAction
, dan semua kecuali none
memicu semacam shutdown.
Restart
dan membungkusmy_cmd
seperti iniExecStart=/bin/sh -c 'while ! my_cmd; do sleep 1; done'
:, bersama dengan beberapaTimeoutStartSec
nilai yang masuk akal .