systemd 서비스를 중지하거나 다시 시작하기 전에 로드된 아파치 모듈 목록을 파일로 디스크에 쓰고 싶습니다.
그래서 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=
지원하거나 지원하지 않습니다 . 이러한 연산자를 사용하여 쉘을 직접 호출하고 명령을 인수로 전달하려면 다음을 수행하십시오.sh
sh
&
>
|
ExecStop=+/bin/sh -c '/usr/sbin/apachectl -M > /home/ciasto/services/logs/apache2/loaded_mods'
귀하의 의견에서 알 수 있듯이 귀하의 서비스는 훌륭했습니다 User=www-data
. www-data
트랜잭션에 실행 권한이 없거나 sbin
트랜잭션에 쓰기 권한이 없을 수 있습니다 /home/ciasto/*
. 따라서 다른 줄에서는 계속 www-data
.ExecStop=+/bin/sh
ExecStop=/bin/sh
작은 데모:
User=www-data
ExecStop=/usr/bin/whoami
ExecStop=+/usr/bin/whoami
일지에 다음과 같은 내용이 기록됩니다.
www-data
root