Я пишу скрипт с использованием Fabric, который должен удаленно завершить процесс.Процесс убийства на удаленном хосте с использованием Fabric
(это означает, что команда заканчивает тем, что выполняется как/bin/команды Баш)
текущий код у меня есть следующие:
в файле kill.sh я есть
/bin/kill $(ps -ef | grep multiserver.jar | grep -v bin/sh | grep -v /bin/bash | grep -v sh | grep python | grep -v /usr/bin/java | grep -v /usr/bin/python | grep -v sh | awk '{print $2}')
который я бегу в ткани на моем удаленном хосте, используя следующие команды
local("scp " + "kill.sh " + user +"@" + server_address + ":" + directory)
run ("chmod u+x kill.sh")
run("./kill.sh")
Однако я получаю следующее сообщение об ошибке
out: Usage:
[] out: kill [options] <pid> [...]
Fatal error: run() received nonzero return code 1 while executing!
Requested: ./kill.sh
Executed: /bin/bash -l -c "cd ... && ./kill.sh"
Кто-нибудь знает, что я делаю неправильно?
Вполне вероятно, что команда 'ps -ef | grep multiserver.jar | grep -v bin/sh | grep -v/bin/bash | grep -v sh | grep python | grep -v/usr/bin/java | grep -v/usr/bin/python | grep -v sh | awk '{print $ 2}' 'ничего не возвращает и, следовательно,' kill'. У вас есть 'pkill', доступный на ваших серверах? – iruvar
эта команда всегда вернет идентификатор grep-вызова, по крайней мере. и он также терпит неудачу, когда я вручную запускаю multiserver.jar, чтобы убедиться, что что-то есть. – user1018513
Можете ли вы просто поместить всю команду в 'kill.sh' до вызова' kill' и посмотреть, что она выводит при вызове через 'Fabric' , У вас есть 'grep multiserver.jar', за которым следует' grep python' в командной строке. Я немного озадачен тем, какой процесс будет отвечать на эту комбинацию. – iruvar