Chinaunix

标题: 如何精准获取 进程 PID [打印本页]

作者: dcmggg    时间: 2008-06-07 16:13
标题: 如何精准获取 进程 PID
要求: bash/sh
系统中正在运行的 程序,想要得到它的PID (例子程序 CC)
我的思路是这样的
可惜 总是 不能
AA=$(ps -aux | awk '/CC/{print $2}')
echo $AA

有没有其他的好的办法来实现 了
作者: 寂寞烈火    时间: 2008-06-07 17:07
pgrep 进程名
作者: xjhuang    时间: 2008-06-07 17:14
用内置变量$$吧

echo $$
作者: dcmggg    时间: 2008-06-07 17:17
姑且不说 这个命令的作用
这个命令好像只能在linux 中使用是吧、
如果是在 、linux 中  pidof 更好一点吧
那 bsd 中呢
不过 pgrep 还真没 遇到过

谢谢
作者: dcmggg    时间: 2008-06-07 23:46
上面的 都 不太 正确
如果是 linux 系统 则 火老大 的办法没 问题
用 pgrep和  pidof 都可以 获取 指定进程的 pid 如果是 bsd 那么不可以

原帖由 xjhuang 于 2008-6-7 17:14 发表
用内置变量$$吧

echo $$


这个是  要 在程序运行前就要 在 shell中加上echo $$
才可以
因为 那 个 是 获取 当前 进程 pid


如果 是 bsd 虽然不是 真的 利用程序获得了 pid 但是 我的 目的达到了 ,不知道 有没有更好的办法
#!/bin/sh
echo "please input ServerName:"
read ServerName
ps -aux |grep $ServerName
echo "input PID"
read SerPID
kill -15 $SerPID
echo "$ServerName is killd"
作者: 寂寞烈火    时间: 2008-06-08 00:19
try
ps -aux| awk '/进程名/ && !/awk/{print $2}'| xargs kill -9
作者: dcmggg    时间: 2008-06-08 00:54
原帖由 寂寞烈火 于 2008-6-8 00:19 发表
try
ps -aux| awk '/进程名/ && !/awk/{print $2}'| xargs kill -9



你 的 这个我 也 想过
但是  有的 时候 会出现 两个
一个 是 原来进程 的 pid
有 个 是 awk 进程 的PId

不过你的 到是 可以 有几个杀几个
作者: 寂寞烈火    时间: 2008-06-08 01:28
标题: 回复 #7 dcmggg 的帖子
谢谢指点~~ 这么说!/awk/是多余的啦~~
作者: lxc2002    时间: 2008-06-08 21:23
今天刚从书上看到:
echo $$

作者: waker    时间: 2008-06-10 08:27
ps -aux |grep -F "$ServerName"|grep -vF grep
作者: woodie    时间: 2008-06-10 09:23
标题: 回复 #1 dcmggg 的帖子
不知道楼主是什么系统,ps命令支持那种风格。不过你可以试试看:

ps aux |grep [C]C

或者
ps -e |grep CC

或者
ps axo comm|grep CC




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2