Arbeta med systemd unit-filer
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