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 옵션을 사용할 수 있습니다 장치의 작동도 중지되는지 확인하십시오. 이 명령에는 유효한 장치 이름만 필요하며 장치 파일 경로는 허용되지 않습니다. 장치 차단 해제... 명령줄에 지정된 대로 하나 이상의 유닛 파일을 마스크 해제합니다. 이렇게 하면 마스크 효과가 취소됩니다. 이 명령에는 유효한 장치 이름만 필요하며 장치 파일 경로는 허용되지 않습니다.