Bird
Raised Fist0
Linux CLIscripting~30 mins

Cron log monitoring in Linux CLI - Mini Project: Build & Apply

Choose your learning style10 modes available
Cron Log Monitoring
📖 Scenario: You are a system administrator who wants to monitor cron job executions on a Linux server. Cron jobs run scheduled tasks, and their logs are stored in a system file. You want to check how many cron jobs ran successfully today.
🎯 Goal: Build a simple script that reads the cron log file, filters entries for today's date, counts how many cron jobs ran successfully, and displays the count.
📋 What You'll Learn
Use the grep command to filter cron logs by today's date
Use the grep command to filter successful cron job entries
Use the wc -l command to count the number of matching lines
Store intermediate results in variables
Print the final count with a descriptive message
💡 Why This Matters
🌍 Real World
System administrators often need to monitor cron jobs to ensure scheduled tasks run correctly and troubleshoot failures.
💼 Career
Knowing how to parse logs and automate monitoring with shell commands is a key skill for DevOps and system administration roles.
Progress0 / 4 steps
1
Set the date variable
Create a variable called today that stores the current date in the format MMM DD (e.g., Jun 15) using the date command.
Linux CLI
Hint

Use date '+%b %e' to get the month abbreviation and day with a space for single-digit days.

2
Filter cron log entries for today
Use the grep command to filter lines from /var/log/cron that contain the date stored in the today variable. Store the result in a variable called today_logs.
Linux CLI
Hint

Use double quotes around $today to expand the variable inside grep.

3
Count successful cron job runs
Use grep to filter lines from today_logs that contain the word CMD, which indicates a cron job command ran. Then use wc -l to count these lines. Store the count in a variable called success_count.
Linux CLI
Hint

Use echo "$today_logs" | grep 'CMD' | wc -l to count matching lines.

4
Display the count of successful cron jobs
Print the message "Number of cron jobs run today: X" where X is the value of the success_count variable.
Linux CLI
Hint

Use echo with double quotes and variable expansion to print the message.

Practice

(1/5)
1. What is the main purpose of monitoring cron logs on a Linux system?
easy
A. To install new cron jobs automatically
B. To check if scheduled tasks ran successfully
C. To delete old cron jobs from the system
D. To speed up the execution of cron jobs

Solution

  1. Step 1: Understand cron job scheduling

    Cron jobs are scheduled tasks that run automatically at set times.
  2. Step 2: Purpose of cron log monitoring

    Monitoring cron logs helps verify if these tasks ran as planned and if there were any errors.
  3. Final Answer:

    To check if scheduled tasks ran successfully -> Option B
  4. Quick Check:

    Cron logs track task success = A [OK]
Hint: Cron logs show task run status, not installation or deletion [OK]
Common Mistakes:
  • Confusing cron log monitoring with job installation
  • Thinking cron logs speed up tasks
  • Assuming cron logs delete jobs automatically
2. Which command correctly shows the last 10 lines of the cron log file located at /var/log/cron?
easy
A. tail /var/log/cron
B. head /var/log/cron
C. cat /var/log/cron | grep last 10
D. grep last /var/log/cron

Solution

  1. Step 1: Understand the tail command

    The tail command shows the last lines of a file, defaulting to 10 lines.
  2. Step 2: Apply tail to cron log

    Using tail /var/log/cron displays the last 10 lines of the cron log file.
  3. Final Answer:

    tail /var/log/cron -> Option A
  4. Quick Check:

    Last 10 lines = tail [OK]
Hint: Use tail to see recent log entries quickly [OK]
Common Mistakes:
  • Using head shows first lines, not last
  • Incorrect grep syntax for line count
  • Confusing grep with tail for last lines
3. What will be the output of this command if the cron log contains these lines:
Jun 10 10:00:01 server CRON[1234]: (root) CMD (backup.sh)
Jun 10 10:05:01 server CRON[1235]: (root) CMD (cleanup.sh)
Jun 10 10:10:01 server CRON[1236]: (root) CMD (backup.sh)

Command: grep backup.sh /var/log/cron
medium
A. Jun 10 10:00:01 server CRON[1234]: (root) CMD (backup.sh) Jun 10 10:10:01 server CRON[1236]: (root) CMD (backup.sh)
B. Jun 10 10:05:01 server CRON[1235]: (root) CMD (cleanup.sh)
C. No output
D. Jun 10 10:00:01 server CRON[1234]: (root) CMD (backup.sh)

Solution

  1. Step 1: Understand grep filtering

    The grep backup.sh command filters lines containing 'backup.sh'.
  2. Step 2: Identify matching lines in the log

    Two lines contain 'backup.sh': the first and third lines.
  3. Final Answer:

    Both lines with backup.sh are shown -> Option A
  4. Quick Check:

    grep filters matching lines = C [OK]
Hint: grep shows all lines containing the search term [OK]
Common Mistakes:
  • Selecting only one matching line
  • Expecting output for unrelated terms
  • Thinking grep outputs no lines if multiple matches exist
4. You run grep CRON /var/log/cron | tail -5 but get no output, even though you know cron jobs ran recently. What is the most likely reason?
medium
A. Cron jobs do not write to /var/log/cron
B. The grep command syntax is incorrect
C. The tail command does not work with pipes
D. The cron log file is empty or missing

Solution

  1. Step 1: Check command correctness

    The command syntax is correct; grep filters lines with 'CRON', tail shows last 5 lines.
  2. Step 2: Consider log file state

    If no output appears, the log file may be empty or missing, so no lines match.
  3. Final Answer:

    The cron log file is empty or missing -> Option D
  4. Quick Check:

    No output usually means empty or missing file [OK]
Hint: No output often means empty or missing log file [OK]
Common Mistakes:
  • Blaming grep syntax when it is correct
  • Assuming tail can't work with pipes
  • Thinking cron never logs to /var/log/cron
5. You want to monitor cron logs in real-time to see new entries as they appear. Which command should you use?
hard
A. grep -r CRON /var/log/cron
B. cat /var/log/cron | head -n 10
C. tail -f /var/log/cron
D. less /var/log/cron

Solution

  1. Step 1: Understand real-time log monitoring

    Real-time monitoring means seeing new log lines as they are added.
  2. Step 2: Use tail with follow option

    tail -f keeps the file open and shows new lines live.
  3. Final Answer:

    tail -f /var/log/cron -> Option C
  4. Quick Check:

    tail -f shows live log updates [OK]
Hint: Use tail -f to watch logs live as they update [OK]
Common Mistakes:
  • Using grep -r which searches recursively, not live
  • Using head only shows start, not live updates
  • Using less does not auto-refresh new lines
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard