Systemd: Difference between revisions

From Bitpost wiki
No edit summary
No edit summary
Line 1: Line 1:
Systemd has done serious damage to networkmanager dns cron ntp...  We have to adapt to it, here we go.
Systemd has done serious damage to networkmanager dns cron ntp...  We have to adapt to it, here we go.
=== DNS ===
You should probably turn off systemd-resolved and manually configure /etc/resolv.conf, since systemd sucks the chrome off a donkey's ballbearings.
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo emacs -nw /etc/resolv.conf # use [nameserver 8.8.8.8] if you don't have anything better


=== NTP ===
=== NTP ===

Revision as of 22:29, 28 April 2018

Systemd has done serious damage to networkmanager dns cron ntp... We have to adapt to it, here we go.

DNS

You should probably turn off systemd-resolved and manually configure /etc/resolv.conf, since systemd sucks the chrome off a donkey's ballbearings.

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo emacs -nw /etc/resolv.conf # use [nameserver 8.8.8.8] if you don't have anything better


NTP

DO NOT INSTALL ntp daemon any more, instead we now have systemd-timesyncd. That relies on systemd-networkd. Here's what I did on gold (which needed a specific ntp server)...

sudo apt remove ntp
emacs /etc/systemd/timesyncd.conf # if you need to hit a non-standard ntp server
systemctl status systemd-networkd systemd-timedated systemd-timesyncd
sudo timedatectl set-ntp on
sudo systemctl start systemd-networkd systemd-timedated systemd-timesyncd


Timers

Use these in place of cron. Each one typically does one task.

   systemd timer services
   ----------------------
   https://www.certdepot.net/rhel7-use-systemd-timers/

   create a script to do the work:
     echo "/usr/sbin/logrotate /etc/logrotate.conf" >/usr/local/sbin/logrotate.sh

   create a service file:
     nano /usr/lib/systemd/system/logrotate.service
       [Unit]
       Description=Rotate logs

       [Service]
       Type=simple
       ExecStart=/usr/local/sbin/logrotate.sh
       User=root

       [Install]
       WantedBy=multi-user.target

   create a timer file:
     nano /usr/lib/systemd/system/logrotate.timer
       [Unit]
       Description=Rotate logs as needed every night at 2am

       [Timer]
       OnCalendar=*-*-* 02:00:00
       Unit=logrotate.service

       [Install]
       WantedBy=multi-user.target

   activate on boot:
     # NOTE you must enable the service (even though not run directly), plus the timer
     # then start the timer
     systemctl enable logrotate       
     systemctl enable logrotate.timer
     systemctl start logrotate.timer

   utils:
     systemctl is-enabled ####.timer
     systemctl is-active ####.timer   # to see if timer is active and enabled
     systemctl start ####      # to run service immediately
     systemctl status ####     # nice status output
     systemctl daemon-reload   # to restart services after config changes
     systemctl list-timers [####*]  # to list timers that start with #####