开发调试linux服务时几个好用的进程和端口查询命令组合和简单脚本(ps netstat awk grep)

原创 2014年11月05日 17:01:15

这几天在搭建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

端口查询结果有如上格式,那么我们可以根据这个格式编写如下脚本:
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命令之统计TCP连接数-netstat,awk

1、通过netstat命令可以查询所有的tcp连接状态: # netstat -anp | grep tcp 2、结合awk命令,统计出tcp连接不同状态的数量: # netstat -...

结合netstat和awk命令来统计网络连接数

结合netstat和awk命令来统计网络连接数netstat -an|awk /tcp/ {print $6}|sort|uniq -c或netstat -n | awk /^tcp/ {++stat...

使用netstat和awk命令来统计网络连接数

netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' 会得到类似下...
  • shoyer
  • shoyer
  • 2013年06月08日 17:43
  • 932

如何查看pid进程号和对应的端口号

端口被占用了怎么办呢?下面为大家介绍一下Win7系统快速查看端口被占用的技巧。 1.首先,按下Win+R键,输入CMD。 2.在CMD窗口中输入netstat -aon|findstr *...

ps -ef |grep 输出的具体含义

比如: [root@localhost ~]# ps -ef | grep ApacheJetspeed root     18887 18828  0 08:09 pts/0    00:00:00...

Linux查看程序端口占用情况 netstat -apn | grep 8005

netstat -apn | grep 8005 Linux查看程序端口占用情况 今天发现服务器上Tomcat 8080端口起不来,老提示端口已经被占用。 ...

ps -aux|grep 详细信息

ps a 显示现行终端机下的所有程序,包括其他用户的程序。 2)ps -A 显示所有程序。 3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 4)p...

ps -ef |grep cusip_full_is | grep -v grep | wc -l | awk '{ print $1; }' 这句话是什么意思呢?

转自:https://zhidao.baidu.com/question/493385869.html ps -ef | 全格式显示当前...

Spark组件之GraphX学习5--随机图生成和消息发送aggregateMessages以及mapreduce操作(含源码分析)

更多代码请见:https://github.com/xubo245/SparkLearning 0.主要: 随机图生成 消息发送aggregateMessages ,进行reduce...

第28讲:Scala提取器Extractor

所谓提取器,就是从表达式获取具体值。 其作用,可以根据某一规则,非常方便的获取到想要的值提取器在数组的应用实例代码 def match_arr(arr:Any) = arr match{ ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:开发调试linux服务时几个好用的进程和端口查询命令组合和简单脚本(ps netstat awk grep)
举报原因:
原因补充:

(最多只允许输入30个字)