shell脚本获取进程ID并杀死的实现及问题解析
经常需要杀死某个进程,操作了几次之后,对一个熟练的码农来说,就要制作自己的工具了。有些工具虽然很小,但是却能节省一大部分的时间。
输入某个进程的ID并杀死的方法。这种事情,一般是先搜索再进行优化,这种对我这种不是大牛的人来说,是最快的方法:
果然不出所料,很快我就找到一个能用的脚本:
#!/bin/bash
echo "Input process name first"
read input1 PID=$(ps -e|grep $input1|awk '{printf $1}') if [ $? -eq ]; then
echo "process id:$PID"
else
echo "process $input1 not exit"
exit
fi kill - ${PID} if [ $? -eq ];then
echo "kill $input1 success"
else
echo "kill $input1 fail"
fi
可是,运行了几次之后,我发现了一个问题,就是这个脚本会把自己删除PID的线程也删掉,这种是删不掉的,所以总会报错。
找了一些资料,才发现里面有个问题需要解决:就是需要忽略当前的脚本即可:
pid=`ps -ef | grep "$filename" | grep -v "cgroup" | grep -v "grep" | awk '{print $2}'`
接下来,把这个脚本改成这样就很完美了:
#!/bin/bash
#echo "Input process name first"
#read input1 PID=`ps -ef | grep "arm-none-eabi-gdb" | grep -v "cgroup" | grep -v "grep" | awk '{print $2}'` if [ $? -eq ]; then
echo "process id:$PID"
else
echo "process $input1 not exit"
exit
fi kill - ${PID} if [ $? -eq ];then
echo "kill $input1 success"
else
echo "kill $input1 fail"
fi
顺便说明一下,grep -v 这个命令要好好用,以前用的太少了。也许,下面的这个例子能够清楚的给出这个关键字的含义和用法:
➜ scripts git:(master) ✗ ps -ef | grep "kill_gdb"
:30下午 ttys003 :00.00 sh kill_gdb.sh
:33下午 ttys003 :00.01 vim kill_gdb.sh
:38下午 ttys003 :00.02 vim kill_gdb.sh
:39下午 ttys003 :00.01 vim kill_gdb.sh
:40下午 ttys003 :00.01 vim kill_gdb.sh
:02下午 ttys003 :00.02 vim kill_gdb.sh
:04下午 ttys003 :00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn kill_gdb
➜ scripts git:(master) ✗ ps -ef | grep "kill_gdb" | grep -v "grep"
:30下午 ttys003 :00.00 sh kill_gdb.sh
:33下午 ttys003 :00.01 vim kill_gdb.sh
:38下午 ttys003 :00.02 vim kill_gdb.sh
:39下午 ttys003 :00.01 vim kill_gdb.sh
:40下午 ttys003 :00.01 vim kill_gdb.sh
:02下午 ttys003 :00.02 vim kill_gdb.sh
shell脚本获取进程ID并杀死的实现及问题解析的更多相关文章
- 014-交互式Shell和shell脚本获取进程 pid
Linux 的交互式 Shell 与 Shell 脚本存在一定的差异,主要是由于后者存在一个独立的运行进程 1.交互式 Bash Shell 获取进程 pid 在已知进程名(name)的前提下,交互式 ...
- shell脚本获取mysql插入数据自增长id的值
shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...
- 用shell脚本监控进程是否存在 不存在则启动的实例
用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]th ...
- linux shell脚本监控进程是否存在
用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ...
- 在 shell 脚本获取 ip、数字转换等网络操作
在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...
- 如何通过进程名获取进程ID
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何通过进程名获取进程ID.
- linux与windows查看占用端口的进程ID并杀死进程
有时候tomcat出现端口被占用,需要查出进程ID并杀死进程. 1.查找占用端口的进程ID(windows与linux一样 8005也可以加上引号 grep可以用findstr替换) 6904就 ...
- 关于使用java执行shell脚本获取centos的硬盘序列号和mac地址
1.获取硬盘序列号: 新建shell脚本文件: identifier.sh, 内容为: diskdata=`fdisk -l` diskleft=${diskdata#*"identifie ...
- python获取进程id号:
python获取进程id号: os.getpid()获取当前进程id os.getppid()获取父进程id
随机推荐
- java.lang.OutOfMemoryError: PermGen space 解决办法
最近在学习spring mvc时,用了大量的第三方jar包,导致启动tomcat时报内存溢出的错 java.lang.OutOfMemoryError: PermGen space 解决办法:在mye ...
- 带BOM头文件解析
在java中apache提供了一个工具类BOMStream,在获取文件流时,将获取到的文件流转化成为BOM流: InputStreamReader is = new InputStreamReader ...
- Python爬虫-pyspider框架的使用
pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优 ...
- 利用pytesser识别图形验证码
简单识别 1.一般思路 验证码识别的一般思路为: 图片降噪 图片切割 图像文本输出 1.1 图片降噪 所谓降噪就是把不需要的信息通通去除,比如背景,干扰线,干扰像素等等,只剩下需要识别的文字,让图片变 ...
- 【莫比乌斯反演】BZOJ3309 DZY Loves Math
Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...
- BZOJ_2724_[Violet 6]蒲公英_分块
BZOJ_2724_[Violet 6]蒲公英_分块 Description Input 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod ...
- struts2 上传与下载
1.Struts.xml <action name="addfileAction" class="Action.addfileAction"> &l ...
- 读取txt内文件内容
命令如下: f = open("c:\\1.txt","r") lines = f.readlines()#读取全部内容 for line in lines ...
- setUp()和tearDown()函数
1.什么是setUp()和tearDown()函数? 2.为什么我们要用setUp()和tearDown()函数? 3.我们该怎样用setUp()和tearDown()? 1.什么是setUp()和t ...
- Solr相似性算法
Solr相似性算法 介绍 Solr 4及之前的版本默认采用VSM(向量空间模型)进行相似度的计算(或打分).之后的版本,则采用Okapi BM25(一种二元独立模型的扩展),属于概率模型. 检索模型通 ...