หน้า 1 จากทั้งหมด 1

crontab บน Linux crontab บน FREEBSD ตัวอย่างสั่ง .sh ทำงานทุกวัน

โพสต์แล้ว: 14/09/2009 5:50 pm
โดย ob1
เก็บมาฝากจากเว็บ ต้นฉบับเข้าไม่ได้แล้ว ขอเก็บไว้ที่นี่ด้วยนะ
crontab บน Linux

====================

คำสั่ง crontab เป็นคำสั่งในการทำ schedule ในการสั่งโปรแกรม หรือ script ต่างๆ ทำงานตามเวลาที่กำหนด บนระบบ UNIX/LINUX

ซึ่งอำนวยความสะดวกได้มากเลยที่เดียว งานบางอย่างที่จำเป็นต้องทำซ้ำๆในเวลาเดียวกัน ไม่ว่าจะทุกวัน ทุกสัปดาห์ หรือ ทุกเดือน



การใช้งาน crontab

------------------------

คำสั่งและ option ของ crontab มีดังนี้

Code:

crontab filename การนำเอาคำสั่ง crontab เข้ามาจาก ไฟล์อื่น

crontab -e แก้ไข crontab ปัจจุบัน

crontab -l ดูคำสั่ง crontab ทั้งหมดที่มีอยู่

crontab -r ลบคำสั่ง crontab ที่มีทั้งหมด

crontab -u user เป็นคำสั่งของผู้ดูแลระบบเท่านั้น(administrators) เพื่อใช้ดู แก้ไข ลบ crontab ของ user แต่ล่ะคน



เมื่อเรียกคำสั่งตามข้างบนแล้ว crontab จะเข้าสู่ระบบการ กำหนด หรือ แก้ไข ซึ่งการ กำหนด หรือแก้ไขนี้ จะเหมือนกับการใช้งาน vi ครับ
ถ้าใครเคยใช้งาน vi แล้วก็จะไม่มีปัญหาอะไร ถ้าไม่เคยใช้ ก็ดูคำสั่งพื้นฐานของ vi ด้านล่างนะครับ
เมื่อเรียกโปรแกรม crontab ให้ทำงานและขณะอยู่ในโปรแกรม เราสามารถกดคีย์ ดังต่อไปนี้เพื่อ

Code:
Esc เพื่อออกมาสู่โหมดปกติ
i เพื่อการเพิ่ม คำสั่ง ข้อความ เข้าไปใหม่
x ลบ ตัวอักษรที่ cursor วางอยู่ ทีละอักษร ในโหมดปกติ
dd ลบบรรทัด ทั้งบรรทัด ที่ cursor วางอยู่ทีละแถว ในโหมดปกติ
:q! ออกโดยไม่ต้องแก้ไขอะไร
:wq! เก็บบันทึกข้อความที่แก้ไขแล้วออกจากโปรแกรม
คำสั่งเหล่านี้เป็นแค่บางส่วนเท่านั้น แต่ก็พอใช้งานคำสั่ง crontab แล้วล่ะครับ ถ้าใครอยากได้มากกว่านี้ต้องศึกษาเพิ่มเอาอีกที



การกำหนดให้ crontab ทำงาน
-------------------------------------
format ของคำสั่ง crontab มีทั้งหมด 6 fields เป็นดังบรรทัดข้างล่าง

Code:
minute(s) hour(s) day(s) month(s) weekday(s) command(s)
fields 1-5 เป็นการกำหนดเวลา และ field ที่ 6 เป็นการกำหนดคำสั่ง ดังความหมายของแต่ละ fields ดังต่อไปนี้

Code:
........................................................................................................................................
Field ค่า รายละเอียด
........................................................................................................................................
minute 0-59 เวลาเป็นนาที จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
hour 0-23 เวลาเป็นชั่วโมง จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
day 1-31 เวลาเป็นวัน จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
month 1-12 เวลาเป็นเดือน จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
weekday 0-6 วันของแต่ละสัปดาห์ มีค่าดังนี้ (อาทิตย์ = 0, จันทร์ = 1, อังคาร = 2, พุธ = 3, พฤหัส = 4, ศุกร์ = 5 และ เสาร์ = 6)
command คำสั่ง เราสามารถกำหนดคำสั่งได้มากมาย รวมทั้ง script ต่างๆ ตามที่เราต้องการ
.........................................................................................................................................

