linux – systemdサービスを削除する方法

linux systemd

新しいサービスをインストールした後、そのアプリケーションはもういらないと判断して削除した場合、systemctlの出力にエラーとしてサービスが表示されます

これはどこから来ているのか、どうすれば徹底的に取り除くことができるのか

  277  emel  2012-12-01


ベストアンサー

私のサービス抹消レシピ(rm発言に注意!)

systemctl stop [servicename]
systemctl disable [servicename]
rm /etc/systemd/system/[servicename]
rm /etc/systemd/system/[servicename] # and symlinks that might be related
rm /usr/lib/systemd/system/[servicename]
rm /usr/lib/systemd/system/[servicename] # and symlinks that might be related
systemctl daemon-reload
systemctl reset-failed

systemd サービスが /etc/init.d の古いスタイルのスクリプトを「ラップ」している可能性があるので、それもきれいにした方がいいかもしれませんが、そこには systemd サービスが住んでいるわけではありません

440  Mark Lakata  2015-07-06


reset-failedを探しているのではないでしょうか

$ sudo systemctl reset-failed
$

systemd の man ページから

reset-failed [PATTERN...]

指定されたユニットの「失敗」状態をリセットするか、ユニット名が指定されていない場合は全てのユニットの状態をリセットします。ユニットに何らかの障害が発生した場合(エラーコードが0以外の場合や異常終了、タイミングアウトなど)、そのユニットは自動的に “failed “状態になり、その終了コードと状態は、このコマンドでサービスが再起動されるかリセットされるまで、管理者によるイントロスペクションのために記録されます

43  Vebjorn Ljosa  2016-04-13


アンインストールしたようですが、systemdフックを削除していません

# systemctl disable [servicename]

31  nerdwaller  2012-12-01


@mark-lakataさんの回答に追加して、rmコマンドに必要な注意点を頭に入れておきます。[chkconfig]で簡単にできます!(click here to read about chkconfig)

コマンドのリストを再度表示するには

  1. systemctl stop [servicename]
  2. chkconfig [servicename] off or 新しいシステムsystemctl disable [servicename]の場合
  3. systemctl daemon-reload
  4. systemctl reset-failed

注意: 1 番目のコマンドは、現在のセッションでサービスを実行し続けるかどうかによってオプションです (この質問ではコマンドを使用してください)

2 番目のコマンドは、サービスの無効化と削除 (シンボリックリンクに続く) の両方を行います

8  garlicFrancium  2018-07-29


systemd からサービスを削除する

Systemdは、サービスを削除するためにユニット(サービスを定義するファイル)を使用しています… ここにユニットの場所のリストがあります

/etc/systemd/system/ (and sub directories)
/usr/local/etc/systemd/system/ (and sub directories)
~/.config/systemd/user/ (and sub directories)
/usr/lib/systemd/ (and sub directories)
/usr/local/lib/systemd/ (and sub directories)
/etc/init.d/ (Converted old service system)

systemd をリフレッシュします

systemctl daemon-reload
systemctl reset-failed

ゴーストサービス(見つからない)

Systemdは様々な理由でユニットが削除されても、ゴースト(not-found)サービスをリストアップすることができます

  1. ユニットが systemd ディレクトリの一つに存在していることを確認しました
  2. ユニットは終了しませんが、systemdディレクトリの1つにファイルリンクが残っています
  3. このサービスは他のユニット*でも利用されています

(*) 他のユニットでサービスが言及されていても存在しない場合、ユニットファイルがなくても、systemd はそのサービスを not-found の状態でリストアップします… どのユニットがそのサービスを利用しているかをテキスト検索で検索し、そのユニットを編集することができます (後からそのサービスをインストールする予定がある場合はお勧めしません)


ソース。Linuxhacks.org ディスクロージャー: 私は Linuxhacks.org の所有者です

2  intika  2018-11-07


シンプルなオネリかもしれません

service=YOUR_SERVICE_NAME; systemctl stop $service && systemctl disable $service && rm /etc/systemd/system/$service &&  systemctl daemon-reload && systemctl reset-failed

serviceに削除したいサービスを設定してください。例:service=gunicorn.service

1  Leonleon1  2020-07-11


タイトルとURLをコピーしました