引用和转义ssh命令行
这个问题在这里已经有了答案:
这里是通过玩报价的工作解决方案:
ssh -q rmthost "bash -c 'ps -ef|grep ''''<'defunct'>''''|grep -v grep|awk "'"{print $2}"'" '"
然而,我自己并不十分理解这个机制:-)。 并且如果您交换单引号和双引号,它也不起作用。
老实说,我无法阅读你写的代码。 它太混乱了,我没有半个小时就搞清楚了。 为此,它很可能不是很好的代码。
当您尝试了解多层解码时,像这样的引语会变得非常混乱。 所以不是试图纠正你的引号,我会尝试用相同的结果提供更干净的代码。
ssh rmthost "bash -c "ps -ef | grep '<defunct>' | grep -v grep | awk '{print $2}'""
# The remote system will execute this:
bash -c "ps -ef | grep '<defunct>' | grep -v grep | awk '{print $2}'"
# Which in tells bash to execute this:
ps -ef | grep '<defunct>' | grep -v grep | awk '{print $2}'
但是,为什么不尝试删除一些缓慢的grep管道。 awk
可以为你做过滤。 我假设<defunct>
出现在行末。 如果是这样,那么你可以使用:
ssh rmthost "bash -c "ps -ef | awk '/<defunct>$/ {print $2}'""
# the remote system executes this:
bash -c "ps -ef | awk '/<defunct>$/ {print $2}'"
# bash executes this:
ps -ef | awk '/<defunct>$/ {print $2}'
或者更好的是,在ps -el
使用第二列,这将成为Z
僵尸进程:
ssh rmthost "bash -c "ps -el | awk '/^. Z / {print $4}'""
# the remote system executes this
bash -c "ps -el | awk '/^. Z / {print $4}'"
# bash executes this:
ps -el | awk '/^. Z / {print $4}'
链接地址: http://www.djcxy.com/p/57133.html