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
マニュアルページより多くの情報を知りたいです。