Как правильно дождаться освобождения блокировки yum? - PullRequest
1 голос
/ 03 апреля 2019

Я пытаюсь написать cronjob, который регулярно обновляет пакеты из данного репозитория yum, выполнив следующую команду:

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

Чтобы предотвратить «предупреждения блокировки yum», как показано ниже ...

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».

Я тоже так пробовал, и время от времени по-прежнему появляются «предупреждения блокировки yum»:

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 голосов
/ 03 апреля 2019

Вы можете проверить список процессов, если 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'

...