我正在尝试编写一个 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/