如何正确等待yum锁释放?

时间:2019-04-03 05:15:50

标签: linux cron redhat yum

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

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

为了防止出现类似以下的“ yum lock警告” ...

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警告”。

我也这样尝试过,并且仍然会不时出现“ yum lock警告”:

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,因为如果在软件包更新期间发生“实际”问题,则需要通知我。

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分: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'