sshを除くすべてのサービスを無効にします


31

最新の(systemdベースの)Linuxディストリビューションでsshを除くすべてのサービスを無効にするにはどうすればよいですか?

メンテナンスモードを実装する必要があります

これらのサービスはすべてダウンする必要があります。

  • ポストグレス
  • 接尾辞
  • アパッチ
  • カップ
  • cron
  • 鳩小屋

ただし、sshはメンテナンスモード中にタスクを実行するために使用されるため、シャットダウンしないでください。

もちろん、無効にするサービスのリストをループするシェルスクリプトを作成することもできます。しかし、これは、すでに存在するものの、今まで知らない何かを再発明したような気がします。


1
どのような種類のタスクですか?なぜこれが必要なのですか?
ewwhite

@ user430214質問を更新しました。追加:もちろん、無効にするサービスのリストをループするシェルスクリプトを作成できます。しかし、これは、すでに存在するものの、今まで知らない何かを再発明したような気がします。
ゲットリ

回答:


55

これは、Systemdのターゲットに置き換えられたランレベルによく似ています。したがって、サービスのリストを開始および停止するスクリプトを作成する代わりに、SSHなどの必要なサービスのみを含む新しいスクリプトを作成できます。もちろん、SSHはネットワーキングなしではあまり役に立ちません。そのため、この例ではSSHを含むように単純なものが変更されています。maintenance.targetemergency-net.target

[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

1
この答えをありがとうございます。汚いシェルスクリプトを書く以外にいい答えはないと思うとしても、尋ねることは有用であることを示しています。emergency-net.targetはシンプルでエレガントなソリューションです-素晴らしい:
guettli

もちろん、すべての依存関係も処理するため、新しいサービスをインストールするたびにスクリプトを更新する必要はありません。
エサヨキネン

3

最初にサービスをリストし、対応するsystemd-nameを検索します。

次に、リストを作成し、各リストメンバーを停止してメンテナンスに入り、メンテナンス後に各メンバーを開始します。


5
なぜ単に使用しないのsystemctl isolateですか?
クリスダウン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.