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`\'"'