Welcome to the Linux Foundation Forum!

Lab 14.6. Scheduling a Periodic Task with cron

Hi,

From previous knowledge, I so far created any coronjobs with the "crontab -e" command. According to the solution in Lab 14.6. I'm supposed to create a crontab file named "mycrontab". But where do I have to create this file? In /etc/crontab.d/?

Thnaks.

Answers

  • Hi @albiurs,

    But where do I have to create this file? In /etc/crontab.d/?

    Crontab can read a file and create a crontab based on the instructions of it. So, in this case we are using a file called "mycrontab" to store and pass instructions to crontab. For that reason it can be anywhere, because it will be read just once, then a new crontab file will be created in the appropriate place.

    Regards,
    Luis.

  • albiurs
    albiurs Posts: 38

    Hi Luis,

    Thanks a lot for your replay and sorry for the late response.

    I still do not fully understand. For example if I create a new file like ~/Documents/mycrontab with vim, and add some cronjob direction to it, it will not do anything yet. Somehow I have to tell the OS that this file must be read and interpreted by cron. So this has to be done with the crontab command like crontab path/to/file , right? But what happens then? Do I still need the original the original mycrontab file and where will the final file be crated? And what about the /etc/cron.* directories? If I do an ls -l /etc/cron.{d,hourly,daily,weekly,monthly} I see that there are already a lot of files inside these folders:

    ┌──(alu@qtwixnb)-[~]
    └─$ ls -l /etc/cron.{d,hourly,daily,weekly,monthly}
    /etc/cron.d:
    total 20
    -rw-r--r-- 1 root root 285 Jan 10  2023 anacron
    -rw-r--r-- 1 root root 201 Mar  5  2023 e2scrub_all
    -rw-r--r-- 1 root root 396 Dec  4  2022 sysstat
    -rw-r--r-- 1 root root 158 Mar 23 21:08 timeshift-boot
    -rw-r--r-- 1 root root 137 Mar 23 21:08 timeshift-hourly
    
    /etc/cron.daily:
    total 56
    -rwxr-xr-x 1 root root  311 Jan 10  2023 0anacron
    -rwxr-xr-x 1 root root 1478 May 25  2023 apt-compat
    -rwxr-xr-x 1 root root  314 Aug 17  2021 aptitude
    -rwxr-xr-x 1 root root  123 Mar 27  2023 dpkg
    -rwxr-xr-x 1 root root 4722 Sep 29  2023 exim4-base
    lrwxrwxrwx 1 root root   37 Sep 10 03:08 google-chrome -> /opt/google/chrome/cron/google-chrome
    -rwxr-xr-x 1 root root 2211 Feb 10  2018 locate
    -rwxr-xr-x 1 root root  377 Dec 14  2022 logrotate
    -rwxr-xr-x 1 root root 1395 Mar 12  2023 man-db
    lrwxrwxrwx 1 root root   41 Sep  5 02:26 microsoft-edge -> /opt/microsoft/msedge/cron/microsoft-edge
    -rwxr-xr-x 1 root root 7175 Sep 12 06:33 opera-browser
    -rwxr-xr-x 1 root root  518 Dec  4  2022 sysstat
    
    /etc/cron.hourly:
    total 0
    
    /etc/cron.monthly:
    total 4
    -rwxr-xr-x 1 root root 313 Jan 10  2023 0anacron
    
    /etc/cron.weekly:
    total 8
    -rwxr-xr-x 1 root root  312 Jan 10  2023 0anacron
    -rwxr-xr-x 1 root root 1055 Mar 12  2023 man-db
    

    Thanks.

    Regards,
    Urs

  • Hi Urs,

    I still do not fully understand. For example if I create a new file like ~/Documents/mycrontab with vim, >and add some cronjob direction to it, it will not do anything yet.

    That's right.

    Somehow I have to tell the OS that this file must be read and interpreted by cron. So this has to be >done with the crontab command like crontab path/to/file , right?

    Exactly.

    But what happens then? Do I still need the original the original mycrontab file and where will the final >file be crated? And what about the /etc/cron.* directories?

    You don't need the original file anymore, because the content of the file has been stored already. It's in the following directory:

    /var/spool/cron/crontabs

    So, the crontab file will be the user's name that you are working with. And if you look into the file, you will see the crontab's data:

    cat /var/spool/cron/crontabs/ubuntu

    DO NOT EDIT THIS FILE - edit the master and reinstall.

    (mycrontab installed on Mon Sep 16 10:09:06 2024)

    (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)

    0 10 * * * /tmp/myjob.sh

    In my case the user's name is ubuntu.

    I hope that helps!

    Many regards,
    Luis.

  • albiurs
    albiurs Posts: 38

    Hi Luis,

    Thank you very much. I got it now. I was just confused because I always edited the crontab directly and never used an input file to create / overwrite the crontab.

    Best wishes,
    Urs

  • luisviveropena
    luisviveropena Posts: 1,233

    It's a pleasure, Urs!

    Regards,
    Luis.

Categories

Upcoming Training