시스템 서비스가 다시 시작되는 것을 방지하는 방법

시스템 서비스가 다시 시작되는 것을 방지하는 방법

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 
             | `[email protected]: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 
             | `[email protected] 
             |   `-180 /sbin/agetty -8 -L ttymxc0 115200 xterm
             |-system-getty.slice 
             | `[email protected] 
             |   `-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 
             | `[email protected] 
             |   `-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 
             | `[email protected] 
             |   `-1781 /usr/sbin/udhcpd -f /etc/udhcpd.usb0.conf
             |-xochitl.service 
             | `-229 /usr/bin/xochitl --system
             `-qmdns-responder.service 
               `-258 /usr/bin/qmdns-responder

답변1

서비스가 systemd에 의해 시작되지 않도록 차단할 수 있습니다.

빨리 달려 systemctl mask wpa_supplicant.service. 이렇게 하면 서비스가 발견될 때까지 systemd에 의해 서비스가 시작되지 않습니다.

를 실행하여 서비스 차단을 해제할 수 있습니다 systemctl unmask wpa_supplicant.service.

이렇게 하면 해당 서비스를 실행하기 위해 실행해야 하거나 예상할 수 있는 다른 서비스를 포함하여 systemd를 통해 서비스를 시작할 수 없게 됩니다.

systemctl매뉴얼 페이지 에서 :

       마스크 유닛...
           명령줄에 지정된 대로 하나 이상의 셀을 마스킹합니다. 그러면 해당 유닛 파일이 /dev/null에 연결되어 시작할 수 없게 됩니다. 이는 모든 유형의 기능을 비활성화하므로 비활성화보다 더 강력한 버전입니다.
           활성화 및 수동 활성화를 포함한 장치 활성화. 이 옵션은 주의해서 사용하시기 바랍니다. 이는 --runtime 옵션을 존중하며 다음 시스템이 다시 시작될 때까지 일시적으로만 차단됩니다. --now 옵션을 사용할 수 있습니다
           장치의 작동도 중지되는지 확인하십시오. 이 명령에는 유효한 장치 이름만 필요하며 장치 파일 경로는 허용되지 않습니다.

       장치 차단 해제...
           명령줄에 지정된 대로 하나 이상의 유닛 파일을 마스크 해제합니다. 이렇게 하면 마스크 효과가 취소됩니다. 이 명령에는 유효한 장치 이름만 필요하며 장치 파일 경로는 허용되지 않습니다.

관련 정보