server_stop:
ssh $(SERVER_USERNAME)@$(SERVER_HOSTNAME) \
"kill $$(ps aux | grep '[p]ython abc-server' | awk '{print $$2}')"
这给出了
bash: line 0: kill: (60403) - No such process
bash: line 1: 60364: command not found
我认为p周围的括号没有正确转义。我该怎么做?
答案 0 :(得分:2)
如果您知道命令行,则不需要使用ps
+ grep
。请改为使用pgrep
。
server_stop:
ssh $(SERVER_USERNAME)@$(SERVER_HOSTNAME) \
'kill $$(pgrep -f "[p]ython abc-server")'
-f
允许您传递完整的命令行。
为了避免对命令$$(pgrep -f" [p] ython abc-server")进行shell评估,用单引号括起来,所以评估将在目标服务器中进行
注意:如果可能,请在服务器中保留一个启动/停止脚本,这样ssh命令只会调用脚本,避免出现当前问题。