Systemd
Systemd has done serious damage to networkmanager dns cron ntp... We have to adapt to it, here we go.
DNS
UPDATE: it might be working now in Ubuntu 18.04, try this to turn it back on:
sudo su - systemctl enable systemd-resolved dpkg-reconfigure resolvconf service network-manager restart
TO KILL IT
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.service && sudo service systemd-resolved stop # older: sudo systemctl disable systemd-resolved && sudo systemctl stop systemd-resolved # IMPORTANT as it is a symlink to a systemd file that is out of our control: sudo rm /etc/resolv.conf sudo emacs -nw /etc/resolv.conf # use [nameserver 8.8.8.8] if you don't have anything better # or typically it is already available: sudo cp ~m/resolv.conf.goog /etc/resolv.conf
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 #####
Creating a custom managed service
Let's get an official systemd service going! This example is for rtorrent on bandit.
emacs /etc/systemd/system/rtorrent.service ------------ [Unit] Description=rTorrent After=network.target [Service] User=m Type=forking KillMode=none ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent WorkingDirectory=%h [Install] WantedBy=default.target -------------- systemctl enable rtorrent.service systemctl start rtorrent