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