コンピュータの起動を速くするだけではありません。
systemd が最初に導入されたとき、ブート時間を短縮する機能について多くの議論がありました。この機能は多くの人にとって魅力的なものであり、様々な意味で現在でも高い評価を得ています。systemd がブートプロセス中に並列にサービスを起動する役割を果たしているのは事実ですが、それだけではありません。ここでは、systemd ができることに気づいていないかもしれないが、活用すべきことを3つ紹介します。
Systemd, Linux ps の簡素化
psを使ったことがあるなら、あるいはtopコマンドを使ったことがあるなら、コンピュータが何百ものプロセスを常に実行していることを知っているでしょう。コンピュータやそのユーザーが何をしているかを理解するために、このような情報が必要なこともあります。また、本当に必要なのは一般的な概要であることもあります。
systemd-cgtopコマンドは、タスクスケジューリングに基づくコンピュータの負荷をシンプルに表示します。コントロールグループ 最近のLinuxにとって重要で、基本的にコンテナやKubernetesの基礎となるサポート構造ですが、家庭用コンピュータでも有用な構造です。例えば、systemd-cgtopの出力から、システムプロセスではなくユーザープロセスの負荷を見ることができます:
Control Group Proc+ %CPU Memory Input/s Output/s/ 1.6G 0B 3.0Muser.slice 4 2.8 1.1G 0B 174.7Kuser.slice/user-1000.slice 4 2.8 B 174.7Ksystem.slice 1.5G 0B 2.8M
また、ユーザー空間のプロセスだけを表示したり、ユーザー空間のプロセスとカーネル・スレッドを表示したりすることもできます。
これは決してtopやpsに取って代わるものではなく、システムに対する異なる独自の視点を提供するものです。制御グループを使用するコンテナを実行する際には、非常に重要です。
Linux 時限タスク
Cron Linuxの古典的なコンポーネントです。Cronは信頼性が高く、システムにうまく統合されています。
問題は、Cronがシャットダウンされるコンピューターがあることを認識していないことです。Cronタスクが深夜にスケジュールされているにも関わらず、毎日23:59にコンピュータをシャットダウンしている場合、Cronタスクは実行されません。
この質問に対する答えとして、良い Anacronありますが、Cronほど統合されていません。Anacronを実行するには、多くのセットアップが必要です。
Description=BackupRequires=myBackup.service[Timer]OnBootSec=30minOnUnitActiveSec=1d[Install]WantedBy=timers.target
もちろん、あなたが介入してジョブの実行を促すこともできます。 OnUnitActiveSec おかげで、systemd は手動で起動したジョブを実行しようとしません。
Linux コンテナの実行
コンテナは複雑なサービスをとても簡単に開始できます。 Mattermost や Discourse サーバをほんの数分で実行できます。場合によっては、大変なのはコンテナを実行した後の管理と監視です。podman を使えば簡単に管理できますが、Podman の管理には何を使うのでしょうか?systemd を使うにはできます。
Podman には、コンテナを systemd で管理・監視できるようにユニットファイルを生成するコマンドが組み込まれています:
$ podman generate systemd --new --files --name example_pod
あとはサービスを開始するだけです:
$ systemctl --user start pod-example_pod.service
他のサービスと同様に、systemd はどんな状況でもコンテナポッドが動作していることを確認します。systemd は問題をログに記録し、journalctl やその他の重要なログを見ることができます。
ありませんが、1つか2つのコンテナで、信頼性が高く予測可能なサービスを提供するだけなら、Podmanとsystemdは素晴らしいペアです。
systemd eBook をダウンロード
を経由して





