I have some cronjobs written on several servers using CentOS7 in combination with Plesk 18.
When I check my cron log I see that the cronjobs are started.
Even when I manually start the scripts I want to use they work, but for some reason when the crontab does it, nothing is happening.
For instance some of the cronjobs I have are:
MAILTO=support#shoptrader.nl
0 0 * * * sh /var/www/vhosts/upgrade14.shoptrader.com/httpdocs/remove_files.sh
0 6 * * * sh /var/www/vhosts/upgrade14.shoptrader.com/httpdocs/security_htaccess/security_htaccess.sh
15 7 * * * sh /var/www/vhosts/upgrade14.shoptrader.com/httpdocs/backup_personal_files.sh
30 9 * * * sh /var/www/vhosts/upgrade14.shoptrader.com/httpdocs/find_hacks/find_hacks.sh
*/5 * * * * sh /var/www/vhosts/upgrade14.shoptrader.com/httpdocs/find_sql_injection/find_sql_injection.sh
15 0 * * * sh /var/www/vhosts/upgrade14.shoptrader.com/httpdocs/backup_templates_data/backup_templates_data.sh
If I check my log I see something like: Jan 14 09:30:01 web14 CROND[4402]: (root) CMD (sh /var/www/vhosts/upgrade14.shoptrader.com/httpdocs/find_sql_injection/find_sql_injection.sh)
I've notified myself with e-mails and get this response
/var/www/vhosts/upgrade14.shoptrader.com/httpdocs/find_sql_injection/find_sql_injection.sh: line 12: php: command not found.
Which doesn't make sense, because PHP is working on the server.
I have setup certbot for letsencrypt key renewal. This works.
When i check my logs at /etc/log/letsencrypt i see it runs twice a day.
Somewhere around midnight and somewhere around noon.
I would like to run it only once a day somewhere in the early morning.
To get control over the running of certbot i removed all entries from my cronjobs. But unexpectedly it still runs.
So how is certbot started?
Extra info:
when i run a script to show all cronjobs i get this:
(script: How do I list all cron jobs for all users? )
mi h d m w user command
0 3 * * 1 root /usr/bin/rsnapshot weekly
0 */4 * * * root /usr/bin/rsnapshot hourly
16 10 * * * root test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond
25 6 * * * root /etc/cron.daily/apache2
25 6 * * * root /etc/cron.daily/apt-compat
25 6 * * * root /etc/cron.daily/aptitude
25 6 * * * root /etc/cron.daily/automysqlbackup
25 6 * * * root /etc/cron.daily/bsdmainutils
25 6 * * * root /etc/cron.daily/dpkg
25 6 * * * root /etc/cron.daily/exim4-base
25 6 * * * root /etc/cron.daily/logrotate
25 6 * * * root /etc/cron.daily/man-db
25 6 * * * root /etc/cron.daily/mlocate
25 6 * * * root /etc/cron.daily/ntp
25 6 * * * root /etc/cron.daily/passwd
25 6 * * * root /etc/cron.daily/popularity-contest
25 6 * * * root /etc/cron.daily/tomcat8
30 2 1 * * root /usr/bin/rsnapshot monthly
30 3 * * * root /usr/bin/rsnapshot daily
47 6 * * 7 root /etc/cron.weekly/man-db
the file from certbot i found was certbot in /etc/cron.d
it contained this line:
#0 4 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew
which i commented out (with the #).
my system is debian:
Debian GNU/Linux 9
I use certbot with Ubuntu 16.04 + nginx
There are two places to check jobs related to Certbot
1) /etc/cron.d/certbot
here you have
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew && nginx -s reload
2) systemd timer
run commnad:
$sudo systemctl list-timers
and see output
Sun 2018-07-08 00:46:59 EEST 7h left Sat 2018-07-07 12:36:26 EEST 4h 51min ago certbot.timer certbot.service
then
3)
go to check file that control time when systemctl run Certbot
/etc/systemd/system/timers.target.wants/certbot.timer
that is symbolic link for
/lib/systemd/system/certbot.timer
Pay attention to this lines that define times + random seconds (set a random time for purpose to don't stress simultaneously letsencrypt servers)
OnCalendar=--* 00,12:00:00
RandomizedDelaySec=3600
I have to run task which take time 3 or 5 minut
How to run multiple task in crontab -in same time ?
crontab -e
0 13 * * * /etc/rip_first_radio.sh
0 13 * * * /etc/rip_second_radio.sh
0 13 * * * /etc/rip_third_radio.sh
0 13 * * * /etc/rip_fourth_radio.sh
your crontab config is correct. But you can add add all into one script and run also.
vi main.sh
./etc/rip_first_radio.sh &
./etc/rip_second_radio.sh &
./etc/rip_third_radio.sh &
./etc/rip_fourth_radio.sh &
and add main.sh to cron.
0 13 * * * ./main.sh
I have a crontab:
1 0 * * * /opt/scripts/pg_backup mydb
I expected it run at 00:01
But it always run at 12h (12/24), not 0h every day.
How can I fix it?
Partly using stackoverflow search I figured out how to run my cronjob every 3 hours but not between 23h-16h. That means a pause between 16h today untill 23h today. So the cronjob should start running every 3 hours at 23h and stop at 16h, then start again at 23h.
This is the result:
0 23-16/3 * * * /usr/local/bin/flexget -c /media/usb/Downloads/flexget/config.yml --cron
Now my question: Why is this not working? It does not run at all :(
I also tried:
* 23-16/3 * * * /usr/local/bin/flexget -c /media/usb/Downloads/flexget/config.yml --cron
(not sure what the difference is with 0 or with * for the minutes, rounded hours or not?)
This DOES work:
0 */3 * * * /usr/local/bin/flexget -c /media/usb/Downloads/flexget/config.yml --cron
But then it just runs every 3 hours every day, without pause between 16-23.
You can always list the hours explicitly.
0 2,5,8,11,14,23 * * * /usr/local/bin/flexget -c /media/usb/Downloads/flexget/config.yml --cron
Note this is not the same as with replacing 0 minutes with *, like:
* 2,5,8,11,14,23 * * * /usr/local/bin/flexget -c /media/usb/Downloads/flexget/config.yml --cron
The latter starts on every minute on the hours specified, i.e. 2:00, 2:01, 2:02, ..., 2:59, 5:00, 5:01, ... 5:59, ...