shell脚本根据进程查找指定容器的方法
当我们在一台docker服务器上使用top命令定位出一个占用资源比较高的进程,如何发现它属于哪一个容器。
1、首先获取进程pid
2、使用docker top命令查找容器pid
docker top 容器命或容器id
当docker 容器过多时,一个一个排查对比费事费力,这里有一个脚本可以快速查找
#!/bin/bash #将需要查找的pid输入$1变量 #将所有容器的pid导入变量a a=`docker ps -a |sed -n '1!p'|awk '{print $1}'` #将容器id循环导入docker top命令,查找容器对应的pid for b in $a do c=`docker top $b|sed -n '1!p'|awk '{print $2}'` #经每一个容器的pid与输入$1对比 if [ $c == $1 ] ; then #输出对应$1的容器信息 docker ps -a |grep $c fi done
补充:shell查找进程并终止
创建kill.sh文件,内容如下:
port=9200 #一、根据端口号查询对应的pid,两种都行 pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }'); #pid=$(ps -ef | grep 你的进程或端口 | grep -v grep | awk '{print $2}') #二、杀掉对应的进程,如果pid不存在,则不执行 if [ -n "$pid" ]; then kill -9 $pid; fi
这个脚本其实就2步,先获取进程id,然后 kill 掉这个进程。
(1)获取进程id的方法
这个可以用 awk命令来获取
ps -ef | grep 你的进程 | grep -v grep | awk '{print $2}'
这里要把这个grep这个用 -v 来过滤掉,然后用awk命令,提取第2个参数就是进程id了
(2)杀进程方法
这个就直接kill -9 进程id 就ok了
kill -9 你的进程id
到此这篇关于shell脚本根据进程查找指定容器的文章就介绍到这了,更多相关shell脚本查找指定容器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
详解Shell脚本控制docker容器启动顺序
1.遇到的问题 在分布式项目部署的过程中,经常要求服务器重启之后,应用(包括数据库)能够自动恢复使用.虽然使用docker update --restart=always containerid能够让容器自动随docker启动,但是并不能保证是在数据库启动之后启动,如果数据库未启动,那么将导致应用启动失败;网上还有一种解决方法是通过docker-compose容器编排来控制启动顺序,这个博主研究的比较少. 2.解决思路 使用Shell脚本来控制,思路大致如下 探测数据库端口来检验数据库是否启动成
-
shell脚本根据进程查找指定容器的方法
当我们在一台docker服务器上使用top命令定位出一个占用资源比较高的进程,如何发现它属于哪一个容器. 1.首先获取进程pid 2.使用docker top命令查找容器pid docker top 容器命或容器id 当docker 容器过多时,一个一个排查对比费事费力,这里有一个脚本可以快速查找 #!/bin/bash #将需要查找的pid输入$1变量 #将所有容器的pid导入变量a a=`docker ps -a |sed -n '1!p'|awk '{print $1}'` #将容器id循
-
用shell脚本监控进程是否存在 不存在则启动的实例
用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/sh ps -fe|grep processString |grep -v grep if [ $? -ne 0 ] then echo "start process....." else echo "runing....." fi ##### processString 表示进程特征字符串,能够查询到唯一进程的特征字符串 0表示存在的 $? -ne 0 不存在,$? -eq 0 存
-
python实现在目录中查找指定文件的方法
本文实例讲述了python实现在目录中查找指定文件的方法.分享给大家供大家参考.具体实现方法如下: 1. 模糊查找 复制代码 代码如下: import os from glob import glob #用到了这个模块 def search_file(pattern, search_path=os.environ['PATH'], pathsep=os.pathsep): for path in search_path.split(os.pathsep): for mat
-
Apache下通过shell脚本提交网站404死链的方法
网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链(协议死链.404页面)进行提交,可快速删除死链,帮助网站SEO优化.在提交死链的文件中逐个手动填写死链的话太麻烦,工作中我们提倡复杂自动化,所以本文我们一起交流分享Apache服务中通过shell脚本整理网站死链,便于我们提交. . 1.配置Apache记录搜索引擎 Apache是目前网站建设最为主
-
linux环境下编写shell脚本实现启动停止tomcat服务的方法
第一步:以管理员的身份进入控制台,在指定目录下新建一个shell脚本,我这里命名为tomcat.sh 第二步:编写shell脚本 #!/bin/bash tomcat_home=/usr/tomcat/apache-tomcat-8.0.48 SHUTDOWN=$tomcat_home/bin/shutdown.sh STARTTOMCAT=$tomcat_home/bin/startup.sh case $1 in start) echo "启动$tomcat_home" $STAR
-
shell脚本实现分日志级别输出的方法
shell脚本如何优雅的记录日志信息,下面让我们一步一步,让shell脚本的日志也变得高端起来,实现如下功能 ①设定日志级别,实现可以输出不同级别的日志信息,方便调试 ②日志格式类似为:[日志级别] 时间 funcname:函数名 [lineno:行号] 日志信息 ③不同级别,设定不同颜色 ④让其变为函数库文件,重用代码 下面看看我用shell记录日志的进化之路 1.最简单的日志记录方式 对于刚入门的同学,记录日志一般用echo加重定向方式,这应该是最原始的方式了^_^ echo "log me
-
通过shell脚本循环进入目录执行命令的方法
公司需要部署一套新的环境,新环境里面好多项目,整体目录结构如为:/webserver/* 所有的项目都在webserver目录下,其中有laravel和thinkphp项目的代码. laravel框架中, 根目录下storage vendor bootstrap 目录需要设置777权限. thinkphp框架,根目录App下Runtime目录需要设置777权限. 因此相对应的目录结构如下; laravel框架的目录结构为:/webserver/aaa/www/storage,vendor,boo
-
基于shell脚本中cd命令无效的解决方法
在学习的时候,经常要切换到固定的文件夹,于是写了个shell脚本用cd命令切换却发现目录切换不了. 代码如下: #! /bin/bash # c.sh cd /mnt/hgfs/vmshare pwd 解释:执行的时候是./c.sh来执行的,这样执行的话终端会产生一个子shell(类似于C语言调用函数),子shell去执行我的脚本,在子shell中已经切换了目录了,但是子shell一旦执行完,马上退出,子shell中的变量和操作全部都收回.回到终端根本就看不到这个过程的变化. 验证解释: #!
-
使用shell脚本执行hive、sqoop命令的方法
1.test.sh脚本内容如下: #!/bin/bash #CURR_DATE=`date +"%Y-%m-%d %H:%M:%S"`------>不能使用 v_sql="insert into origin_ennenergy_energytrade.test2 values('"$(date +"%Y-%m-%d %H:%M:%S")"','"Y"')" echo $v_sql #insert i
-
Python设置在shell脚本中自动补全功能的方法
本篇博客将会简短的介绍,如何在ubuntu中设置python自动补全功能. 需求:由于python中的内建函数较多,我们在百纳乘时,可能记不清函数的名字,同时自动补全功能,加快了我们开发的效率. 方法以及要求:设置过程中需要看客具备一点ubuntu的基本知识,当然不懂也没有关系,跟着一步一步走,不懂得可以学习一下ubuntu的文件系统. 具体步骤 1.首先创建一个文件:~/.pythonrc 在ubuntu中创建文件的命令为: sudo gedit ~/.pythonrc #sudo表示使用管理
随机推荐
- Java设计模块系列之书店管理系统单机版(一)
- JavaScript中的isXX系列是否继续使用的分析
- jQuery简单实现验证邮箱格式
- 使用Topshelf组件构建简单的Windows服务
- Asp.net(C#)实现验证码功能代码
- C++运算符重载的方法详细解析
- MySQL中无GROUP BY情况下直接使用HAVING语句的问题探究
- 详解Linux 中五个重启命令
- 数据库中删除语句Drop、Delete、Truncate的相同点和不同点的比较(实例说明)
- MySQL 四种事务隔离级别详解及对比
- JavaScript高级程序设计 阅读笔记(十五) 浏览器中的JavaScript
- 实现nginx&php服务器配置的非主流配置方法
- Java Builder Pattern建造者模式详解及实例
- Android震动与提示音实现代码
- 初学者的福音:游戏开发新手入门指南
- 深入C# winform清除由GDI绘制出来的所有线条或图形的解决方法
- PHP中文分词的简单实现代码分享
- Python实现发送与接收邮件的方法详解
- Go/Python/Erlang编程语言对比分析及示例代码
- 通过反射注解批量插入数据到DB的实现方法