Unix Tip: Am I being run by cron?
Send your Unix questions today!
See additional Unix tips and tricks
Have you ever wanted to force a script to act differently when it
is invoked by cron? If the script is run interactively, for example,
you might want the script to prompt the user for some information
while, if the script is run through cron, you might instead want to
run with a set of defaults.
While this isn't the most straightforward thing to do, a set of
commands can be concocted to determine when a script is run through
cron. In order to do this, we need to first recognize that all
scripts run by cron have one characteristic in common -- they have
the same "grandparent" process. Let's quickly examine why this is
the case.
The parent process of any script run through cron is the process
the cron daemon spawns to run the script. To test this, you could
put a script like this in your crontab file:
-------------------------- cut here -------------------------- #!/bin/bash echo $PPID >> /tmp/ppids -------------------------- cut here --------------------------
Then add the script to your crontab file:
* * * * * /export/home/bin/test-cron
What you will notice after a few minutes is that each line in your
/tmp/ppids file will contain a different process ID. In other words,
each running of the script has a different parent process. In
addition, each of these processes only exists while the cron job is
being run.
2406 2411 2416
The variable $PPID, available in bash and ksh, has a counterpart in
ps output. The PPID column in "ps -ef" output contains the parent
process ID for each listed process. For our purposes, we can limit
the ps output that we are going to process by using the -o option.
The command "ps -ef -o ppid,pid" will list ONLY process IDs and
parent process IDs (i.e., PIDs and PPIDs).
For an example, the following command will print the parent of the
mountd process. The response to this command will almost always be
"1" (/etc/init).
ps -ef -o ppid,pid | grep " `pgrep -x mountd$`$" | awk '{print $1}'
Sign up for ITworld's Daily newsletter
Follow ITworld on Twitter @IT_world
Esther Schindler
If the comments are ugly, the code is ugly
claird
SVG a graphics format for 21st century
pasmith
Take Chrome OS for a test spin
Sandra Henry-Stocker
Solaris Tip: Have Your Files Changed Since Installation?
jfruh
Android fragments vs. the iPhone monolith
mikelgan
What Gizmodo missed about the Pro WX Wireless USB disk drive
Sidekick: The Good News & the Bad News
Either way you look at it Microsoft Data Center management did not follow standards or best practices in this failure. In which case it makes me wonder more about the outsourcing of corporate data much less personal data.
- mburton325
Join the conversation here
Quick, practical advice for IT pros. Made fresh daily.
Want to cash in on your IT savvy? Send your tip to tips@itworld.com. If we post it, we'll send you a $25 Amazon e-gift card.













