コマンドラインでsystemctlを使用して新しいシステムデバイス/サービス/タイマー/ソケットを作成しますか?

コマンドラインでsystemctlを使用して新しいシステムデバイス/サービス/タイマー/ソケットを作成しますか?

CLIツールをsystemctl edit使用して、サービス、タイマー、ソケット、デバイス、マウント、自動マウント、ターゲット、スワップ、パス、スライス、スコープ、nspawnファイルなどの既存のシステムユニットを編集できます。システムユニットを削除/リセットできる別のサブコマンドがあります。このような新しいsystemctlファイルを作成することもできますか?

ほとんどのオンラインガイドでは、カスタムテキストエディタを使用してファイルをどこかに配置するように指示します(最初に正しいsystemdディレクトリを見つける必要がある場所...)。また、ファイルを手動でコピーする場合は、デーモンを再ロードする必要がありますsystemctl daemon-reload

ただし、システム管理者として、デフォルトの場所に新しいデバイスをすばやく作成し、systemctl edit既存のアイテムを編集/上書きすることもできます。私のお気に入りのCLIテキストエディタ(ナノオーダー)に直接表示され、コンテンツをすぐに編集できることが気に入ります。

試しましたが、systemctl addコマンドsystemctl createはすべて存在しません。

私はオンラインでその情報を見つけることができず、ここではStackexchangeの答えも見つかりませんでした...

答え1

実際にはsystemctl editまだ存在しない新しいサービスでコマンドを実行しようとすると、何をすべきかを正確に伝えます。

$ systemctl edit happy-unicorns.service
No files found for happy-unicorns.service.
Run ‘systemctl edit --force --full happy-unicorns.service' to create a new unit.

このように新しいシステムデバイスの作成(この場合はサービス)実際に以下を実行します。

$ systemctl edit --force --full happy-unicorns.service

$EDITORこれにより、テキストエディタがポップアップとして表示されます(Linuxツールで通常使用されるように環境変数を設定して指定できます)。

意味:

  • --full 生成されたオーバーレイだけでなく、ユニットファイル全体が編集されます。つまり、この例では、たとえば/etc/systemd/system/.#happy-unicorns.service11738733f89dc655サービスのディレクトリとオーバーライドを作成するのではなく、正しい場所でサービスファイル全体を実際に使用します。/etc/systemd/system/happy-unicorns.service.d/.#override.conf98be493089631328
    メモ:systemctl がランダムな数を追加し、ファイルを一時ファイルとして表示することで、変更が直接適用されないことがわかります。それでも完全な状態であることが確認され、すべてが正しい場合はファイルが移動されます。
  • --force実際には、既存のファイルを編集するのではなく、新しいファイルを作成するように指定する必要があります。
  • 共通スイッチを追加して別の場所(ユーザーやグローバルスコープなど)にファイルを作成したい場合は、すべてのユーザーに現在の--userユーザーを追加できます--global--systemこれは現在のシステムのデフォルトです。

別のサブコマンドではないので、それほど明確ではないかもしれないことに同意します。しかし、ファイルを編集し、systemctlがすでに存在するファイルであるかどうかを判断することを考えると、完全に理解されます。

また見てくださいsystemctlマニュアルページより多くの情報を知りたいです。

関連情報