summaryrefslogtreecommitdiff
path: root/3 Resources/Systemd
diff options
context:
space:
mode:
Diffstat (limited to '3 Resources/Systemd')
-rw-r--r--3 Resources/Systemd/Systemd restart signal.md25
-rw-r--r--3 Resources/Systemd/Unit types.md5
2 files changed, 29 insertions, 1 deletions
diff --git a/3 Resources/Systemd/Systemd restart signal.md b/3 Resources/Systemd/Systemd restart signal.md
new file mode 100644
index 0000000..3497069
--- /dev/null
+++ b/3 Resources/Systemd/Systemd restart signal.md
@@ -0,0 +1,25 @@
+---
+tags:
+ - systemd
+ - restart
+references:
+ - https://www.reddit.com/r/linuxquestions/comments/10eu3i0/does_systemctl_restart_send_sigterm_signal/?rdt=64556
+---
+By default, `restart` does exactly the same thing as `stop` followed by `start`.
+
+`stop` will:
+
+- execute `ExecStop=` commands, if any;
+
+- send the signal defined by `KillSignal=` (default: `SIGTERM`), to any remaining processes identified by the `KillMode=`;
+
+- send `SIGCONT` to those same processes;
+
+- if `SendSIGHUP=` is true (default: false), send `SIGHUP` to those same processes;
+
+- if `SendSIGKILL=` is true (default: true), and any processes remain after `TimeoutStopSec=`, send the `FinalKillSignal=` (default: `SIGKILL`) to those remaining processes;
+
+- execute `ExecStopPost=` commands, if any.
+
+
+`restart` changes this by using `RestartKillSignal=` instead of `KillSignal=`, but if `RestartKillSignal=` is not set it just inherits its value from `KillSignal=`. And, of course, `restart` then performs all the regular `start` actions after everything else. `restart` also differs from `stop` by not flushing the file descriptor store associated with the service. \ No newline at end of file
diff --git a/3 Resources/Systemd/Unit types.md b/3 Resources/Systemd/Unit types.md
index 27ee387..51bb40f 100644
--- a/3 Resources/Systemd/Unit types.md
+++ b/3 Resources/Systemd/Unit types.md
@@ -5,10 +5,13 @@ tags:
---
The `Type` directive is specified within the `Service` section. There are 6 different types;
- **Simple**: The default if `Type` nor `Busname` are specified.
+- **Exec** : similar to simple but waits a bit more for the service to be started successfully
- **Forking**: Used when the parent process exits immediately due to it forking. Systemd will know it's still running even though it exited.
- **Oneshot**: When the process is short-lived and doesn't need to keep running. Systemd will wait on the process before starting other units.
- **Dbus**: The process will be registered on the D-Bus bus.
- **Notify**: Systemd will expect a notification from the process to signal it has started up blocking the execution of other units until the signal is received.
- **Idle**: Service will not run ufntil all jobs are dispatched. #clarify
-https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files#unit-specific-section-directives \ No newline at end of file
+https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files#unit-specific-section-directives
+
+**Exec** is recommended by `man systemd.service` for long-running services. \ No newline at end of file