shell脚本根据端口号kill掉进程

假设一个应用场景,在某种环境下, 我们需要去关闭某个应用进程, 然后重新部署启动.不一样的场景需要使用不一样的脚本,比如在使用tomcat时,可以通过start.up.sh和shutdown.sh进行操作,但是别的好像就没有好的办法了,所以采用的是kill掉应用的PID, 然后重新部署启动.然而每次启动的PID都是不一样的, 但是我们知道的是每次都会启动同样的端口号, 如果通过端口号查询到应用的PID再去kill掉,就会省事很多.

接下来可以在shell中通过端口查询PID

port=8030
# 根据端口号去查询对应的PID
pid = $(netstat -nlp | grep :$port | awk ‘{print $7}‘ | awk -F"/" ‘{print $1}‘);

# 杀掉对应的进程 如果PID不存在,即该端口没有开启,则不执行
if [ -n  "$pid" ]; then
    kill  -9  $pid;
fi

这样就可以实现在生产环境中运行这个shell脚本来停止指定端口的服务了,一键启动.

需要注意的是这样的脚本最好直接在linux上写,不然会出问题,会报很多种错误, 具体的错误大家可以自行百度去排解.网上很多的.

原文地址:https://www.cnblogs.com/f-g-f/p/11488607.html

时间: 2024-11-08 13:48:31

shell脚本根据端口号kill掉进程的相关文章

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件 shell脚本如下echo "%CPU,%MEM" > cpu_test.csvpid=1 #Can be change by yourselfwhile true do top -bn1 -n 1 -p $pid | tail -1 | awk '{ print $9,$10 }' | sed 's/ /,/' >> cpu_test.csv sleep 2 #delay timedone 脚

kill掉进程

# kill -pid 注释:标准的kill命令通常都能达到目的.终止有问题的进程,并把进程的资源释放给系统.然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源.为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程. 确定要杀死进程的PID或PPID # ps -ef | grep httpd 以优雅的方式结束进程 # kill -l PID -l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程.当使用该选项时,kill命令也试图杀死所留

Linux中Kill掉进程的10种方法

常规篇: 首先,用ps查看进程,方法如下: 复制代码 代码如下: $ ps -ef--smx 1822 1 0 11:38 ? 00:00:49 gnome-terminalsmx 1823 1822 0 11:38 ? 00:00:00 gnome-pty-helpersmx 1824 1822 0 11:38 pts/0 00:00:02 bashsmx 1827 1 4 11:38 ? 00:26:28 /usr/lib/firefox-3.6.18/firefox-binsmx 1857

保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护

本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ?Android.content.Context  ?android.content.ContextWrapper  ?android.app.Service Service是应用程序Application的一个组件(component).它的作用有两点:1.用来提供一个长期在后台运行并且不与用户交互的操作,2.也可以为其他应用程序提供服务.Service

网络:多个进程能否监听同一个端口号?

我们都知道socket是网络上两个进程之间的双向通信链路, 即 socket = <A进程的IP地址:端口号,B进程的IP地址:端口号> 那么有个问题就很有意思了,不同的进程可以监听在同一个IP地址:端口号么? 根据Unix网络编程中的知识可知,服务端监听一个端口会经历: 1.根据套接字类型(Ipv4,Ipv6等)创建套接字socket 2.将套接字bind绑定到具体的网络地址和端口号 3.调用listen开始在这个套接字上进行监听. Unix提供了一个接口setsockopt()可以在bin

linux操作系统-vim和shell脚本常用知识总结

HOST=$(/bin/hostname)将()里的命令执行后的结果赋值给HOST变量 #------------------------------------------------^M /etc/rc.d/  level3的用户login后, 将自动启动一个指定的shell  # ---------------------------------------------  $?  对上一次命令执行成功与否成功$?为0  判断文件是否存在且是否为文件 [ -f file ] 判断文件是否存在

ORACLE快速彻底Kill掉的会话

在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源,有时候你会发现锁定的资源很长时间也不会释放,即使会话状态为"KILLED",依然会阻塞其它会话. 下面根据Eygel的"Oracle中Kill session的研究",构造一个案例看看kill session到底做了什么.如下所示 会话1: SQL> conn

ORACLE快速彻底Kill掉的会话(转载)

转载:http://www.cnblogs.com/kerrycode/p/4034231.html 在ORACLE数据库当中,有时候会使用ALTER SYSTEM KILL SESSION 'sid,serial#'杀掉一个会话进程,但是使用这个SQL语句杀掉会话后,数据库并不会立即释放掉相关的资源,有时候你会发现锁定的资源很长时间也不会释放,即使会话状态为“KILLED”,依然会阻塞其它会话. 下面根据Eygel的"Oracle中Kill session的研究",构造一个案例看看k

如何kill掉TaobaoProtect.exe

https://technet.microsoft.com/en-us/sysinternals/bb896653 以前用任务管理器,直接kill掉进程之后,过一会又自己启动.我以为是个流氓程序呢 没想到居然是以服务的形式来打开exe的 开始菜单-->控制面板-->管理工具-->服务 找到这个服务,把它干掉,让它不要自动启动