Don';t kill创建了进程,它是由ps-linux创建的

Don';t kill创建了进程,它是由ps-linux创建的,linux,bash,Linux,Bash,请给我一些建议 我试图远程终止进程(ssh到主机名),找到一些进程并终止它们。但我有一个条件:不要杀死java进程、sshd和gnome 下面是一个例子(我只做echo,除了kill): 我想杀死(output),只杀死睡眠进程,不杀死grep、awk、bash、xargs、ps 你能推荐一些优雅的吗?为什么不干脆:kill$(pgrep-f sleep) 或者:pkill-f sleep为什么不干脆:kill$(pgrep-f sleep) 或者:pkill-f sleepkillall sl

请给我一些建议

我试图远程终止进程(ssh到主机名),找到一些进程并终止它们。但我有一个条件:
不要杀死java进程、sshd和gnome

下面是一个例子(我只做
echo
,除了
kill
):

我想杀死(
output
),只杀死
睡眠
进程,不杀死
grep、awk、bash、xargs、ps

你能推荐一些优雅的吗?

为什么不干脆:
kill$(pgrep-f sleep)

或者:
pkill-f sleep
为什么不干脆:
kill$(pgrep-f sleep)

或者:
pkill-f sleep

killall sleep
<代码>用于i in
xargs echo
;do echo$i
是我见过的最奇怪的事情。@KamilCuk但我可以杀死所有进程,除了
grep、awk、bash、xargs、ps
杀死所有睡眠
<代码>用于i in
xargs echo
;do echo$i
是我见过的最奇怪的事情。@KamilCuk但我可以杀死所有进程,除了
grep、awk、bash、xargs、ps
?我认为
grep-e'^sys\U ctl'
应该检查进程所有者的进程,所以你可能想在pgrep&pkill中添加一个
-U sys\U ctl
(虽然OP没有描述这个条件,所以澄清一下就好了)我认为
grep-e'^sys\U ctl'
应该检查进程所有者的,所以您可能想在pgrep&pkill中添加一个
-U sys\U ctl
(虽然OP没有描述这个条件,所以澄清一下就好了)
#/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