最新の(systemdベースの)LinuxディストリビューションでSSHを除くすべてのサービスを無効にするにはどうすればよいですか?
メンテナンスモードを実装する必要があります。
これらのサービスはすべて停止する必要があります。
ただし、sshはメンテナンスモード中にタスクを実行するために使用されるため、シャットダウンしないでください。
もちろん、無効にしたいサービスのリストをループするシェルスクリプトを書くこともできます。しかし、これは私がすでに存在しているが今まで知らない何かを再発明するような気がします。
これはrunlevelsによく似ており、 targetsに置き換えられます Systemd内。したがって、サービスのリストを開始および停止するスクリプトを作成する代わりに、SSHなどの必要なサービスのみを含む新しいmaintenance.target
を作成できます。もちろん、SSHはネットワーキングなしではあまり役に立ちません。そのため、この例では、単純なemergency-net.target
がSSHを含むように変更されています。
[Unit]
Description=Maintenance Mode with Networking and SSH
Requires=maintenance.target systemd-networkd.service sshd.service
After=maintenance.target systemd-networkd.service sshd.service
AllowIsolate=yes
次に、次を使用してメンテナンスモードに入ることができます
# systemctl isolate maintenance.target
帰ってきた
# systemctl isolate multi-user.target
最初にサービスを一覧表示し、対応するsystemd-nameを検索します。
次に、リストを作成し、各リストメンバーを停止してメンテナンスに入り、メンテナンス後に各メンバーを開始します。