Arbeta med systemd unit-filer

2020-10-22 08:46 Systemd

Konfigurationen för en unit

För att se innehållet i en unit kan du använda systemctl cat <unit>. Då visas unit-filen för den unit du valt och även alla extra filer den läser in när den startas.

[root@workstation ~]# systemctl cat nginx.service
# /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true

[Install]
WantedBy=multi-user.target

# /usr/lib/systemd/system/nginx.service.d/php-fpm.conf
[Unit]
Wants=php-fpm.service

Ändra inställningar för en unit

Om du vill ändra en inställning i en unit så går det enkelt att göra detta med hjälp av systemctl edit <unit>.

systemctl edit nginx.service

Då skapas filen /etc/systemd/system/nginx.service.d/override.conf om den inte redan finns. Filen har som uppgift att skriva över de inställningar som finns för tjänsten om du vill ändra loglevel eller liknande.

Det går även att kopiera hela unit-filen genom att använda då kopieras filen /usr/lib/systemd/system/nginx.service till /etc/systemd/system/nginx.service

systemctl edit --full nginx.service

Återställ ändringar för en unit

Om vill gå tillbaka till de inställnigar som är installerad av din pakethanterare så är systemctl revert <unit> lösningen på ditt problem.

systemctl revert nginx.service

Detta kommer radera /etc/systemd/system/nginx.service.d/override.conf och /etc/systemd/system/nginx.service om det finns en /usr/lib/systemd/system/nginx.service. Finns det ingen sån fil så raderar den bara /etc/systemd/system/nginx.service.d/override.conf.

Skapa en ny unit

Det går även att skapa nya unit-filer med hjälp av systemctl edit --force --full <unit>.

systemctl edit --force --full glow

Radera unit-filer

Pakethanterare lägger sina unit-filer i /usr/lib/systemd/system/, då dessa hanteras av din pakethanterare så ska inga filer raderas där. Det går dock bra att radera unit-filer i följande kataloger:

  • /etc/systemd/system/
  • /etc/systemd/system/<unit\>.service.d/

När du raderat en unit-fil så är det riktigt att få Systemd att ladda om sin konfiguration.

systemctl daemon-reload