systemctl "job"と"service"の違いは何ですか?

systemctl "job"と"service"の違いは何ですか?

これら2つのコマンドの「作業」と「プロセス」と「サービス」の違いは何ですかsystemctl

root@linuxbox:~# systemctl list-jobs
No jobs running.
root@linuxbox:~# systemctl list-units --type=service --state=running
UNIT                             LOAD   ACTIVE SUB     DESCRIPTION
containerd.service               loaded active running containerd container runtime
docker.service                   loaded active running Docker Application Container Engine
[email protected]               loaded active running Getty on tty1
inetd.service                    loaded active running Internet superserver
ntp.service                      loaded active running Network Time Service
rngd.service                     loaded active running Start entropy gathering daemon (rngd)
[email protected]      loaded active running Serial Getty on ttyPS0
ssh.service                      loaded active running OpenBSD Secure Shell server
syslog-ng.service                loaded active running System Logger Daemon
tftpd-hpa.service                loaded active running LSB: HPA's tftp server
watchdog.service                 loaded active running watchdog daemon

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

11 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

答え1

要約:「ジョブ」は、「サービス」または他のシステムユニットに対して要求された状態の変化を示します。サービスが開始/停止/再起動されたときにのみ存在します。

提供する

システム用語「サービス」は、監督されるプロセスグループであり、(主に)以下によって定義される。.serviceデバイス構成ファイル。

各サービス(他のシステムユニットタイプと同様)には、マニュアルページに記載されているようにステータスがあります。システム(1):

デバイスは、「アクティブ」状態(開始、バインド、接続...を意味し、デバイスの種類によって異なる、以下を参照)または「非アクティブ」状態(停止、バインド解除、接続を意味...)できます。デバイスの種類に応じて、以下を参照してください)プラグを抜いて...)実行しています。有効または無効、つまり2つの状態の間(これらの状態を「有効」、「無効」と呼びます)。また、「非アクティブ」に非常に似ている特別な「失敗」状態もあり、サービスが何らかの方法で失敗したときに開始されます(プロセスが終了したときにエラーコードを返したり、競合が発生したり、ジョブがタイムアウトしたり、再起動されたり)。あまりにも))。この状態になると、後で参照できるように理由が記録されます。さまざまなセルタイプには、ここで説明されている5つの一般化されたセル状態にマッピングされる多くの追加のサブ状態があります。

(現在5つのユニット状態に「再装填」と「メンテナンス」が追加されて合計7つになりますが、大きく変わったことはありません)

systemctl list-units --type=service --state=runningアクティブ状態の実行中にサブ状態のすべてのサービスを表示すると、アクティブ化は完了します。

働く

「タスク」は、systemd に対する状態変更要求です。 RAM にのみ存在し、要求の処理中にのみ存在します。

状態の変更が要求されると(開始または終了、使用など)、systemctl start何が起こるのかsystemdで説明されています。systemctl stopオリジナルデザインドキュメント:

デバイスを開始または終了する要求がある場合は、そのデバイスとすべての依存関係を一時トランザクションに追加します。次に、トランザクションが一貫していることを確認します(つまり、すべての単位がループなしでAfter / Beforeを介してソートされます)。それ以外の場合、systemdは問題を解決し、サイクルを削除できるトランザクションから重要でないタスクを削除しようとします。さらに、systemd は、サービスの実行を停止するトランザクション内で必須ではない操作を抑制しようとします。非必須タスクは、元の要求に直接含まれていませんでしたが、Wants型の依存関係によって引き起こされたものです。最後に、トランザクションのジョブが待機中のジョブと競合していることを確認し、オプションでトランザクションを中断します。すべてがうまく行われ、トランザクションが一貫して影響が最小化されると、完了したすべてのジョブとマージされ、実行キューに追加されます。

デフォルトでは、たとえばsystemctl start ssh.service実行時にssh.service起動ジョブとそのジョブのすべての(まだ実行されていない)依存関係が作成され、デバイスはssh.service「アクティブ」状態になります。

systemctl list-jobsサービスの開始が完了していない場合、または状態の変更に重要なタスクが失敗した場合は、出力でこれらのタスクを表示できます。その後、サービスは「アクティブ」または「失敗」状態に切り替わります。

関連情報