web-dev-qa-db-ja.com

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

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

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

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

  • postgres
  • 後置
  • Apache
  • カップ
  • cron
  • ダブコット

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

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

31
guettli

これは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
55
Esa Jokinen

最初にサービスを一覧表示し、対応するsystemd-nameを検索します。

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

3
Nils