ตัวอย่างการกำหนด crontab
---------------------------------
การเพิ่ม crontab โดยเรียกใช้คำสั่ง crontab -e เมื่อเข้าสู่โปรแกรมแล้ว กด i เพื่อเพิ่ม คำสั่งดังตัวอย่างด้านล่างนี้เข้าไป แล้วทำการบันทึก
แล้วออกมาโดยกด Esc แล้วกด :wq!

Code:

โค้ด: เลือกทั้งหมด

0 8 * * * /usr/bin/mplayer /home/tuxzilla/music/คุณครูครับ.mp3 
จากคำสั่งด้านบนจะเป็นการสั่งให้โปรแกรม mplayer เล่นเพลง คุณครูครับ.mp3 ตอน 08:00 น. ของทุกๆวัน (เวลาตื่นนอนของผมเอง)


Code:

โค้ด: เลือกทั้งหมด

0 0 * * 1 /home/tuxzilla/getlogs.pl 
จากคำสั่งด้านบน จะทำการ Run script getlogs.pl ที่ path /home/tuxzilla ทุกวันจันทร์ ทุกๆเดือน ตอนเที่ยงคืน



Code:

โค้ด: เลือกทั้งหมด

0 0 * * 1,5 /home/tuxzilla/getlogs.pl 
คำสั่งนี้เหมือนคำสั่งด้านบนครับ แต่จะเพิ่มการทำงานในวันศุกร์ด้วย ซึ่งเราสามารถใช้ "," คั่นไปเรื่อยๆได้ เพื่อที่จะกำหนดเพิ่มให้แต่ล่ะ fields หรือใช้ "*"
เพื่อการกำหนดเป็นทั้งหมด(หมายความว่า หากที่ field ชั่วโมง เป็น * ก็หมายความว่าต้องทำงานทุกชั่วโมง)

Code



ถึงจะมีหลาย user ในเครื่องเดียวกันแต่ยังไง crontab ก้ยังเป็นของใครของมันไม่กวนกันครับ และไม่สามารถดูของกันและกันได้ นอกจากเป็น
ผู้ดูแลระบบครับ ถึงตรงนี้แล้วก็คงไม่มีอะไรยากเกินกว่าแล้ว หากแต่ความสะดวกเท่านั้นที่จะมาแทนที หรือใครจะเอามาเป็นนาฬิกา อย่างผมก็ไม่ว่าครับ


คำสั่งเพิ่มเติมที่ควรรู้
------------------------
man crontab

man cron

man at

man batch

Re: crontab บน Linux crontab บน FREEBSD

โพสต์แล้ว: 20/12/2009 6:09 am
โดย ob1
เสริมเพิ่มเติม ไฟล์ ที่จะให้ php รัน
ไม่ควรใช้ การระบุ path แบบ relative
ให้ระบุ path เต็มจาก root

Re: crontab บน Linux crontab บน FREEBSD

โพสต์แล้ว: 04/12/2010 12:53 am
โดย phajvaj
ขอบคุณมากมาย
เปงความรู้ที่ดีมากครับ

Re: crontab บน Linux crontab บน FREEBSD

โพสต์แล้ว: 04/12/2010 10:52 pm
โดย gangwell
ขอบคุณ ob1 นะครับ มีประโยช์มากครับ

Re: crontab บน Linux crontab บน FREEBSD

โพสต์แล้ว: 20/12/2010 12:39 pm
โดย phajvaj
ถ้าเขียนแบบนี้จะถูกไหมครับ
0 0,6 * * * /home/std/project/public_html/testemail.php
ขอคำแนะนำด้วยครับ

Re: crontab บน Linux crontab บน FREEBSD

โพสต์แล้ว: 05/10/2016 2:40 am
โดย mindphp
ไม่ต้องใส่ , ที่ตัวเลขครับ

โค้ด: เลือกทั้งหมด

0 6 * * * /home/std/project/public_html/testemail.php
ถ้าจะให้ php รันได้

โค้ด: เลือกทั้งหมด

0 6 * * * path_to_php /home/std/project/public_html/testemail.php

Re: crontab บน Linux crontab บน FREEBSD

โพสต์แล้ว: 05/04/2018 10:28 am
โดย janun
ตามๆๆ