请给一些建议。
我试图远程杀死进程(通过SSH转换为主机名),找到一些进程并将其杀死。但是我有一个条件:Do not kill java process, sshd and gnome
。
以下是示例(我只做echo
,kill
除外):
#/bin/sh -x.
HOSTFILE=$1
vars=`cat $HOSTFILE`
for i in $vars; do
ssh "$i" /bin/bash <<'EOF'
echo $(hostname)
ps aux | grep -e '^sys_ctl'| grep -v "java" | grep -v "sshd" | \
grep -v "gnome" | awk '{print $2$11}'| for i in `xargs echo`; do echo $i; done;
EOF
done
结果是:
host1:
21707/bin/bash
21717ps
21718grep
21722awk
21723/bin/bash
21724xargs
host2:
15241/bin/bash
15251ps
15252grep
15256awk
15257/bin/bash
15258xargs
89740-bash
98467sleep
98469sleep
98471sleep
98472sleep
98474sleep
98475sleep
我想杀死(output
,仅 sleep
个进程,不 grep,awk,bash,xargs,ps
你能推荐些优雅的东西吗?
答案 0 :(得分:2)
为什么不只是:kill $(pgrep -f sleep)
或:pkill -f sleep