【问题标题】:Running commands remotely returns unexpected output远程运行命令返回意外输出
【发布时间】:2016-03-10 22:15:39
【问题描述】:

我想远程杀死一个进程,我使用ssh -i这样的命令:

ssh -i $app_rsa_file_path $app_server_user@$app_server_ip "ps aux | grep java | grep billing | awk '{print $2}' | xargs kill -9 > /dev/null 2>&1"

如果我直接在服务器上运行命令,它工作正常;但在远程版本中,awk 似乎没有效果,命令将ps aux | grep java | grep billing 的整个输出传递给kill,我得到了这个:

kill: invalid option -- 'D'

Usage:
 kill [options] <pid> [...]

Options:
 <pid> [...]            send signal to every <pid> listed
 -<signal>, -s, --signal <signal>
                        specify the <signal> to be sent
 -l, --list=[<signal>]  list all signal names, or convert one to a name
 -L, --table            list all signal names in a nice table

 -h, --help     display this help and exit
 -V, --version  output version information and exit

For more details see kill(1).

知道原因吗?

【问题讨论】:

  • 我认为你需要在 ssh cmd 中转义 $。
  • 是的@LeeHoYo,这就是诀窍。谢谢。您能否将其添加为答案?
  • 一如既往,grep foo | grep bar | awk '{ baz }'better 写成 awk '/foo/ &amp;&amp; /bar/ { baz }'

标签: bash awk ssh kill kill-process


【解决方案1】:

你使用双引号 " 所以你需要转义 $ 特殊字符:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-17
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多