Это сообщение об ошибке ...
Could not evaluate: /bin/sh: 3: command not found
указывает, что оболочка пыталась выполнить '3' как команду и, что неудивительно, не нашла ее.Единственный вероятный источник такой проблемы в представленном вами коде - ваша Exec
's unless
команда:
unless => "`ps -eaf | grep service | grep -v grep | wc -l` -eq 3"
Когда команда выполняется оболочкой,сначала он выполняет
ps -eaf | grep service | grep -v grep | wc -l
в подоболочке и записывает свой стандартный вывод.Эти выходные данные немного очищаются, а затем подставляются в общую команду для получения, по-видимому,
3 -eq 3
, которую оболочка затем пытается выполнить как команду '3' с двумя аргументами.Чтобы вместо этого оценить его как условное выражение, вам необходимо представить его в качестве аргументов test
или [
или аналогичных:
unless => "test `ps -eaf | grep service | grep -v grep | wc -l` -eq 3"