우리는 대부분의 내용을 알아냈습니다. 하지만 그 다음에는 무슨 일이 일어날까요?
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"