Articles March 21, 2005 at 10:14 pm

Better periodic maintenance

This solves a problem with laptops (and/or desktops) being on again off again and perhaps missing the absolute time of the cron jobs run via periodic (daily, weekly, monthly).Problem: ensuring that the daily/weekly/monthly maintenance routines do get run.

Background: I am in the process of getting ready to roll out a whole lotta laptops and am looking into solutions to problems I didn’t know I had. In the process of all of this – I did find a few Desktops that via their ‘good fortune’ they had managed to _miss_ the daily, weekly, monthly cron jobs for almost 2 years…. amazing what well timed power shutdowns will do <sigh>

Yes, installing anacron is _a_ solution but it too has issues that can "break" a happy Mac baseline install setup. As in Who’s Anacron do you install? via Fink? roll your own? Will the "next" OS upgrade/update break a library or patch "something" that will require tweaking "something" or rebuilding "something" to make anacron stay happy and keep running? In my mind it is a "non-standard" solution and may require additional maintenance over time. I am looking for a solution that uses the built-in ‘kit’ as much as possible.

Enter XJanitor – a perl script that turns absolute time into relative time.

http://theapotek.com/teknotes/archives/000040.html

My only mods to the script itself were to annotate with some whitespace for readability.

I’ll upload to the file area (look in Article support)
https://www.afp548.com/filemgmt_data/files/XJanitor-03-21.zip

How to use it – I’ll differ from the author’s how-to slightly.

Firstly copy the script to /Library/Scripts

sudo cp source/XJanitor.pl /Library/Scripts/XJanitor.pl

let’s lock it down as the author suggests
sudo chmod 700 /Library/Scripts/XJanitor.pl
sudo chown root:admin /Library/Scripts/XJanitor.pl

now to modify crontab to reflect that we want to use XJanitor instead of periodic
…. change /etc/crontab to look something like this

###### note #####
since I am working with Laptops at the moment – and I don’t want the script to run while on battery – I have cron check at the top of every hour the status of XJanitor
———-
sudo pico /etc/crontab

# do daily/weekly/monthly maintenance via XJanitor
00 * * * * root @AppleNotOnBattery /Library/Scripts/XJanitor.pl

# Run daily/weekly/monthly jobs.
#15 3 * * * root periodic daily
#30 4 * * 6 root periodic weekly
#30 5 1 * * root periodic monthly
—————

the way the script is designed, when first run, it will run all three jobs, daily, weekly, monthly and then based on the time stamp of the output files of those "outfiles" it will wait to run again at the first opportunity.

So if it runs the first time at noon, and the computer is shutdown, and then turned back on at 2:30 the following day, at the top of the hour cron fires off the scripts daily gets run. The file stamp get reset to 3PM for the following day – and so on… its all relative to the runtime.
———-

Another thing that can be done with XJanitor:

it can be used to email you its ‘status’ – a phone home feature

Line 57 or so in XJanitor.pl

#——————-
# ADVANCED OPTIONS –
#——————-
my($admin) = "";

add a local email address such as laptop.alert so the line reads

my($admin) = "laptop.alert";
save and exit

now go into /etc/aliases
sudo pico /etc/aliases

find a nice blank line in the
# put your local aliases here section
and add

laptop.alert: [email protected]

make it a real email addy that can receive email from a laptop that may or may not be a valid "sender" (as in my-laptop.local or somesuch)

save and exit

then
rebuild the alias index
sudo newaliases
and
sudo postfix reload
or sudo postfix start

If postfix is not configured to send mail directly revisit other articles here at AFP548 or over at macosxhints.

once this is done, the daily, weekly, monthly runs will email the output of the jobs to the "laptop.alert" email account. "laptop phone home".

Thoughts?

No Comments

    • Yes, installing anacron is _a_ solution but it too has issues that can
      “break” a happy Mac baseline install setup. As in Who’s Anacron do you
      install? via Fink? roll your own?

    The anacron provided on Apple’s download page as an
    installer package?

      Will the “next” OS upgrade/update break a library or patch
      “something” that will require tweaking “something” or rebuilding “something”
      to make anacron stay happy and keep running? In my mind it is a “non-
      standard” solution and may require additional maintenance over time. I am
      looking for a solution that uses the built-in ‘kit’ as much as possible.

    If that set of considerations was used to exclude every piece of software
    we would consider for installation on a machine, we’d never be able to run
    anything. That’s pretty paralyzing. All software requires maintenance over
    time. The anacron package linked above has worked for me since 10.2.x
    and I have a feeling it’ll work just as well in Tiger. It’s not any less standard
    than what has been proposed here.

    I’m not dissing the method that has been presented. I just think that the
    reasons for dismissing anacron are weak. The same reasons could be used to
    dismiss perl-based solutions as well.


    http://www.aaronadams.net
    My two-bit, half-assed opinion concerning whatever it is I fee like writing about.

  • I agree with you if the laptop is mine. My laptop is almost always plugged in if it
    is on my desk and it is on my desk at particular times. I also don’t have it sleep. I
    have my cron jobs set to fire off around mid-day as well.

    I think the article is describing a bigger challenge though – making sure that a
    number of laptops that you set up for others perform system maintenance
    though those users may not know how shutdowns and sleeps effect their
    machines.

Leave a reply

You must be logged in to post a comment.