jika Type=simple
dalam file unit Anda, Anda hanya dapat menentukan satu ExecStart, tetapi Anda dapat menambahkan sebanyak ExecStartPre
, ExecStartPost
, tetapi tidak satu pun dari ini cocok untuk perintah yang berjalan lama, karena dijalankan secara berurutan dan semua yang dimulai pertama dimatikan sebelum memulai yang berikutnya.
Jika Type=oneshot
Anda dapat menentukan beberapa ExecStart, mereka berjalan secara serial bukan secara paralel.
Jika yang Anda inginkan adalah menjalankan beberapa unit secara paralel, ada beberapa hal yang dapat Anda lakukan:
Jika berbeda pada 1 parameter
Anda dapat menggunakan unit template, jadi Anda membuat /etc/systemd/system/[email protected]
. CATATAN: (@
penting).
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=multi-user.target
Dan kemudian Anda mengeksekusi:
$ systemctl start [email protected] [email protected]
atau...
Ketergantungan target
Anda dapat membuat beberapa unit yang tertaut ke satu target:
#/etc/systemd/system/bar.target
[Unit]
Description=bar target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
Dan kemudian Anda tinggal memodifikasi unit .service Anda menjadi WantedBy=bar.target
seperti:
#/etc/systemd/system/[email protected]
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=bar.target
Kemudian Anda cukup mengaktifkan layanan foo yang Anda inginkan secara paralel, dan mulai bilah target seperti ini:
$ systemctl daemon-reload
$ systemctl enable [email protected]
$ systemctl enable [email protected]
$ systemctl start bar.target
CATATAN: bahwa ini bekerja dengan semua jenis unit tidak hanya unit template.
Anda dapat menggunakan ExecStartPre
atau ExecStartPost
untuk salah satu skrip
[Unit]
Description=script description
[Service]
Type=simple
ExecStartPre=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target