失敗したシステムサービスの終了コードを取得する

失敗したシステムサービスの終了コードを取得する

失敗したシステムサービスの終了コードを取得するには?

service some_service status以下を印刷してください。

 Active: failed (Result: exit-code)

しかし、それは何ですかexit-code

これらの終了コードは標準ですか、それともサービスごとに異なる意味を持ちますか?

答え1

systemctl status実際にあなたが探しているものがあります:

$ systemctl status openproject-web-1.service
● openproject-web-1.service
   Loaded: loaded (/etc/systemd/system/openproject-web-1.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2020-05-25 08:17:17 CEST; 1 day 4h ago
  Process: 969 ExecStart=/usr/bin/openproject run web (code=exited, status=203/EXEC)
 Main PID: 969 (code=exited, status=203/EXEC)

Main PID:あなたは以下に何を持っているのか見ることができます(code=exited, status=203/EXEC)。 203は終了コードである。

終了コードは特定のアプリケーションによって異なりますが、いくつかの規則があります。 0 は正常終了を示し、1-255 は異常終了を示し、256+ は範囲外であることを示します。これPOSIX規格いくつかの特別な状況があります。ただし、詳細については、アプリケーションのマニュアルを確認する必要があります。

例えば、grep(1)説明する:

...終了状態は、行が選択されている場合は0、行が選択されていない場合は1、エラーが発生した場合は2です。

以下のJdePBで説明されているように、systemdは200から242の範囲のいくつかの終了コードを設定できます。上記の例には、203実際の実行が失敗したことを意味する終了コードがあります(ファイルが見つからないか、ファイルが実行可能ファイルとして表示されていない可能性があります)。

関連情報