thienhaxanh2405
thienhaxanh2405

Reputation: 167

Crontab does not run on CentOS 7

I'm using CentOS 7, and installed "cronie"

yum install cronie

I have a shell to backup my home folder, shell's content (of course, backup.sh is 775)

#!/bin/bash
#START
TIME=`date +%Y-%m-%d_%Hh%M`          
FILENAME=backupHome_123.30.150.29_$TIME.tar.gz 
SRCDIR=/home                    
DESDIR=/backup            
tar -cpvzf $DESDIR/$FILENAME $SRCDIR
#END

And add to crontab -e

00 2 * * * /bin/bash /backup/backup.sh

But crontab does nothing. When I check log at /var/log/cron only, something like that and no more error or processing log

May  1 00:26:08 app crontab[12041]: (root) END EDIT (root)
May  1 00:33:21 app crontab[12086]: (root) BEGIN EDIT (root)
May  1 00:34:25 app crontab[12086]: (root) END EDIT (root)

Anyone can give me some advises to make crontab work? Thank you.

Upvotes: 4

Views: 33023

Answers (5)

akim
akim

Reputation: 31

You have to add username before your command like this for example :
1 * * * * root or username /usr/bin/php /var/www/html/yourwebsite/yourscript.php

Upvotes: 3

sakumatto
sakumatto

Reputation: 157

You want to make sure cron is started & that it is started if your server reboots so you need two commands on CentOS 7 to make sure of this:

systemctl enable crond && systemctl restart crond

If you are used to using sudo, you can add sudo in front of above command. like this:

sudo systemctl enable crond && systemctl restart crond

YOU WILL get confirmation from system, something like:

Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.

Then lastly check cron is running pgrep cron

Upvotes: 5

Nole
Nole

Reputation: 847

I know that I'm late to answer you, but maybe someone will have this kind of problem. It is possible that CRON can't run the script because the path is not correct.

Your path is

00 2 * * * /bin/bash /backup/backup.sh

I guess that path should be:

00 2 * * * sh /bin/bash/backup/backup.sh

Only difference is space after bash directory and sh command at the start of CRON job.

Upvotes: 3

Nagev
Nagev

Reputation: 13227

I found that the most useful information was actually given by

systemctl status crond

Which revealed that it failed to load correctly due to an "Unauthorized SELinux context" error.

Upvotes: 7

dtrizna
dtrizna

Reputation: 41

This can happen if cron daemon isn't running. Check it with:

pgrep cron

If command returns nothing, run:

systemctl restart crond

This should help.

Upvotes: 4

Related Questions