学习使用linux的bash命令可以删除ps aux进程中今天之前指定运行进程的脚本

49 篇文章 0 订阅

学习使用linux的bash命令可以删除ps aux进程中今天之前指定运行进程的脚本

脚本

#!/bin/bash

# 获取今天的日期(格式 YYYY-MM-DD)
TODAY=$(date +%Y-%m-%d)

# 使用 ps aux 查找所有名为 qipa250 的进程
# 并提取出 PID 和启动时间
PS_OUT=$(ps aux | grep 'qipa250' | grep -v grep)

# 如果没有找到任何匹配的进程,则退出
if [ -z "$PS_OUT" ]; then
  echo "没有找到名为 qipa250 的进程。"
  exit 0
fi

# 遍历每个进程
while IFS= read -r line; do
  # 提取 PID
  PID=$(echo $line | awk '{print $2}')
  # 提取 START 时间
  START=$(echo $line | awk '{print $9, $10, $11, $12}')

  # 将 START 时间转换为 YYYY-MM-DD 格式以便比较
  START_DATE=$(date -d "$START" +%Y-%m-%d)

  # 比较日期
  if [[ "$START_DATE" < "$TODAY" ]]; then
    # 如果进程是在今天之前启动的,那么杀死它
    echo "终止进程: $PID (启动于: $START)"
    kill -9 $PID
  fi
done <<< "$PS_OUT"

echo "完成清理旧的 qipa250 进程。"

注意事项:

此脚本假设 ps aux 输出的时间字段位于第9至第12列。这可能根据你的系统配置有所不同,你可能需要调整这些列号。
kill -9 是一种强制结束进程的方式,可能会导致数据丢失或不一致。如果你希望更优雅地结束进程,可以尝试先用 kill -15 发送 TERM 信号。
在执行此脚本前,请确保你有足够的权限来停止目标进程,通常需要 root 权限。
测试脚本时,请小心处理,确保不会误杀其他重要进程。

保存上述脚本到一个文件中,比如命名为 cleanup_old_processes.sh,然后给它执行权限并运行:

chmod +x cleanup_old_processes.sh
sudo ./cleanup_old_processes.sh

记得在生产环境中谨慎操作,最好先在一个安全的环境中测试脚本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值