linux - 如何正确等待 yum lock 被释放?

标签 linux cron redhat yum

我正在尝试编写一个 cronjob,通过运行以下命令定期从给定的 yum 存储库更新包:

yum -q -e 0 -d 0 -y update --disablerepo='*' --enablerepo='my-yum-repo'

为了防止像下面这样的“yum lock warnings”...

Existing lock /var/run/yum.pid: another copy is running as pid 4902.
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: yum
    Memory :  42 M RSS (325 MB VSZ)
    Started: Wed Apr  3 01:10:07 2019 - 00:01 ago
    State  : Running, pid: 4902

...我试图将我的代码包含在一个 while 循环中以检查 yum.pid 文件是否存在,如下所示:

*/5 * * * *  root while [ -f /var/run/yum.pid ]; do sleep 1; done && yum -q -e 0 -d 0 -y update --disablerepo='*' --enablerepo='my-yum-repo'

不幸的是,“yum lock warnings”仍然不时出现。

我也这样试过,还是时不时出现“yum lock warnings”:

while [ `pgrep 'yum|rhn_check'` ]; do sleep 1; done && yum -q -e 0 -d 0 -y update --disablerepo='*' --enablerepo='my-yum-repo'

您知道如何防止它们发生吗?我想避免将 stdout 重定向到/dev/null,因为如果在包更新期间出现“真正的”问题,我需要得到通知。

预先感谢您的帮助!

最佳答案

如果 yum 当前正在运行,您可以检查进程列表,并在退出进程完成后继续。

numProcess=` ps -ef | grep 'yum' | grep -v 'grep' | wc`

while [[ numProcess -gt 0 ]]
do
     sleep 5;
done

yum -q -e 0 -d 0 -y update --disablerepo='*' --enablerepo='my-yum-repo'

关于linux - 如何正确等待 yum lock 被释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55487523/

相关文章:

linux - 在 LAMP CentOS VPS 上克隆 Git Repo 时出现 500 Internal Server Error

c - 将数据发送到连接在我的服务器上的多个客户端

php - 通过 Gmail 或什至 Google App Engine 发送大量电子邮件?

php - 无法让 PHP 脚本作为 cronjob 运行

node.js - 如何在Windows上通过crontab或cron作业运行Shell脚本

Linux:关闭后的 recv() 返回 "bad file descriptor"

Linux 上的 .NET 门户网站和 SSRS

java - RHEL 每个目录的文件数限制

node.js - Nodejs 响应时间太长

linux - rpmbuild 失败错误 : Installed (but unpackaged) file(s) found: