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