Method 2 – Use shell scripts How to install yum cron on a CentOS/RHEL 6.x/7.x

Method 2 – Use shell scripts

Warning: The following method is outdated. Do not use it on RHEL/CentOS 6.x/7.x. I kept it below for historical reasons only when I used it on CentOS/RHEL version 4.x/5.x.

Let us see how to configure CentOS/RHEL for yum automatic update retrieval and installation of security packages. You can use yum-updatesd service provided with CentOS / RHEL servers. However, this service provides a few overheads. You can create daily or weekly updates with the following shell script. Create

  • /etc/cron.daily/ to apply updates one a day.
  • /etc/cron.weekly/ to apply updates once a week.

Sample shell script to update system

A shell script that instructs yum to update any packages it finds via cron:

$YUM -y -R 120 -d 0 -e 0 update yum
$YUM -y -R 10 -e 0 -d 0 update

(Code listing -01: /etc/cron.daily/


    1. First command will update yum itself and next will apply system updates.
    2. -R 120 : Sets the maximum amount of time yum will wait before performing a command
    3. -e 0 : Sets the error level to 0 (range 0 – 10). 0 means print only critical errors about which you must be told.
    4. <li

-d 0 : Sets the debugging level to 0 – turns up or down the amount of things that are printed. (range: 0 – 10).

  • -y : Assume yes; assume that the answer to any question which would be asked is yes.


Make sure you setup executable permission:
# chmod +x /etc/cron.daily/

The main script is /usr/bin/yum-check . The script that runs the cronjob is /etc/cron.daily/yum.cron . The two scripts pull options from the file /etc/sysconfig/yum-check .



# Name:         yum-check
# Author:       Michael Heiming - 2005-03-11
# Function:     Run from cron to check for yum updates
#               and mail results
# Version:      0.7 (initial)
# 2005-03-12    0.8 randomize startup (cron only)
# Config:       /etc/sysconfig/yum

# Pull in sysconfig settings

. /etc/sysconfig/yum-check


#  wait a random interval if there is not a controlling terminal, 
#  for load management
if ! [ -t ]
         let "num %= ${RANGE:=1}"
         sleep $num

rm -f ${yumdat%%[0-9]*}*

$yumb check-update >& $yumdat


case $yumstatus in
                  cat $yumdat |\
                  mail -s "Alert ${HOSTNAME} updates available!" $maila
                  exit 0
                 # Only send mail if debug is turned on
                 if [ ${CHECKWRK} = "yes" ];then
                 cat $yumdat |\
                 mail -s "Yum check succeeded ${HOSTNAME} zero patches
available." $maila
                 exit 0
                 # Unexpected yum return status
                 (echo "Undefined, yum return status: ${yumstatus}" && \
                 [ -e "${yumdat}" ] && cat "${yumdat}" )|\
                 mail -s "Alert ${HOSTNAME} problems running yum." $maila

[ -e "${yumdat}" ] && rm ${yumdat}




# Pull in sysconfig settings

. /etc/sysconfig/yum-check

if [ -f /var/lock/subsys/yum ]; then

         if [ ${CHECKONLY} = "yes" ];then

                /usr/bin/yum -R 10 -e 0 -d 0 -y update yum
                /usr/bin/yum -R 120 -e 0 -d 0 -y update



# yes sets yum to check for updates and mail only if patches are available
# no does enable autoupdate if /var/lock/subsys/yum is available
# defaults to root, leave empty if .forward/alias in place for root
# Set to yes for debugging only! You'll get a mail for each run!
# Seconds to randomize startup, if running from cron to balance load

0 (0)
Article Rating (No Votes)
Rate this article
There are no attachments for this article.
There are no comments for this article. Be the first to post a comment.
Full Name
Email Address
Security Code Security Code
Related Articles RSS Feed
Tunnel SSH Connections Over SSL Using ‘Stunnel’ On Debian 7 / Ubuntu 13.10
Viewed 631 times since Fri, Sep 28, 2018
HowTo: Send Email from an SMTP Server using the Command Line
Viewed 421 times since Mon, Feb 18, 2019
Linux Health Check Commands
Viewed 513 times since Fri, Jun 8, 2018
tcpdump usage examples
Viewed 448 times since Fri, Jul 27, 2018
RHCS6: Debug and test multicast traffic between two hosts
Viewed 646 times since Sun, Jun 3, 2018
How to schedule crontab in Unix Operating Systems
Viewed 526 times since Fri, Jun 8, 2018
Linux / UNIX: DNS Lookup Command
Viewed 438 times since Sun, Sep 30, 2018
Procedura powiekszania OCFS2 online
Viewed 530 times since Fri, Jun 8, 2018
RHEL7: How to get started with Firewalld.
Viewed 1213 times since Wed, May 22, 2019
ZPOOL: Verify/change properties of a zpool
Viewed 598 times since Sun, Jun 3, 2018