User Tools

Site Tools


zibaldone:linux:systemd

Systemd

systemctl status

show running units

systemctl

show available unit files

systemctl list-unit-files

enable unit

systemctl enable name.service

start unit

systemctl start name

after change unit file

systemctl daemon-reload

Systemd as user

enable systemd for specific user

loginctl enable-linger <username>
  • add user to systemd-journal group to permit journactl operations <code> usermod -a -G systemd-journal <user> </code>
  • modify /etc/systemd/journald.conf <code> [Journal] Storage=persistent </code>

deprecated

/etc/profile.d/systemd-user.sh
export XDG_RUNTIME_DIR="/run/user/$UID"
export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"

new method

mkdir -p ~/.bashrc.d
echo "export XDG_RUNTIME_DIR=/run/user/$(id -u)" > ~/.bashrc.d/systemd 
source ~/.bashrc.d/systemd

journalctl -u does not work. Use instead

journalctl --user --user-unit

Systemd Timer

Una valida e più potente alternativa a cron, integrata in systemd, è rappresentata dai timers, di primo impatto soprattutto nell'aspetto supervisivo tramite journalctl, ma non solo (vedi risposta a questo quesito http://unix.stackexchange.com/questions/278564/cron-vs-systemd-timers).

Per attivare un timer servono essenzialmente due cose:

  • Il timer: /etc/systemd/system/nms-restart.timer <code> [Unit] Description=Perform a nms resrtart

[Timer] OnCalendar=hourly

[Install] WantedBy=timers.target </code>

  • il servizio: /etc/systemd/system/nms-restart.service
[Unit]
Description=Perform a nms restart

[Service]
Type=simple
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
ExecStart=/usr/local/sbin/nms-restart

Poi si avvia e abilita il timer:

sudo systemctl start nms-restart.timer
sudo systemctl enable nms-restart.timer

Per la lista dei timer

systemctl list-timers --all

Per monitorare si usa journalctl in tutte le sue forme, per esempio:

journalctl -f -u nms-restart
zibaldone/linux/systemd.txt · Last modified: by sscipioni