Systemd
如何防止重啟systemd服務
我正在嘗試
wpa_supplicant
在較小的平板電腦上進行故障排除。平板電腦正在使用 systemd 執行wpa_supplicant.service
具有條目的ExecStart=/usr/sbin/wpa_supplicant -u
我想停止此服務並
wpa_supplicant
使用自定義配置執行,而不是使用 D-BUS 介面。所以我進入了systemctl stop wpa_supplicant
停止原來的服務。該命令成功,但不幸的是該服務立即重新啟動。這是最不幸的,因為多個實例
wpa_supplicant
不能真正共存。由於我對systemd不太了解:為什麼服務會立即重新啟動?我怎樣才能防止這種情況發生?這是由於一些我不知道的服務依賴關係嗎?
整個服務定義由下式給出:
[Unit] Description=WPA supplicant Before=network.target Wants=network.target [Service] Type=dbus BusName=fi.w1.wpa_supplicant1 ExecStart=/usr/sbin/wpa_supplicant -u [Install] WantedBy=multi-user.target Alias=dbus-fi.w1.wpa_supplicant1.service
編輯:正在執行的服務是
CGroup: / |-init.scope | `-1 /sbin/init `-system.slice |-systemd-timesyncd.service | `-154 /lib/systemd/systemd-timesyncd |-crashuploader.service | `-228 /usr/bin/crashuploader --path /home/root/ |-sync.service | `-181 /usr/bin/sync --service |-system-dropbear.slice | `-dropbear@16-10.11.99.1:22-10.11.99.3:49522.service | |-2831 /usr/sbin/dropbear -i -r /etc/dropbear/dropbear_rsa_host_key -B | |-2832 -sh | |-2841 systemctl status | `-2842 less |-dbus.service | `-176 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only |-update-engine.service | `-185 /usr/sbin/update_engine -foreground |-system-serial\x2dgetty.slice | `-serial-getty@ttymxc0.service | `-180 /sbin/agetty -8 -L ttymxc0 115200 xterm |-system-getty.slice | `-getty@tty1.service | `-179 /sbin/agetty -o -p -- \x5cu --noclear tty1 linux |-wpa_supplicant.service | `-2754 /usr/sbin/wpa_supplicant -u |-systemd-logind.service | `-217 /lib/systemd/systemd-logind |-system-busybox\x2difplugd.slice | `-busybox-ifplugd@usb0.service | `-175 /usr/sbin/ifplugd -n -i usb0 |-systemd-udevd.service | `-135 /lib/systemd/systemd-udevd |-systemd-journald.service | `-134 /lib/systemd/systemd-journald |-dhcpcd.service | `-198 /usr/sbin/dhcpcd -4 -b --master wlan0 |-haveged.service | `-133 /usr/sbin/haveged -w 1024 -v 1 --Foreground |-systemd-networkd.service | `-145 /lib/systemd/systemd-networkd |-system-busybox\x2dudhcpd.slice | `-busybox-udhcpd@usb0.service | `-1781 /usr/sbin/udhcpd -f /etc/udhcpd.usb0.conf |-xochitl.service | `-229 /usr/bin/xochitl --system `-qmdns-responder.service `-258 /usr/bin/qmdns-responder
您可以屏蔽服務以防止它被 systemd 啟動。
跑吧
systemctl mask wpa_supplicant.service
。這將防止服務被 systemd 啟動,直到它被取消屏蔽。您可以通過執行取消屏蔽該服務
systemctl unmask wpa_supplicant.service
。請記住,這將阻止任何東西通過 systemd 啟動服務,包括可能期望或需要該服務執行才能自行執行的其他服務。
從
systemctl
手冊頁:面罩單元... 屏蔽一個或多個單位,如命令行中指定的那樣。這會將這些單元文件連結到 /dev/null,從而無法啟動它們。這是一個更強大的 disable 版本,因為它禁止所有類型的 單元的啟動,包括啟用和手動啟動。請謹慎使用此選項。這尊重 --runtime 選項,僅在系統下次重新啟動之前臨時屏蔽。可以使用 --now 選項 以確保單位也停止。此命令僅需要有效的單元名稱,它不接受單元文件路徑。 取消屏蔽單元... 取消屏蔽一個或多個單元文件,如命令行中指定的那樣。這將撤消蒙版的效果。此命令僅需要有效的單元名稱,它不接受單元文件路徑。