Table of Contents
Cronstatus
Show help
By starting the helper script
> cronstatus.sh -h
______________________________________________________________________________
AXELS CRONWRAPPER
Jobstatus of cronjobs on 🖥 axels-laptop
v 2.7
______________________________________________________________________________
Show the status of all local cronjobs that use the cronwrapper or a single job
by giving its logfile as parameter.
This script is part of Axels Cronwrapper.
📜 License: GNU GPL 3.0
📗 Docs : https://www.axel-hahn.de/docs/cronwrapper/
####| ✨ SYNTAX |####
cronstatus.sh [OPTIONS] [LOGFILE|LABEL]
####| 🔧 OPTIONS |####
-h|--help show this help and exit.
-d|--nodetails hide detailed meta infos
-i|--nointro hide starting header
-l|--nolast hide last executions
-o|--nooutput hide logfile output (when adding a param for logfile|label)
-r|--norunning hide running processes
-s|--short short status; sortcut for '-d -i -l -r'
-c|--cleanup Clenup old logs (with extension 'running')
-w|--wipe LABEL Delete log files for given label; see 'cronstatus.sh -s'
####| 🏷 PARAMETERS |####
LOGFILE filename to show details of a single logfile
LABEL label of a job
Default: without any logfile/ label you get a total overview of all
cronjobs.
####| 🧩 EXAMPLES |####
cronstatus.sh
show total overview over all jobs
cronstatus.sh -s
Show tiny status for all jobs without intro header or details
cronstatus.sh myjob
show output of a single job
cronstatus.sh /var/tmp/cronlogs/myjobfile.log
show output of a single job
Cleanup:
cronstatus.sh -c
cronstatus.sh -w myoldjob
Execute without parameter
It loops over all logfiles to see the last status of all your jobs (that were executed with the cronwrapper).
It shows the last execution time, the returncode and if the job is out of date.
In case of an error it returns the last lines of output.
It verifys the hostname with that one parsed from the log.
In this example I have 2 cronjobs using the cronwrapper and both are OK. In that case the exit status is 0.
> cronstatus.sh
______________________________________________________________________________
AXELS CRONWRAPPER
Jobstatus of cronjobs on 🖥 linux-pc
v 2.0
______________________________________________________________________________
..... ✔ OK: restic-backup
Command : /home/axel/skripte/iml-backup/backup.sh
Last start: 2024-04-01 21:07:00, 1711998420
Returncode: 0 OK
Duration : 241 s
Ttl : 60 min OK
Expires : 1712005620 2024-04-01 23:07:00 OK
Logfile : /var/tmp/cronlogs/linux-pc_restic-backup.log
Last executions:
Result Start time rc Execution time
--------- ------------------- --- ---------------
OK 2024-04-01 21:07:00 0 241 s
OK 2024-04-01 20:07:00 0 141 s
OK 2024-04-01 19:07:00 0 119 s
OK 2024-04-01 18:07:00 0 127 s
OK 2024-04-01 17:07:00 0 203 s
OK 2024-04-01 16:07:00 0 120 s
OK 2024-04-01 15:07:00 0 197 s
OK 2024-04-01 14:07:00 0 179 s
OK 2024-04-01 01:07:00 0 112 s
OK 2024-04-01 00:07:00 0 117 s
There is no running job.
____________________________________________________________________________________
JOBS: 1 .. RUNNING: 0 .. ERRORS: 0
If a job is currently running you get a shorter info block with the time how long it is running already.
(...)
____________________________________________________________________________________
CURRENTLY RUNNING JOBS:
--- ⏳ for 2 min - /var/tmp/cronlogs/linux-pc_restic-backup.log.running.NNNNN
command : /home/axel/skripte/client/backup.sh
last start: 2024-06-01 22:07:01, ...
ttl : 60
OK - still running
(...)
If the job was aborted - maybe because of a reboot while the job was running) you get a line ERROR: The process NNNNN does not exist anymore.
Then you should check the file content and delete it, eg by using ./cronstatus.sh [logfile]
(see below)
Exitcode
The exit status of the cronstatus is the count of found jobs with error. It is zero if all jobs are OK.
> echo $?
0
You can execute this script in a monitoring check, to get a warning about a failed or expired cronjob.
Example for Icinga2:
https://git-repo.iml.unibe.ch/iml-open-source/icinga-checks/-/blob/master/check_cronstatus
Example output on error
On Error you get the last lines of the output with tail command. It is a try to help - if the log is a bit bigger you need to open the log.
--- /var/tmp/cronlogs/www.example.com_testjob2.log
command : ls /some-non-existing
last start: 2022-09-22 10:00:28, 1663833628
returncode: 2 ERROR
Last lines in output:
ls: cannot access '/some-non-existing': No such file or directory
duration : 0 s
ttl : 30 min OK
expires : 1663838128 2022-09-22 11:15:28 OK
CHECK FAILED
View short info
With parameter -s
you get a minimalistic view: it shows OK or ERROR per cronjob
> ./cronstatus.sh -s
✔ OK: restic-backup
❌ FAILED: ls
View detail
If you add a logfile as parameter you get a highlighted output of the log and the analysis section for this job.
./cronstatus.sh [logfile|label]
In this example I executed a dummy cronjob: ls
with a ttl of 10 min. This shows detail view shos
- OK for the exitcode 0
- ERROR for the expired job (log is now older than 10 min)
Cleamup
Delete old “running” files
Each start of a job produces a logfile with the process id. If the job aborts the files stay to have the posiibility to find a troublemaker.
To delete all outdated “running” files where the process does not existing anymore you can use the --cleanup
option.
./cronstatus.sh --cleanup
Delete old job logs
If you you deleted a cronjob you can use --wipe
to delete all files for a given cronjob.
> ./cronstatus.sh -w something
Wiping data for job 'something' ...
ls: cannot access '/var/tmp/cronlogs/_flag-something_*': No such file or directory
ls: cannot access '/var/tmp/cronlogs/axels-laptop_something.log*': No such file or directory
Done.
If you don’t give a job label you get a list of all jobs and a prompt to enter a job label.
./cronstatus.sh -w
..... Select a a job to wipe
❌ FAILED: test-to-delete
✔ OK: restic-backup
✔ OK: system-update
>
If you just press return you get the message “Doing nothing”. Otherwise the script tries to delete flag and log file.