인용된 ExecStop 명령을 어떻게 설정합니까?

인용된 ExecStop 명령을 어떻게 설정합니까?

systemd를 사용하여 서비스를 만들었습니다. 서비스 파일은 다음과 같습니다.

Description=Contents Copy Copier

[Service]
Type=forking
Restart=always
User=root
ExecStart=/usr/local/bin/ccCopier /etc/ccCopier.cfg
KillMode=none
ExecStop=/usr/bin/mysql -u root -proot ContentsCopy -e "update stock set Copier= 'quiesce' where Stock='`/usr/bin/hostname`'"

[Install]
WantedBy=multi-user.target

명령줄에서 ExecStop 명령을 실행하면 정상적으로 실행됩니다. 그러나 systemctl stop을 실행하면 작동하지 않습니다. 왜 이런 일이 발생하는지 모르겠습니다.

답변1

백틱 기호는 쉘에 의해 확장됩니다. systemd는 셸에서 명령을 실행하지 않으므로 이 표기법을 사용할 수 없습니다. 이 줄을 다음으로 바꿀 수 있습니다.

ExecStop=/bin/bash -c '/usr/bin/mysql -u root -proot ContentsCopy -e "update stock set Copier= \'quiesce\' where Stock=\'`/usr/bin/hostname`\'"'

관련 정보