Linux下查找进程id并强制停止进程的脚本

Linux下的tomcat的停止脚本shutdown.sh经常失败,造成tomcat进程没关闭。所以只能手动查找进程id,然后用kill命令来强制停止。每次都要这样查一下,然后再杀进程。感觉有点麻烦,所以就把这个动作写在了脚本里面。

一、思路

这个脚本其实就2步,先获取进程id,然后 kill 掉这个进程。

(1)获取进程id的方法

这个可以用 awk命令来获取

  1. ps -ef | grep 你的进程 | grep -v grep | awk ‘{print $2}‘

这里要把这个grep这个用 -v 来过滤掉,然后用awk命令,提取第2个参数就是进程id了

(2)杀进程方法

这个就直接kill - 就ok了

  1. kill -9 你的进程id

二、脚本代码

代码如下(/root/tomcat-instance/shutdown_sp.sh):

  1. sp_pid=`ps -ef | grep sp-tomcat | grep -v grep | awk ‘{print $2}‘`
  2. if [ -z "$sp_pid" ];
  3. then
  4. echo "[ not find sp-tomcat pid ]"
  5. else
  6. echo "find result: $sp_pid "
  7. kill -9 $sp_pid
  8. fi

注意:使用时,需要把第一行的 sp-tomcat 替换换成你希望杀的进程

说明:可能有人会说查找进程出现多个进程id时,脚本会报错的。

其实是不会的,出现多个进程id时,他们之间是有空格隔开来了的。刚好kill命令一次杀多个进程时,进程id需要用空格。所以不需要用for循环来杀进程

原文地址:https://www.cnblogs.com/zeng1994/p/13a2c5a28e55dd3abc2c75a4fb80371a.html

时间: 2024-10-11 17:19:32

Linux下查找进程id并强制停止进程的脚本的相关文章

linux下查找进程及终止进程操作的相关命令

使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程.这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号.首先,我们需要使用linux下另外一个命令ps查找与进程相关的PID号:ps aux | grep program_filter_word1)ps a 显示现行终端机下的所有程序,包括其他用户的程序.2)ps -A 显示所有程序.3)ps c 列出程序时,显示

linux 下查找大于100M的文件

命令行如下 find . -type f -size +1000000k Linux系统下查找大文件或目录的技巧 当硬盘空间不够时,我们就很关心哪些目录或文件比较大,看看能否干掉一些了,怎么才能知道呢? #已易读的格式显示指定目录或文件的大小,-s选项指定对于目录不详细显示每个子目录或文件的大小 du -sh [dirname|filename] 如: 当前目录的大小: du -sh . 当前目录下个文件或目录的大小: du -sh * [[email protected] var]# du -

Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50

Linux下查找包含BOM头的文件和清除BOM头命令 2014-08-16 12:30:50 分类: 系统运维 查找包含BOM头的文件,命令如下: 点击(此处)折叠或打开 grep -r -I -l $'^\xEF\xBB\xBF' ./ \xef\xbb\xbf是UTF8 BOM的16进制表示 这个命令会把当前目录及所有子目录下的BOM头删除掉. 点击(此处)折叠或打开 find . -type f -exec sed -i 's/\xEF\xBB\xBF//' {} \; 另一种方法: 点击

linux下查找文件

1,find 经常在linux下工作,总要查找一些文件,于是就搜索的学习了一下 find 指定目录 指定条件 指定动作 举例:find . -name "my*" 查找 当前目录下,以my开头的文件或目录 如果查找指定文件 建议,-name 名字 find . -name "my*" -ls 查找文件并显示详细信息 2,locate 据说比find更快 例如 locate 文件名 会在跟目录下,搜索包含文件名的文件或目录 缺点,会找出很多包含的不需要的文件 参考网址

linux 下查找文件的路径

必须提醒你的是:locate命令非常快,其实 locate 命令他查询的是系统中的一个数据库.这个数据库通常会在一定时间更新.这样确实很方便,但是:如果你新建一个文件 $ touch file_for_test然后你输入$ locate file_for_test这样你是不会找到这个文件的.这时你必须手动更新这个数据库,进入管理员权限($ sudo su - 或者其它之类)然后键入# updatedb 当你再入输入$ locate file_for_test 时你就能发现能找到它了~~~~ 祝好

vim linux下查找显示^M并且删除

linux下 ^M的输入方法是ctrl+v然后再ctrl+m vim下在文件中显示^M:e ++ff=unix % 在文件中删除^M:%s/^M$//g 在linux下查找^Mfind ./ | xargs grep '^M' -l -s 在linux下删除^Mfind ./ | xargs grep '^M' -l -s | xargs dos2unix

linux下Bash编程循环语句特殊用法之编写脚本(十)

linux下Bash编程while语句特殊用法之编写脚本(十) 1.循环控制: break:中断整个循环语句,即退出循环后执行脚本后面的语句 continue:中断当前本次循环,提前进入下一轮循环 exit:结束脚本运行 2.while死循环,即当不知道循环多少次时 格式 : while :; do 循环语句 done 3.while从输入重定向文件中每行读取并赋值给read变量 格式:  while read LINE;do 循环语句 done < 路径文件 4.实例脚本 4.1.找出/etc

linux 下 osw随操作系统启动而自动启动的标准脚本

linux 下 osw随操作系统启动而启动的标准脚本.osw是指--os watcher,这是一个监控os各项指标的shell脚本.osw的监控数据一般用于oracle技术人员评估os各项资源的使用情况,该使用情况会作为oracle 技术人员评估一些oracle 数据库行为(比如节点驱逐等)的参考依据. [[email protected] ~]$ cat /etc/rc.local #!/bin/sh # # This script will be executed *after* all t

linux 下MySQL服务器的启动与停止

一.以非特权用户运行MySQL服务器 在讨论如何启动MySQL服务器之前,让我们考虑一下应该以什么用户身份运行MySQL服务器.服务器可以手动或自动启动.如果你手动启动它,服务器以你登录Unix(Linux)的用户身份启动,即如果你用paul登录Unix并启动服务器,它用paul运行:如果你用su命令切换到root,然后运启动服务器,则它以root运行.然而,大多数情况下你可能不想手动启动服务器,最有可能是你安排MySQL服务器在系统引导时自动启动,作为标准引导过程的一部分,在Unix下,该引导