Automation with cron and at
As we know DevOps comes as a solution for automation. So, as a DevOps Engineer knowing job automation is mandatory. So, Today we are going to learn about Job Automation. with that said, let's go...
If we want to make a particular task reoccur, then this process is known as Job Scheduling and is usually done based on some defined tasks(jobs).
For Linux family os, This process is handled by the cron service or a daemon called crond which can be used to schedule tasks (also known as jobs)
Advantages of cron job :
You have complete control means can change the minutes, hours, days etc that it will execute.
Easier to write the code and manage its operation. It eliminates the looping and timing logic in the task.
It will not occupy memory in your system when it's not running.
If it fails and exits for some reason, It will start up again when the proper time comes
Advantages of infinite loop
Even if our system is off but still it is running in the background. But, make sure that the server is not to be shut down.
Disadvantages of the cron job :
cron jobs need monitoring. let's see what it means by considering the below scenarios. - if the cron job sends emails every day, the developer has to check the message every day. When there is a huge number of cron jobs running. Daily visual monitoring becomes inefficient.
users cannot know the existence of cron-related functionalities since they do not appear in the interface.
New developers have to remember to look in the system directories to check if there are cron jobs
cron jobs and related scripts need to be tested.
No version control. Even if someone removes a job, there's no easy way to track who did it and the reason for it.
performance issues. Creating more and more cron jobs in a single machine can overload the machine at some point.
Important files related to cron and at
/etc/crontab is the file that stores all scheduled jobs
/etc/cron.deny is the file used to restrict the users from using cron jobs
/etc/cron.allow is used to allow only users whose names are mentioned in this file to use cron jobs. (Doesn't exist by default)
/etc/at.deny same as cron. deny restricting at jobs.
/etc/at.allow same as cron. allow for allowing users to use at jobs.
Crontab Format
- To assign a job in the crontab file the format used is as follows :
option | Explanation |
* | This means being treated as a wild card. meaning any possible value. |
*/3 | It is treated as for every 5 minutes, hours, days, or months. Replacing 3 with another numerical value will change this option |
2,4,6 | Treated as an OR, so if placed in hours, this could mean at 2,4, or 6 o-clock |
2-10 | Treats for any value between 2 and 10. so if placed on day of the month this would be days 2 through 10. or if put in hours it would be between 9 and 5. |
CRON JOBS :
To check the assigned cron jobs of currently logged-in user
#crontab -l
To check the assigned cron jobs of a particular user
#crontab -l -u <username>
AT JOBS :
- "at" is used to schedule the job for a particular time or interval. To make it simple, It is used for only one time or only one interval.
The disadvantages of at jobs are
It can be modified like cron jobs
It cannot be reused
the content is not possible to view in a normal human-readable format
Restricting a user from using jobs
To restrict a user from using at jobs is exactly the same as a cron job
Add user names to /etc/at.deny, it will work exactly like /etc/cron.deny
To allow only a few out of many users to remove at. deny as we did for cron. deny and create /etc/at.allow and add user names who are allowed to use at jobs in it, like cron. allow
If both at. allow and at.deny exists, then at. allow will have higher priority.
If neither at.allow nor at.deny exits, then only root can use at jobs.
That's it for this Article. I will see you in the next article with more learning and more interesting topic.
Until then keep reading, keep learning, and Keep Succeeding...
Don't forget to leave feedback by like π, shareπ€, commenting π
Thankyou π