Linux上でnginxなどのサービスの動作を微調整する必要があったことがあるなら、おそらく分かりにくい設定ファイルを編集したり、パッチを当ててもシステムに影響が出ないようにしたりと、面倒な作業に悩まされたことがあるでしょう。systemdのオーバーライドファイルを使うと、まさに救世主です。変更内容をクリーンな状態に保ち、簡単に元に戻すことができ、元の設定を直接変更するよりもはるかにリスクが低くなります。そうすれば、何か問題が発生しても、元に戻すだけで元に戻ります。これは特に、サーバーを管理している場合や、ローカルの設定をデフォルトと少し異なる動作にしたい場合に便利です。

LinuxでSystemdサービスを修正/上書きする方法

ターミナルに入り、脳をバックアップし、設定をバックアップします

まず最初に、ターミナルを開いてください(まだ開いていない場合は)。通常はCtrl + Alt + Tで、またはアプリケーションメニューからもアクセスできます。ターミナルを開いたら、サービスの現在の状態を確認することをお勧めします。そうすれば、何を処理しているのかが分かります。

sudo systemctl status nginx

これは、動作に問題がある場合のログやエラーを確認するためのものです。コアファイルに変更を加えずにnginxの動作を変更するには、systemctl editを使用します。コマンドは以下のようになります。

sudo systemctl edit nginx

デフォルトのエディタ(通常はnanoまたはvim)で空のオーバーライドファイルが開き、そこにカスタム設定を記述できます。設定によってはnanoが開き、別の設定ではvimが開くこともあります。あまり慣れていなくても心配しないでください。ここは調整のための安全な場所だということを覚えておいてください。

サービスの動作のカスタマイズ – 何を追加するか、その理由

エディタ内で必要な設定を追加します。例えば、nginxがクラッシュした場合に自動的に再起動するには、以下の設定を追加します。

[Service] Restart=on-failure

これは、nginxが予期せずクラッシュしたが、面倒を見たくない場合に役立ちます。[Service]セクションは、systemdにサービス関連の設定を編集していることを伝えるため、必須です。より具体的に設定したい場合は、LimitNOFILE=65535環境変数の設定などの他のディレクティブを追加することもできます。

保存、リロード、再起動 – 重要なクイックステップ

変更を加えたら保存してください。nanoの場合は、保存しCtrl + Oてから終了してください。その後、systemdに新しい設定を再読み込みするよう指示します。EnterCtrl + X

sudo systemctl daemon-reload

これは「ねえ、systemd、見て、変更したよ」と言っているようなものです。変更を有効にするために、サービスを再起動してください。

sudo systemctl restart nginx

すべてが正しく設定されていれば、nginx は変更を反映するはずです。クラッシュしたり再起動が必要になったりした場合でも、この設定のおかげで自動的に実行されます。ただし、設定によっては、うまくいかない場合、再起動、あるいは少なくとも systemd マネージャー全体をリロードする必要がある場合もあります。Linux は当然ながら、必要以上に難しい設定にしているからです。

必要に応じて元に戻す。設定したら忘れないでください。

気が変わったことはありますか?大丈夫です。上書きを元に戻すには、次のコマンドを実行してください。

sudo systemctl revert nginx

これにより、カスタムオーバーライドが削除され、nginx は再びデフォルト設定で実行されるようになります。/etc/systemd/system/nginx.service.d/冒険したい場合は、オーバーライドファイルを手動で削除することもできますが、revert で簡単に削除できます。

追加のヒントとよくある問題

私が遭遇したいくつかの落とし穴:

  • 常に設定をバックアップしてください。Linux では設定を必要以上に複雑にしてしまうためです。
  • nginx が期待どおりに動作しない場合は、sudo systemctl status nginxまたはを実行してjournalctl -u nginx、何が起こっているかを確認します。
  • 変更が反映されない場合は、実行sudo systemctl daemon-reexecまたは完全な再起動をお試しください。確かに面倒ですが、必要な場合もあります。

補足ですが、オーバーライドファイルが正しい場所(/etc/systemd/system/nginx.service.d/など)にあるか確認しておくと安心です。メインの *.service ファイルを手動で変更してしまった場合は、それは良くありません。オーバーライドファイルを使うのが最善策です。

まとめ

この方法は、systemd のサービスを思い通りに動作させると同時に、整理整頓と安全性を保ちます。非常に簡単ですが、初めて使う場合は少し面倒かもしれません。忍耐力と、設定ファイルの保存場所への注意が必要です。正しく使用すれば、システムを壊したり、アップデート後に変更内容を失ったりすることなく、より洗練された方法でサービスを制御できます。

まとめ

  • sudo systemctl edit <service>を使用してオーバーライドファイルを作成します。
  • [サービス]の下にカスタムオプションを追加します
  • 保存し、sudo systemctl daemon-reloadでリロードします。
  • テストのためにサービスを再起動します
  • 必要に応じてsudo systemctl revert <service>で変更を元に戻します。

これが役に立つことを祈る

これで数時間ほど時間が短縮されるか、少なくとも、すべてを壊さずにサービスを調整しようとして狂乱状態に陥るのを防げるかもしれません。一度コツをつかめば、これは確実なテクニックですし、システムファイルを直接編集するよりもはるかに優れています。ただし、Linuxは時々奇妙な動作をしますが、忍耐は必ず報われるということを覚えておいてください。