システムサービスの再起動を防ぐ方法

システムサービスの再起動を防ぐ方法

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マニュアルページから:

       マスクユニット...
           コマンドラインで指定されているように1つ以上のセルをマスクします。これにより、そのユニットファイルが/ dev / nullにリンクされて起動できなくなります。これはすべての種類の機能を無効にするため、無効よりも強力なバージョンです。
           アクティベーションと手動アクティベーションを含むデバイスのアクティベーション。このオプションは注意して使用してください。これは--runtimeオプションを尊重し、次のシステムが再起動されるまで一時的にブロックされます。 --now オプションを使用できます
           デバイスの動作も停止していることを確認してください。このコマンドには有効なデバイス名のみが必要で、デバイスファイルのパスは許可されません。

       デバイスのブロック解除...
           コマンドラインで指定されているように、1つ以上のユニットファイルをマスク解除します。これによりマスク効果がキャンセルされます。このコマンドには有効なデバイス名のみが必要で、デバイスファイルのパスは許可されません。

おすすめ記事