I have 2 simple units:
systemd.services.myservice = {
serviceConfig = {
Type = "simple";
ExecStart = ''
${pkgs.bash}/bin/bash -c 'echo "Hello World!"'
'';
};
};
systemd.services.mytrigger = {
wantedBy = [
"multi-user.target"
];
wants = [
"myservice.service"
];
before = [
"myservice.service"
];
serviceConfig = {
Type = "simple";
ExecStartPre = "${pkgs.bash}/bin/bash -c 'sleep 10'";
ExecStart = "${pkgs.bash}/bin/bash -c 'sleep 49'";
TimeoutStartSec = "infinity";
Restart = "always";
RestartSec = "1000ms";
};
};
When loading this nix configuration, I noticed that myservice.service
restarts twice as more than mytrigger.service
.
[root@myhost:~]# journalctl -u mytrigger.service -u myservice.service -f -o short-precise
-- Logs begin at Wed 2020-03-04 17:39:45 UTC. --
Mar 31 14:03:48.334702 myhost systemd[1]: Stopped mytrigger.service.
Mar 31 14:03:48.336800 myhost systemd[1]: Starting mytrigger.service...
Mar 31 14:03:58.350306 myhost systemd[1]: Started mytrigger.service.
Mar 31 14:03:58.352224 myhost systemd[1]: Started myservice.service.
Mar 31 14:03:58.359918 myhost bash[54388]: Hello World!
Mar 31 14:03:58.361815 myhost systemd[1]: myservice.service: Succeeded.
Mar 31 14:04:47.366008 myhost systemd[1]: mytrigger.service: Succeeded.
Mar 31 14:04:47.369888 myhost systemd[1]: Started myservice.service.
Mar 31 14:04:47.374478 myhost bash[54564]: Hello World!
Mar 31 14:04:47.375192 myhost systemd[1]: myservice.service: Succeeded.
Mar 31 14:04:48.585570 myhost systemd[1]: mytrigger.service: Service RestartSec=1s expired, scheduling restart.
Mar 31 14:04:48.585910 myhost systemd[1]: mytrigger.service: Scheduled restart job, restart counter is at 21.
Mar 31 14:04:48.586095 myhost systemd[1]: Stopped mytrigger.service.
Mar 31 14:04:48.588383 myhost systemd[1]: Starting mytrigger.service...
Mar 31 14:04:58.598008 myhost systemd[1]: Started mytrigger.service.
Mar 31 14:04:58.606126 myhost systemd[1]: Started myservice.service.
Mar 31 14:04:58.610276 myhost bash[54622]: Hello World!
Mar 31 14:04:58.610768 myhost systemd[1]: myservice.service: Succeeded.
Mar 31 14:05:47.608485 myhost systemd[1]: mytrigger.service: Succeeded.
Mar 31 14:05:47.611397 myhost systemd[1]: Started myservice.service.
Mar 31 14:05:47.617188 myhost bash[54722]: Hello World!
Mar 31 14:05:47.617909 myhost systemd[1]: myservice.service: Succeeded.
Mar 31 14:05:48.836306 myhost systemd[1]: mytrigger.service: Service RestartSec=1s expired, scheduling restart.
Mar 31 14:05:48.837376 myhost systemd[1]: mytrigger.service: Scheduled restart job, restart counter is at 22.
Mar 31 14:05:48.837990 myhost systemd[1]: Stopped mytrigger.service.
Mar 31 14:05:48.842165 myhost systemd[1]: Starting mytrigger.service...
Mar 31 14:05:58.852184 myhost systemd[1]: Started mytrigger.service.
Mar 31 14:05:58.860124 myhost systemd[1]: Started myservice.service.
Mar 31 14:05:58.864363 myhost bash[54784]: Hello World!
Mar 31 14:05:58.864938 myhost systemd[1]: myservice.service: Succeeded.
Mar 31 14:06:47.861991 myhost systemd[1]: mytrigger.service: Succeeded.
Mar 31 14:06:47.867910 myhost systemd[1]: Started myservice.service.
Mar 31 14:06:47.872036 myhost bash[54940]: Hello World!
Mar 31 14:06:47.872576 myhost systemd[1]: myservice.service: Succeeded.
Mar 31 14:06:49.085874 myhost systemd[1]: mytrigger.service: Service RestartSec=1s expired, scheduling restart.
Mar 31 14:06:49.087153 myhost systemd[1]: mytrigger.service: Scheduled restart job, restart counter is at 23.
Mar 31 14:06:49.087769 myhost systemd[1]: Stopped mytrigger.service.
Mar 31 14:06:49.090364 myhost systemd[1]: Starting mytrigger.service...
I expected myservice.service
to start as many times as mytrigger.service
does. When myservice.service
is set as an after ordering in mytrigger.service
, then both services restart the same amount of times.
I am not sure this is nix-related, perhaps it is the behavior of systemd.
Is this the expected behavior?