Chaining custom systemd services

systemd

I have timer A that every few hours runs a script that runs service B(script with systemctl start in it). Then I would like to run service C after B is finished.

Here is my service C:

[Unit]
Description=lorem ipsum
Requires=B.service
After=B.service

[Service]
Type=oneshot
ExecStart=echo

B is also Type=oneshot.

Problem: after I invoke systemctl start B.service the C is not automatically launched. I doesn't have [Install] section because I don't want them to start on boot.

Best Answer

Your got it backwards. After does not specify that service Cneeds to be started, see systemd.unit for more information.

You want something like that as your configuration for service B:

[Unit]
Description=Your service C
Requires=C.service
Before=C.service
...
Related Topic