我尝试了这段代码并且无法正常工作
#!/bin/sh
#Find the Process ID for syncapp running instance
PID=`ps -ef | grep syncapp 'awk {print $2}'`
if [[ -z "$PID" ]] then
Kill -9 PID
fi
在awk附近显示错误。
请提出任何建议。
答案 0 :(得分:129)
实际上,最简单的方法是传递如下所示的kill参数:
ps -ef | grep your_process_name | grep -v grep | awk '{print $2}' | xargs kill
希望它有所帮助。
答案 1 :(得分:13)
这对我有用。
PID=`ps -eaf | grep syncapp | grep -v grep | awk '{print $2}'` if [[ "" != "$PID" ]]; then echo "killing $PID" kill -9 $PID fi
答案 2 :(得分:9)
我使用命令pkill
:
NAME
pgrep, pkill - look up or signal processes based on name and
other attributes
SYNOPSIS
pgrep [options] pattern
pkill [options] pattern
DESCRIPTION
pgrep looks through the currently running processes and lists
the process IDs which match the selection criteria to stdout.
All the criteria have to match. For example,
$ pgrep -u root sshd
will only list the processes called sshd AND owned by root.
On the other hand,
$ pgrep -u root,daemon
will list the processes owned by root OR daemon.
pkill will send the specified signal (by default SIGTERM)
to each process instead of listing them on stdout.
如果您的代码通过解释器(java,python,...)运行,那么进程的名称就是解释器的名称。您需要使用参数--full。这与命令名称和参数匹配。
答案 3 :(得分:4)
你可能想写
`ps -ef | grep syncapp | awk '{print $2}'`
但我会支持@PaulR的答案 - killall -9 syncapp
是一个更好的选择。
答案 4 :(得分:1)
许多* NIX系统也有pkill(1)和killall(1)中的任何一个,它们允许您按名称终止进程。使用它们,您可以避免整个解析ps
问题。
答案 5 :(得分:0)
来到某个地方......认为这很简单实用
您可以直接在crontab中使用该命令,
* * * * * ps -lf | grep "user" | perl -ane '($h,$m,$s) = split /:/,$F
+[13]; kill 9, $F[3] if ($h > 1);'
或者,我们可以把它写成shell脚本,
#!/bin/sh
# longprockill.sh
ps -lf | grep "user" | perl -ane '($h,$m,$s) = split /:/,$F[13]; kill
+ 9, $F[3] if ($h > 1);'
并像这样称呼crontab,
* * * * * longprockill.sh
答案 6 :(得分:0)
#!/bin/sh
#Find the Process ID for syncapp running instance
PID=`ps -ef | grep syncapp 'awk {print $2}'`
if [[ -z "$PID" ]] then
---> Kill -9 PID
fi
不确定这是否有帮助,但是' kill'拼写不正确。 它是大写的。
尝试杀死'代替。
答案 7 :(得分:0)
这应该会杀死与你被允许杀死的grep相匹配的所有进程。
-9表示"杀死所有可以杀死的进程"。
kill -9 $(ps -ef | grep [s]yncapp | awk '{print $2}')
答案 8 :(得分:-1)
尝试以下脚本:
#!/bin/bash
pgrep $1 2>&1 > /dev/null
if [ $? -eq 0 ]
then
{
echo " "$1" PROCESS RUNNING "
ps -ef | grep $1 | grep -v grep | awk '{print $2}'| xargs kill -9
}
else
{
echo " NO $1 PROCESS RUNNING"
};fi
答案 9 :(得分:-1)
Kill -9 PID
应该是
kill -9 $PID
看到区别?
答案 10 :(得分:-2)
PID=`ps -ef | grep syncapp 'awk {print $2}'`
if [[ -z "$PID" ]] then
**Kill -9 $PID**
fi