Unit File anlegen:
systemctl edit --full --force nc.service
[Service] ExecStart=/usr/bin/nc -l -p 5000
Syntax des Unit Files prüfen:
systemd-analyze verify nc.service
Systemd Konfiguration neu laden 2)
systemctl daemon-reload
Service starten
systemctl start nc
Start überprüfen
systemctl status nc
Beschreibung hinzufügen:
systemctl edit --full nc.service
[Unit] Description=my netcat service …
Beschreibung überprüfen
systemctl status nc
Beim Booten starten
systemctl edit --full nc.service
… [Install] WantedBy=multi-user.target
systemctl enable nc
Sinnloses Skript anlegen:
mkdir ~/bin vim ~/bin/fillfs.sh
#!/bin/bash dd if=/dev/zero of=/tmp/zero oflag=append conv=notrunc bs=1M
Als Benutzer Unit File anlegen:
systemctl --user edit --force --full fillfs.service
[Service] ExecStart=/home/nutzer45/bin/fill-fs.sh
Syntax des Unit Files überprüfen:
systemd-analyze --user verify fillfs.service
„Dienst“ starten:
systemctl --user start fillfs
Sehen was passiert:
systemctl --user status fillfs journalctl --user -fu fillfs watch -d df -h
[Unit] Description=VMSTAT as a Service [Service] Restart=on-failure RestartSec=10 EnvironmentFile=/etc/default/vmstatd #ExecStart=/bin/bash -c 'exec /usr/bin/vmstat -n -w -t 3 >> /tmp/vmstat.log' ExecStart=/bin/bash -c 'exec /usr/bin/vmstat $VMPARAM $VMDELAY >> $VMLOGFILE' [Install] WantedBy=basic.target
VMPARAM="-n -w -t" VMDELAY="5" VMLOGFILE="/tmp/vmstat.log"
TODO: noch nicht getestet
ProtectSystem=full
oder
ProtectSystem=strict ReadWritePaths=/var/lib/… ReadOnlyPaths=/var/lib/… CapabilityBoundingSet=~CAP_SYS_ADMIN SystemCallFilter=~@mount,~@swap,~@setuid,~@resources,~@reboot,~@privileged,~@obsolete,~@module
ProtectHome=true ProtectKernelTunables=true ProtectKernelModules=true ProtectedControlGroups=true PrivateTmp=true PrivateDevices=true SystemCallFilter=~@mount,~@swap,~@setuid,~@resources,~@reboot,~@privileged,~@obsolete,~@module,~@keyring,~@cpu-emulation,~@clock,~@chown RestrictAddressFamilies=AF_UNIX,AF_INET,AF_INET6 RestrictNamespaces=true RestrictRealtime=true #PrivateUsers= #MemoryDenyWriteExecute= #IPAddressAllow= #IPAddressDeny= #AmbientCapabilitySet=
Für lokale Dienste (systlog ohne netzwerk, cron (falls keine Jobs auf das Netzwerk zugreifen sollen), …) zusätzlich:
PrivateNetwork=true RestrictAddressFamilies=AF_UNIX
TODO: Für Dienste, die keine Daten dauerhaft speichern (ntpd? unbound?):
DynamicUser=yes User=unbound Group=unbound
systemctl edit
angelegt oder bearbeitet wurde