我想使用 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
需要更多的线路,但似乎工作得很好。需要注意的是,每个条目下面都应该有一个空行,尤其是最后一个条目。