Yum with crontab - "다른 애플리케이션이 현재 yum 잠금을 보유하고 있습니다."

Yum with crontab - "다른 애플리케이션이 현재 yum 잠금을 보유하고 있습니다."

crontab을 사용하여 yum 업데이트 스크립트를 실행하고 싶습니다. 문제는 스크립트를 한 번 실행한 다음 yum이 잠시 동안 멈춰서 다시 실행할 수 없다는 것입니다. 다음 오류가 발생합니다.

$ sudo yum update
Existing lock /var/run/yum.pid: another copy is running as pid 5248.
Another app is currently holding the yum lock; waiting for it to exit...
The other application is: yum
Memory:...
Started:... 5 day(s) ago...
State: Sleeping, pid: 5248

이것이 내가 crontab에 넣은 것입니다:

$ sudo crontab -e
0 4 * * *
/usr/local/bin/yum_updates.sh

스크립트의 내용은 다음과 같습니다.

$ sudo vim /usr/local/bin/yum_updates.sh
#!/bin/bash
yum makecache
yum -y update
yum -y upgrade
mandb

yum-cron을 고려했지만 구성 파일을 살펴보니 crontab만큼 사용자 정의할 수 없는 것 같습니다(즉, 하루는 보안 업데이트를 실행할 수 없고 다른 하루는 전체 업데이트를 실행할 수 없습니다). 하지만 제가 틀렸다면 수정해 주세요. , 저는 yum-cron을 많이 사용하지 않았습니다.

crontab을 사용하여 프로그램을 하이재킹하거나 한 번만 실행한 후 프로세스가 중단되지 않고 스크립트를 실행할 수 있도록 이 오류를 중지하는 방법을 알고 싶습니다.

답변1

스크립트를 다음으로 변경하세요.

#!/bin/bash
#this line will kill that process is runing yum 
kill -9 `ps -aux | grep yum |tr -s " " : | cut -f2 -d : | head -1` 
yum makecache
kill -9 `ps -aux | grep yum |tr -s " " : | cut -f2 -d : | head -1`
yum -y update
yum -y upgrade
mandb

답변2

yum을 죽이는 것은 당신이 원하는 것이 아닙니다. 즉, 어느 시점에서는 확실히 패키지가 손상될 것입니다. 적절한 방법으로 문제를 해결할 수 있는 yum-cron과 같은 패키지가 있습니다. 설치하고 필요에 따라 /etc/yum/yum-cron.conf를 편집합니다(보안만 설치하거나 모두 설치).

서비스를 활성화하고 시작하십시오.

더 이상 업데이트/업그레이드가 절반만 완료되었거나 이로 인해 발생할 수 있는 다른 문제가 종료되는 것에 대해 걱정할 필요가 없습니다.

답변3

프로젝트 냠

YUM을 주기적으로 실행하기 위해 자체 crontab 항목을 실행할 필요가 없습니다. YUM에는 yum-cron. 이 튜토리얼의 제목은 다음과 같습니다.yum-cron을 사용하여 CentOS 7에서 자동 보안 업데이트를 활성화하는 방법, 구성 및 작동 방법을 보여줍니다.

먼저 설치되어 있는지 확인하세요.

$ sudo yum -y install yum-cron

그런 다음 구성하십시오.

$ cat /etc/yum/yum-cron.conf
....
apply_updates = yes

서비스 활성화 및 시작: 필요한 변경을 수행한 후 서비스가 활성화되어 실행 중/다시 시작되는지 확인합니다.

$ sudo systemctl enable --now yum-cron

또 뭐야?

yum-cron모든 업데이트를 수행하는 것은 수행할 수 있는 작업의 일부일 뿐이라는 점을 명심하세요 . 처리하지 않으려는 특정 패키지를 제외하도록 구성할 수도 있습니다.

exclude = kernel*

인용하다

답변4

훌륭한 답변이지만 각 유형의 yum이 다음과 같이 자체 crontab 항목을 업데이트하도록 할 수 있다는 것을 알았습니다.

$ sudo crontab -e

#Full system update midnight every Monday and Tuesday
0 0 * * 1,2 /usr/bin/yum -y update

10 0 * * 1,2 /usr/bin/yum -y upgrade

#Security updates everyday at 2AM
0 2 * * * /usr/bin/yum -y update --security

더 많은 배선이 필요하지만 잘 작동하는 것 같습니다. 각 항목, 특히 마지막 항목 아래에는 빈 줄이 있어야 합니다.

관련 정보