В моем файле redis@.service
есть следующее:
...
ExecStop=/bin/bash -c \"/usr/local/bin/redis-cli -p $(echo %i | awk -F \'.\' \'{ print $2 }\') shutdown\"
...
Затем, когда я запускаю:
sudo systemctl stop redis@redis.6379.test-site.com.service
Затем:
sudo systemctl status redis@redis.6379.test-site.com.service
Iget:
...
Process: 10042 ExecStop=/bin/bash -c "/usr/local/bin/redis-cli -p $(echo redis.6379.test-site.com | awk -F '.' '{ print $2 }') shutdown" (code=exited, status=1/FAILURE)
...
Sep 10 17:36:53 hostname bash[10042]: -p: -c: line 0: unexpected EOF while looking for matching `"'
Sep 10 17:36:53 hostname bash[10042]: -p: -c: line 1: syntax error: unexpected end of file
Затем, если я запускаю:
sudo systemctl start redis@redis.6379.test-site.com.service
Затем следует (взято из вывода systemctl status
):
/bin/bash -c "/usr/local/bin/redis-cli -p $(echo redis.6379.test-site.com | awk -F '.' '{ print $2 }') shutdown"
Тогда команда работаеткак и ожидалось ...
Может кто-нибудь пролить свет на то, что здесь происходит?
Если Systemd просто запускает команду, показанную для ExecStop
, и эта команда прекрасно работает при запуске вручнуюразве это не должно работать, когда systemd запускает его?
У меня такое чувство, что это связано с цитированием, но я слишком много новичка в bash, чтобы обернуть вокруг него голову.