引用された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`\'"'

おすすめ記事