i Would know if it's possible to create service with the same script started with different input parameters. Such as:
[Unit]
Description=script description
[Service]
Type=simple
ExecStart=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target
is it possible? then it will launched to serial-mode? or into two different process? Best regards
if Type=simple
in your unit file, you can only specify one ExecStart, but you can add as many ExecStartPre,
ExecStartPost`, but none of this is suited for long running commands, because they are executed serially and everything one start is killed before starting the next one.
If Type=oneshot
you can specify multiple ExecStart, they run serially not in parallel.
If what you want is to run multiple units in parallel, there a few things you can do:
If they differ on 1 param
You can use template units, so you create a /etc/systemd/system/foo@.service
. NOTE: (the @
is important).
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=multi-user.target
And then you exec:
$ systemctl start foo@parameter1.service foo@parameter2.service
or...
Target dependencies
You can create multiple units that links to a single target:
#/etc/systemd/system/bar.target
[Unit]
Description=bar target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
And then you just modify you .service units to be WantedBy=bar.target
like:
#/etc/systemd/system/foo@.service
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=bar.target
Then you just enable the foo services you want in parallel, and start the bar target like this:
$ systemctl daemon-reload
$ systemctl enable foo@param1.service
$ systemctl enable foo@param2.service
$ systemctl start bar.target
NOTE: that this works with any type of units not only template units.
You can use ExecStartPre
or ExecStartPost
for one of scripts
[Unit]
Description=script description
[Service]
Type=simple
ExecStartPre=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target
来源:https://stackoverflow.com/questions/48195340/systemd-with-multiple-execstart