May 13, 2010

Set editor program for cron edit.

Trip for Crontab

crontab -e uses the EDITOR environment variable. to change the editor to your own choice just set that. You may want to set EDITOR in you .bashrc because many commands use this variable. Let's set the EDITOR to nano a very easy editor to use:

export EDITOR=nano

ในการแก้ไข crontab โดยใช้คำสั่ง crontab -e นั้น ส่วนใหญ่ผู้ใช้งานจะได้ใช้โปรแกรม Editor ที่เป็นค่าพื้นฐานของเครื่อง/ระบบ นั้นๆ เช่น VI เป็นต้น แต่ในการทำงานใน Editor พื้นฐานนั้นบางคนก็อาจไม่ชอบในความยุ่งยากก็เป็นได้ เช่น การใช้ VI พื้นฐาน ก่อนจะแก้ไขข้อความ จะต้องกด I เพื่อเข้าสู่โหมด Insert ก่อน ถ้าเผลอพิมพ์ข้อความไปก่อนโดยไม่ได้ดูที่หน้าจอ ก็อาจทำให้ข้อความดั้งเดิมผิดเพี้ยนไปได้ นี่เป็นประสบการณ์ตรง และอีกส่วนหนึ่ง การออกจากโปรแกรม VI ต้องกด : แล้วตามด้วย q! หรือ :wq! เพื่อกำหนดให้ write & quit โดยไม่ต้องถามซ้ำ ซึ่งก็อาจจำยากสำหรับผู้ที่ไม่ได้ใช้บ่อย ๆ 

ปัญหานี้เราสามารถกำหนดให้ Crontab เลือกใช้โปรแกรม Text editor ที่เราชื่นชอบใดๆ ก็ได้ (Command Line) เช่นโปรแกรม nano เป็นต้น ทั้งนี้ ถ้าเรามีสิทธิ์เข้าถึงระบบได้ ก็สามารถแก้ไขไฟล์ .bashrc ใน root ของเราเอง โดยเพิ่มการกำหนดค่าของ Editor ไว้ เช่นระบบ ของ FC จำมีส่วนของ User specific มาให้แล้ว

# User specific aliases and functions
export EDITOR=nano


สำหรับ Cron job ใด ๆ ที่เราไม่ต้องการให้มีการส่งเมล์รายงาน เราสามารถบังคับให้ส่งไปทางอื่น หรือ ละทิ้งไปเลยก็ได้ เรียกว่า การ Pipe (ไปพ์) เช่น กรณีที่มีการปรับฐานเวลากับระบบ Time Server ซึ่งจะเป็นงานที่ต้องทำอยู่ตลอดเวลา ถ้ายอมให้ส่งเมล์เข้ามาก็จะเปลืองพื้่นที่ กรณีนี้แก้ไขโดยเพิ่มคำสั่งนี้ต่อท้าย cron job นั้นๆ

>/dev/null 2>&1.
หรือ
&> /dev/null

เช่น
10 * * * * /usr/sbin/ntpdate clock.thaicert.nectec.or.th >/dev/null 2>&1.
หรือ
10 * * * * /usr/sbin/ntpdate clock.thaicert.nectec.or.th &> /dev/null

-----------------------------------------------------------------------------------------------------
Q.
How do disable mail alert by crontab? 
When my job is executed it will sent an email to me. How can I prevent this?

A. crontab command is use to maintain crontab files for individual users.

By default the output of a command or a script (if any produced), will be email to your local email account. To stop receiving email output from crontab you need to append following string:
Cron Job Prevent the sending of errors and output

To prevent the sending of errors and output, add any one of the following at the end of the line for each cron job to redirect output to /dev/null.
>/dev/null 2>&1.
OR
&> /dev/null

suck as :
10 * * * * /usr/sbin/ntpdate clock.thaicert.nectec.or.th >/dev/null 2>&1.
or
10 * * * * /usr/sbin/ntpdate clock.thaicert.nectec.or.th &> /dev/null

No comments:

Post a Comment