当前位置: 首页 > news >正文

【经验记录贴】活用shell,提高工作效率

背景

最近在做测试的时候,需要手动kill服务的进程,然后通过命令重启服务,再进行测试。每次重启都会涉及到下面三个命令的执行:

1)检索进程ID

$ ps -eLf | grep programname
root  1123   112  1234  0   0  0  0:00:00 ?        00:00:00 programname xxx#ps: process status的缩写
#-e 选项表示显示所有进程(包括其他用户的进程)。
#-L 选项表示显示所有线程(如果进程是多线程的)。
#-f 选项表示显示完整格式的进程信息,包括用户、进程ID、父进程ID、CPU时间等。
#结果中第二个是PID(即进程ID)


2)kill进程

$ kill -9 1123# kill -9 强制终止进程
# 1123为上面获取到的进程ID


3)重启服务

$ xxx service start# 某个服务启动命令


PS:为什么不在本地开发测试,因为需要GPU运行服务,所以需要有GPU的环境。目前比较笨的办法是本地用开发工具修改之后,传递到GPU的服务器上运行,每次修改,都需要重启一下服务以反映修改的代码。

课题

虽然只有三个命令,每次都要执行三次,还要拷贝PID,次数多了也费时间,还容易出错。

改进方法


本着能够自动化就不要手动的理念,直接将上面的命令写成一个shell,将三次执行变成shell的执行
restart_service.sh

#!/bin/bash# 要查找和终止的命令名称
COMMAND_NAME="command_name"
# 查找包含指定命令的进程ID  
#   ---awk 'NR==1 {print $2}':只有一个进程,所以从第一行提取进程ID(第二列)即可
#   ---grep -v grep 从搜索结果中排除包含 grep 命令本身的行
PID=$(ps -eLf | grep "$COMMAND_NAME" | grep -v grep | awk 'NR==1 {print $2}')
# 是否存在进程 (-z 测试字符串是否为空)
if [ -z "$PIDS" ]; thenecho "没有查找到包含'${COMMAND_NAME}'的进程"
elseecho "杀死以下包含命令 '$COMMAND_NAME' 的进程:'$PIDS'"kill -9 $PID
fi#重启服务
echo "重启服务"
xxx service start

每次修改完毕之后,执行该shell即可。

$ ./restart_service.sh

相关文章:

  • 【Python进阶】列表:全面解析与实战指南
  • 设计模式每日硬核训练 Day 13:桥接模式(Bridge Pattern)完整讲解与实战应用
  • ThreadPoolExecutor 多线程用requests请求一个地址的时候为什么会报错,而多进程用requests请求一个地址的时候不会报错,为什么?
  • 04.Python代码NumPy-通过索引或切片来访问和修改
  • 【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——4G模块ME3630测试
  • TinyEngine 2.4版本正式发布:文档全面开源,实现主题自定义,体验焕新升级!
  • Java转Go记录:Slice解密
  • 负载均衡的实现方式有哪些?
  • 【大模型】DeepSeek + Coze 打造个人专属AI智能体使用详解
  • uniapp-商城-27-vuex 通用方法
  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记4
  • OpenGL shader开发实战学习笔记:第十章 法线贴图
  • 记录一下Springboot项目的Security,配置
  • 第16届蓝桥STEMA真题剖析-2024年12月22日Scratch初/中级组
  • 线代第二章矩阵第三、四课:矩阵乘法和方阵的幂
  • 主流物理仿真引擎和机器人/强化学习仿真平台对比
  • Spring缓存抽象机制
  • ADB的安装及抓取日志(2)
  • Kafka深度解析与实战应用
  • 流程设计实战:流程架构设计六步法
  • 柳州建站公司/百度app内打开
  • 狗和女主人做爰网站/优化大师怎么强力卸载
  • 公司的宣传网站应该怎么做/长沙百度推广公司电话
  • 开发公司与物业公司合同/厦门seo网站优化
  • 加强政府网站信息内容建设的意见/关键词搜索量全网查询
  • 怎么做微课网站/陕西网站关键词自然排名优化