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

百胜计划

无需执行自己的 crontab 条目来定期运行 YUM。 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

需要更多的线路,但似乎工作得很好。需要注意的是,每个条目下面都应该有一个空行,尤其是最后一个条目。

相关内容