如何使用shell脚本删除linux进程ID中的额外字符

时间:2011-04-12 06:08:30

标签: linux shell unix command pid

我试图通过它的pid杀死一个进程,这是我在网上找到的脚本。

PID=`ps -ef | grep myProcess | grep -v grep | awk '{print $2}'`  
echo -e Killing myProcess with pid: $PID..  

输出:使用pid杀死myProcess:13275 ^ M ..

有谁知道为什么会有^ M,我怎么摆脱它因为kill命令无法运行:

**arguments must be process or job IDs**

我在网上搜索但仍然不知道如何克服这个问题.. 任何帮助表示赞赏!!谢谢!

4 个答案:

答案 0 :(得分:1)

首先,你的语法错了。使用$()调用命令并将其输出存储到变量

PID=$(ps -ef | grep myProcess | grep -v grep | awk '{print $2}')

第二,您可以在一个awk语句中执行此操作,而无需额外的grep进程。

ps -eo pid,args | awk '/myProces[s]/{cmd="kill  "$1;print cmd; }'

答案 1 :(得分:0)

quick read online,打印命令到awk总是附加换行符(有时可以用Control-M或^ M表示)。

看来printf是一个合适的选择。也许:

PID=ps -ef | grep myProcess | grep -v grep | awk '{printf "%i",$2}'

答案 2 :(得分:0)

从我看到的,你不想通过它的名字来杀死一个进程。你通过获取进程PID然后尝试通过PID终止它来实现它。如果您想按名称杀死,请使用killall processname

答案 3 :(得分:0)

你可以使用:

PID=`pidof myProcess`