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

问题描述 投票:1回答:1

我正在尝试编写一个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,因为如果在程序包更新期间发生“真实”问题,我需要通知我。

在此先感谢您的帮助!

linux cron redhat yum
1个回答
0
投票

如果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'

© www.soinside.com 2019 - 2024. All rights reserved.