私たちはほとんどの内容を見つけました。しかし、次に何が起こりますか?
for i in $(arp |sort |awk '{print $1}'|grep IPADDRESS)
do
ssh USERNAME@$i "ps -ef |grep X11|grep -v grep |awk '{print $2}'|xargs kill"
done
kill: USERNAME: invalid process id
ループで使用されたユーザー名でSSHを実行しましたps -ef | grep X11| grep -v grep | awk '{print $2}'| xargs kill
が、うまくいきますが、xargsが印刷しているユーザー名の代わりにユーザー名を取得しているようです。
どんなアイデアがありますか?
答え1
\
a前にawkを試してください$
。例:
ssh USERNAME@$i "ps -ef |grep X11|grep -v grep |awk '{print \$2}'|xargs kill"
答え2
代わりに、パイプが不要なpkillを使用できます。
ssh USERNAME@$i "pkill -f X11"
または ps -ef を好む場合、
ssh USERNAME@$i "ps -ef |grep [X]11 |awk '{print \$2}'|xargs kill"
または
ssh USERNAME@$i "ps -ef | awk '/[X]11/ {print \$2}'|xargs kill"