You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Linux t2.micro实例yum锁报错无法执行yum操作如何解决?

AWS Linux t2.micro实例yum锁报错解决方案

报错信息

Another app is currently holding the yum lock; waiting for it to exit... The other application is: yum Memory : 35 M RSS (335 MB VSZ) Started: Wed Oct 20 11:56:55 2021 - 03:27 ago State : Sleeping, pid: 3162

根因说明

该问题由AWS Linux默认镜像自带的自动更新机制和自定义引导脚本的yum操作抢占资源锁导致,即使重建实例也会复现,涉及两个默认触发的yum进程:

  • 实例初始化阶段cloud-init默认开启的package_update/package_upgrade模块,会在开机后第一时间执行yum更新
  • 系统预装的yum-cron服务,开机后会自动启动执行后台定期更新任务

临时修复(单实例应急)

按顺序执行以下命令即可解除锁定:

  • 停止yum自动更新服务,避免进程反复拉起
    systemctl stop yum-cron
  • 终止所有运行中的yum进程
    ps aux | grep yum | grep -v grep | awk '{print $2}' | xargs kill -9 2>/dev/null
  • 清理所有残留的yum、rpm锁文件
    rm -f /var/run/yum.pid /var/lib/rpm/.rpm.lock /var/lib/yum/yum.pid
  • 若之前异常中断yum操作导致rpm数据库损坏,执行修复命令
    rpm --rebuilddb
  • 验证yum功能恢复正常
    yum list

永久适配(批量启动场景)

修改EC2实例的启动脚本(User Data),从源头避免锁冲突:

方案1:引导脚本增加等待逻辑

在你原有安装apache的脚本最开头新增以下代码,等待系统自带yum任务执行完成后再运行自定义操作:

# 暂停yum自动更新服务
systemctl stop yum-cron
# 最多等待180秒让已启动的yum进程执行完毕
wait_count=0
while pgrep yum > /dev/null && [ ${wait_count} -lt 180 ]
do
  sleep 1
  wait_count=$((wait_count+1))
done
# 清理残留锁文件
rm -f /var/run/yum.pid /var/lib/rpm/.rpm.lock /var/lib/yum/yum.pid

# 此处添加你原有yum安装逻辑,例如:
# yum install httpd -y
# systemctl start httpd

方案2:禁用系统默认自动更新

如果不需要默认系统更新功能,在User Data最开头添加cloud-init配置直接关闭自动更新:

#cloud-config
package_update: false
package_upgrade: false
runcmd:
  - systemctl stop yum-cron
  - systemctl disable yum-cron
  # 后续添加你的自定义安装逻辑

内容的提问来源于stack exchange,提问作者David S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:27:01