systemdサービスを停止または再起動する前に、ロードされたApacheモジュールをディスクに書き込む

systemdサービスを停止または再起動する前に、ロードされたApacheモジュールをディスクに書き込む

systemdサービスを停止または再起動する前に、ロードされたApacheモジュールのリストをファイルとしてディスクに書きたいと思います。

だからapache2.serviceに追加しました。

ExecStop=/usr/sbin/apachectl -M > /home/ciasto/services/logs/apache2/loaded_mods

ただし、停止するとエラーが発生します。

$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: failed (Result: exit-code) since Tue 2020-08-25 16:20:37 United; 3min 8s ago
  Process: 7269 ExecStop=/usr/sbin/apachectl -M >  /home/ciasto/services/logs/apache2/loaded_mods (code=exited, status=1/FAILURE)
 Main PID: 6245 (code=exited, status=0/SUCCESS)

Aug 25 16:20:36 rockpi apachectl[7269]:   -M                 : a synonym for -t -D DUMP_MODULES
Aug 25 16:20:36 rockpi apachectl[7269]:   -t -D DUMP_INCLUDES: show all included configuration files
Aug 25 16:20:36 rockpi apachectl[7269]:   -t                 : run syntax check for config files
Aug 25 16:20:36 rockpi apachectl[7269]:   -T                 : start without DocumentRoot(s) check
Aug 25 16:20:36 rockpi apachectl[7269]:   -X                 : debug mode (only one worker, do not detach)
Aug 25 16:20:36 rockpi apachectl[7269]: Action '-M >  /home/ciasto/services/logs/apache2/loaded_mods' failed.
Aug 25 16:20:36 rockpi apachectl[7269]: The Apache error log may have more information.
Aug 25 16:20:36 rockpi systemd[1]: apache2.service: Control process exited, code=exited status=1
Aug 25 16:20:37 rockpi systemd[1]: apache2.service: Failed with result 'exit-code'.
Aug 25 16:20:37 rockpi systemd[1]: Stopped The Apache HTTP Server.

答え1

使用エラーが発生したようです。 apachectlあなたがそれを呼び出したかのように答えます:

/usr/sbin/apachectl '-M > /home/ciasto/services/logs/apache2/loaded_mods'

パラメータは次のとおりです-M>/home/...

この行は、または同じ特定の演算子をExecStop=サポートまたはサポートしません。これらの演算子を使用してシェルを直接呼び出し、コマンドを引数として渡すには、次のようにします。shsh&>|

ExecStop=+/bin/sh -c '/usr/sbin/apachectl -M > /home/ciasto/services/logs/apache2/loaded_mods'

あなたの意見からわかるように、あなたのサービスは素晴らしかったですUser=www-datawww-dataトランザクションに実行権限がないか、sbinトランザクションに書き込み権限がない可能性があります/home/ciasto/*。したがって、他の行では続けますwww-dataExecStop=+/bin/shExecStop=/bin/sh

小さなデモ:

User=www-data
ExecStop=/usr/bin/whoami
ExecStop=+/usr/bin/whoami

ジャーナルには次の内容が記録されます。

www-data
root

関連情報