我知道我可以使用ssh -t login @ machine"命令"从另一台机器远程运行命令,但是我很难运行更复杂的命令:
watch "ps aux | awk '{print $1}' | grep php-fpm | wc -l"
我正尝试使用不同类型的引号,但是虽然看起来命令似乎正在触发,但它显示的错误如下:
awk:cmd。 line:1:{print awk:cmd。行:1:
^意外换行或结束
字符串
答案 0 :(得分:4)
事情是$
在传递给ssh
命令之前由shell扩展。你需要通过转发它来剥夺它的特殊含义 local ,然后再将它传递给ssh
ssh -t login@machine watch "ps aux | awk '{print \$1}' | grep php-fpm | wc -l"
您看到的错误是因为当shell尝试展开$1
时,它找不到它的值并留下一个空字符串,导致传递给awk
的参数数量不正确。
此外,您可以使用简单的逻辑替换包含awk
和grep
的shell管道
ssh -t login@machine watch "ps aux | awk '\$1 == \"php-fpm\"{count++}END{print count}'