ให้ 'cron' เรียกใช้เชลล์สคริปต์ที่ตั้งค่าสภาพแวดล้อมก่อนรันคำสั่ง
เสมอ.
# @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
# Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min Hour Day Month Weekday Command
#-----------------------------------------------------------------------------
0 * * * * /usr/bin/ksh /work1/jleffler/bin/Cron/hourly
1 1 * * * /usr/bin/ksh /work1/jleffler/bin/Cron/daily
23 1 * * 1-5 /usr/bin/ksh /work1/jleffler/bin/Cron/weekday
2 3 * * 0 /usr/bin/ksh /work1/jleffler/bin/Cron/weekly
21 3 1 * * /usr/bin/ksh /work1/jleffler/bin/Cron/monthly
สคริปต์ใน ~ / bin / Cron คือลิงก์ทั้งหมดไปยังสคริปต์เดียว 'runcron' ซึ่งมีลักษณะดังนี้:
: "$Id: runcron.sh,v 2.1 2001/02/27 00:53:22 jleffler Exp $"
#
# Commands to be performed by Cron (no debugging options)
# Set environment -- not done by cron (usually switches HOME)
. $HOME/.cronfile
base=`basename $0`
cmd=${REAL_HOME:-/real/home}/bin/$base
if [ ! -x $cmd ]
then cmd=${HOME}/bin/$base
fi
exec $cmd ${@:+"$@"}
(เขียนโดยใช้มาตรฐานการเข้ารหัสที่เก่ากว่า - ทุกวันนี้ฉันจะใช้ shebang '#!' ตอนเริ่มต้น)
'~ / .cronfile' เป็นรูปแบบต่าง ๆ ในโปรไฟล์ของฉันสำหรับใช้งานโดย cron - ไม่โต้ตอบอย่างจริงจังและไม่มีเสียงสะท้อนเพื่อเสียงดัง คุณสามารถจัดเรียงเพื่อดำเนินการ. profile และอื่น ๆ แทน (สิ่งที่ REAL_HOME เป็นสิ่งประดิษฐ์ของสภาพแวดล้อมของฉัน - คุณสามารถทำเป็นว่ามันเหมือนกับ $ HOME)
ดังนั้นรหัสนี้อ่านสภาพแวดล้อมที่เหมาะสมและดำเนินการคำสั่งรุ่นที่ไม่ใช่ Cron จากไดเรกทอรีบ้านของฉัน ตัวอย่างเช่นคำสั่ง 'วันทำงาน' ของฉันดูเหมือน:
: "@(#)$Id: weekday.sh,v 1.10 2007/09/17 02:42:03 jleffler Exp $"
#
# Commands to be done each weekday
# Update ICSCOPE
n.updics
คำสั่ง 'รายวัน' นั้นง่ายกว่า:
: "@(#)$Id: daily.sh,v 1.5 1997/06/02 22:04:21 johnl Exp $"
#
# Commands to be done daily
# Nothing -- most things are done on weekdays only
exit 0