Systemd: Difference between revisions
(→DNS) |
No edit summary |
||
Line 83: | Line 83: | ||
systemctl daemon-reload # to restart services after config changes | systemctl daemon-reload # to restart services after config changes | ||
systemctl list-timers [####*] # to list timers that start with ##### | 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 | |||
``` |
Revision as of 04:25, 15 February 2021
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 ```