开发调试linux服务时几个好用的进程和端口查询命令组合和简单脚本(ps netstat awk grep)
2014-11-05 17:01
741 查看
这几天在搭建flume服务并在其框架下开发,反复调试输入命令让人不厌其烦,因此在这里记录一下自己找到的一些小技巧:
首先,把自己的应用程序做成一个service是一个很好的选择,一个service就需要支持start 和 stop,start能启动程序,stop能找到start所启动的程序的进程并且关掉它。
可以直接根据/etc/init.d/下的服务脚本来改,但我遇到了问题:因为那些系统服务脚本都是基于start-stop-daemon命令,这个命令很强大,可以启动一个可执行文件并且把进程PID,写入指定的文件里,这样在停止进程时可以直接读取文件来关掉进程。
但我用这个命令来启动自己的程序时,程序启动成功,但是PID文件在无任何错误信息的情况下就是没法生成,测试了root权限执行,也测试了各种写入路径(不需要高权限的),统统不行,于是决定慢慢研究这个问题的同时,先用简单的方法去解决我的需求。
启动程序很简单,作为服务,需要后台运行,假设你的可执行文件名叫做PROGRAM。
所以启动就需要 :
nohup PROGRAM [args] &
要关闭就需要 :
#PROGRAM是进程名
PID = `pidof PROGRAM`
if [ ! -z "$PID" ]; then
kill -15 $PID
fi
但是对于java或者python 程序,进程是java或者python,没有可区分度,所以不能用"pidof"命令,那么只能用"ps -ef"命令,用grep对进程信息进行过滤,来找到合适的进程
而一台机器上可以有多个flume服务,每个服务可能就执行参数有一些区别,所以要用多个grep:
PID=`ps -ef | grep java | grep flume | awk '{ print $2 }'`
if [ ! -z "$PID" ]; then
kill -15 $PID
fi
这里用到了awk命令,取出了"ps"命令打印信息的第二列PID的值。
这样一个简单服务的start和stop就完成了。
我还遇到另一个需求,就是检查某端口的占用情况,并且强制关闭占用这个端口的进程:
# netstat -tlnpa | grep 44444
tcp6 0 0 10.58.242.18:44444 :::* LISTEN 25049/java
端口查询结果有如上格式,那么我们可以根据这个格式编写如下脚本:
就搞定了。
深入挖掘awk 和 grep 还可以有很多用处,作为shell文本处理的利器,我这里只是日常简单的应用,希望对大家有帮助。
首先,把自己的应用程序做成一个service是一个很好的选择,一个service就需要支持start 和 stop,start能启动程序,stop能找到start所启动的程序的进程并且关掉它。
可以直接根据/etc/init.d/下的服务脚本来改,但我遇到了问题:因为那些系统服务脚本都是基于start-stop-daemon命令,这个命令很强大,可以启动一个可执行文件并且把进程PID,写入指定的文件里,这样在停止进程时可以直接读取文件来关掉进程。
但我用这个命令来启动自己的程序时,程序启动成功,但是PID文件在无任何错误信息的情况下就是没法生成,测试了root权限执行,也测试了各种写入路径(不需要高权限的),统统不行,于是决定慢慢研究这个问题的同时,先用简单的方法去解决我的需求。
启动程序很简单,作为服务,需要后台运行,假设你的可执行文件名叫做PROGRAM。
所以启动就需要 :
nohup PROGRAM [args] &
要关闭就需要 :
#PROGRAM是进程名
PID = `pidof PROGRAM`
if [ ! -z "$PID" ]; then
kill -15 $PID
fi
但是对于java或者python 程序,进程是java或者python,没有可区分度,所以不能用"pidof"命令,那么只能用"ps -ef"命令,用grep对进程信息进行过滤,来找到合适的进程
而一台机器上可以有多个flume服务,每个服务可能就执行参数有一些区别,所以要用多个grep:
PID=`ps -ef | grep java | grep flume | awk '{ print $2 }'`
if [ ! -z "$PID" ]; then
kill -15 $PID
fi
这里用到了awk命令,取出了"ps"命令打印信息的第二列PID的值。
这样一个简单服务的start和stop就完成了。
我还遇到另一个需求,就是检查某端口的占用情况,并且强制关闭占用这个端口的进程:
# netstat -tlnpa | grep 44444
tcp6 0 0 10.58.242.18:44444 :::* LISTEN 25049/java
端口查询结果有如上格式,那么我们可以根据这个格式编写如下脚本:
pinfo=`netstat -tlnpa | grep 44444` PID=`awk '{split("'$pinfo'", array, "/");print array[2]}' ` if [ ! -z "$PID" ]; then kill -15 $PID fi
就搞定了。
深入挖掘awk 和 grep 还可以有很多用处,作为shell文本处理的利器,我这里只是日常简单的应用,希望对大家有帮助。
相关文章推荐
- 从一个进程监控脚本学几个Linux命令(`ps`,`grep`,`awk`,`wc`)
- Linux 查看进程占用端口命令 netstat -tlnp|grep port
- Linux学习10_linux进程查看连载之:PS命令及ps -ef | grep java的含义
- linux 下查询端口及杀死进程命令
- linux之ps命令——进程命令简单介绍
- 【Unix/Linux】【命令】【进程】列出进程 —— ps/pgrep命令
- linux 通过哪个命令可以查看某个服务及其端口、进程号
- linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下
- 简单的自定义监控linux服务,只看ps进程是否存在
- linux通过awk命令,查询日志,分析数据,获取平均时间shell脚本
- linux下查询进程命令 ps 详细分析
- Linux scp远程文件/目录传输 用ps和grep命令寻找僵尸进程
- ubuntu (linux) 中的进程状态查询与管理 top/htop/ps/pgrep/kill
- linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下
- linux ps 命令的结果中VSZ,RSS,STAT的含义和大小 发表于2013 年 6 月 17 日 ps是linux系统的进程管理工具,相当于windows中的资源管理器的一部分功能。 一般来
- 最近用到的Linux命令总结 find route netstat ping watch killall iostat free top ps
- Linux中几个进程查看命令总结 ps, top, htop, vmstat
- Linux下gdb调试的几个简单命令
- linux 通过哪个命令可以查看某个服务及其端口、进程号
- linux 通过哪个命令可以查看某个服务及其端口、进程号