ตั้ง crontab ให้ restart apache แต่ถึงเวลาไม่ยอมรี

ผมลองทั้ง
0 0 * * * /usr/local/apache22/bin/apachectl restart
0 0 * * * cd /usr/local/apache22/bin && ./apachectl restart

ลองมาแล้ว พอถึงเวลาก็ไม่รัน ถ้าสั่งเองแมนนวล มันก็รีสตาร์ทนะ แต่ใส่ใน crontab แล้วไม่รี

crontab งานอื่นๆ ทำงานปกติครับ ยกเว้น คำสั่ง restart apache อย่างเดียวเลย
ใช้งานมาหลายเครื่อง เพิ่งเจอเครื่องนี้แหละ

ขออนุญาติถามข้อมูลประกอบนะครับว่าตอนที่ตั้ง crontab อะไรตั้งครับ และ
$ ps aux | grep cron
root 6109 0.0 0.0 2104 892 ? Ss 08:58 0:00 /usr/sbin/cron
มี Process ทำงานอยู่หรือเปล่าครับ

อืม... น่าจะต้องเช็คอย่างที่คุณ sdayu บอกครับ
แต่ปกติผมแก้ config เสร็จ จะสั่ง

# /etc/init.d/cron restart

เพราะกลัวว่า cron จะไม่ไปอ่าน config ใหม่ (ไม่รู้จำเป็นหรือเปล่า :P แต่สั่งเพื่อความสบายใจ เหอ ๆ)

___
Neutron: Linux Addict!

รู้สึกว่างง ครับจะถามว่าใช้ user ตั้งครับอะไรครับ เพราะ crontab สามารถตั้งได้หลาย user ครับ

อืม จริง ๆ ด้วย น่าจะต้องเป็น root และตั้งค่าแบบนี้หรือเปล่าครับ

0 0 * * * root /usr/local/apache22/bin/apachectl restart

___
Neutron: Linux Addict!

อันนี้เป็น crontab ที่อยู่ใต้ /etc/cron.d/ ถึงจะต้องมีคอลัมน์ user ที่ run ด้วย

แต่ถ้าเป็น crontab ใต้ /var/spool/cron/crontabs/ ซึ่งสร้างด้วยคำสั่ง "crontab -e" ล่ะก็ ไม่มีครับ เพราะแต่ละ crontab ใน spool ก็เป็นของแต่ละ user อยู่แล้ว

กล่าวคือ crontab ที่ต้นกระทู้ จะต้องเป็น crontab ที่สร้างด้วย "crontab -e" แต่ถ้าสร้าง crontab ไปโยนลง /etc/cron.d/ เอง ก็ต้องเป็นแบบของนิวตรอน

อีกทางหนึ่งที่จะเช็ก คือ "grep -i cron /var/log/syslog" ดูครับ ว่ามันถูกเรียกหรือเปล่า

แป่ว ทำไม reply ผมมันเด้งไปแทรกด้านบนอ่า ???

log apache ไม่มีอะไรเปลี่ยนแปลง หรือสะดุดสักกะติ๊ดเลยครับ
เมื่อถึงเวลายังคงวิ่งปรื้ดๆๆ ปกติ ( ขออภัยที่เปิดเผย log อันนี้ไม่ได้น่ะครับ ) แต่ log มันไม่มีฟ้องบอกถึง crontab นี้เลย

ลองดู syslog มีการเรียกครับ แต่ก็ยอมรี
อันนี้เมื่อสักครู่นี่เอง

ug 25 15:38:55 www2 last message repeated 54 times
Aug 25 15:40:01 www2 /USR/SBIN/CRON[16516]: (smmsp) CMD (test -x /etc/init.d/sendmail && /usr/share/sendmail/sendmail cron-msp)
Aug 25 15:40:01 www2 /USR/SBIN/CRON[16518]: (root) CMD (env LANG=C /usr/bin/mrtg /usr/local/apache22/htdocs/mrtgwww2/mrtg_www2.cfg)
Aug 25 15:40:01 www2 /USR/SBIN/CRON[16520]: (root) CMD (/usr/local/apache22/bin/apachectl restart)
Aug 25 15:40:01 www2 /USR/SBIN/CRON[16522]: (root) CMD (/root/check_swap.sh)
Aug 25 15:40:01 www2 /USR/SBIN/CRON[16524]: (root) CMD (env LANG=C /usr/bin/mrtg /var/www2/html/mrtg/www2/mrtg.cfg)
Aug 25 15:40:02 www2 snmpd[4191]: Connection from UDP: [127.0.0.1]:55506
Aug 25 15:40:02 www2 last message repeated 10 times
Aug 25 15:40:02 www2 snmpd[4191]: Connection from UDP: [127.0.0.1]:55507
Aug 25 15:40:02 www2 last message repeated 10 times

ลอง /etc/init.d/cron restart ก็แล้ว

user root แน่นอนครับ

งั้นก็คือข้ามเรื่อง cron ไปดูที่ log ของ apache มั้ยครับ?

Creative Commons License ลิขสิทธิ์ของบทความเป็นของเจ้าของบทความแต่ละชิ้น
ผลงานนี้ ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-อนุญาตแบบเดียวกัน 3.0 ที่ยังไม่ได้ปรับแก้