วิธีการแก้ไขไฟล์ Linux Crontab เพื่อกำหนดตารางการทำงาน

บทนำ

มีเดมอนใน Linux ที่เรียกว่า cron ซึ่งใช้เพื่อเรียกใช้กระบวนการในช่วงเวลาปกติ

วิธีการนี้เป็นการตรวจสอบโฟลเดอร์บางโฟลเดอร์ในระบบของคุณเพื่อเรียกใช้สคริปต์ ตัวอย่างเช่นมีโฟลเดอร์ชื่อ /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly และ /etc/cron.thmonthly นอกจากนี้ยังมีไฟล์ชื่อ / etc / crontab

โดยค่าเริ่มต้นคุณสามารถวางสคริปต์ลงในโฟลเดอร์ที่เกี่ยวข้องเพื่อให้ทำงานเป็นระยะ ๆ ได้

ตัวอย่างเช่นเปิดหน้าต่างเทอร์มินัล (โดยการกด CTRL, ALT และ T) และเรียกใช้ คำสั่ง ls ต่อไปนี้:

ls / etc / cron *

คุณจะเห็นรายการของโปรแกรมหรือสคริปต์ที่รันรายชั่วโมงรายวันรายสัปดาห์และรายเดือน

ปัญหาเกี่ยวกับโฟลเดอร์เหล่านี้คือมีความคลุมเครือเล็กน้อย ตัวอย่างเช่นทุกวันหมายความว่าสคริปต์จะทำงานวันละครั้ง แต่คุณไม่สามารถควบคุมเวลาที่สคริปต์จะทำงานในระหว่างวันนั้น

นั่นคือที่มาของไฟล์ crontab

โดยการแก้ไขไฟล์ crontab คุณสามารถเรียกใช้สคริปต์หรือโปรแกรมเพื่อให้ทำงานได้ในวันและเวลาที่แน่นอนที่คุณต้องการให้ทำงาน ตัวอย่างเช่นคุณอาจต้องการสำรองไฟล์ทุกๆคืนเวลา 6 โมงเย็น

สิทธิ์

คำสั่ง crontab กำหนดให้ผู้ใช้มีสิทธิ์แก้ไขไฟล์ crontab โดยทั่วไปมีไฟล์สองไฟล์ที่ใช้จัดการสิทธิ์ crontab:

ถ้ามีไฟล์ /etc/cron.allow อยู่ผู้ใช้ที่ต้องการแก้ไขไฟล์ crontab ต้องอยู่ในไฟล์นั้น ถ้าไม่มีไฟล์ cron.allow แต่มีไฟล์ /etc/cron.deny ผู้ใช้ต้องไม่มีอยู่ในไฟล์นั้น

ถ้าแฟ้มทั้งสองมีอยู่ /etc/cron.allow จะแทนที่ไฟล์ /etc/cron.deny

หากไม่มีไฟล์อยู่ระบบจะขึ้นอยู่กับการกำหนดค่าระบบว่าผู้ใช้สามารถแก้ไข crontab ได้หรือไม่

ผู้ใช้ root สามารถแก้ไขไฟล์ crontab ได้ตลอดเวลา คุณสามารถใช้ คำสั่ง su เพื่อสลับไปยังผู้ใช้ root หรือ คำสั่ง sudo เพื่อรันคำสั่ง crontab

การแก้ไขไฟล์ Crontab

ผู้ใช้แต่ละรายที่มีสิทธิ์สามารถสร้างไฟล์ crontab ของตนเองได้ คำสั่ง cron โดยทั่วไปมองหาไฟล์ crontab หลายไฟล์และรันผ่านไฟล์เหล่านั้นทั้งหมด

เมื่อต้องการตรวจสอบว่าคุณมีไฟล์ crontab หรือไม่ให้รันคำสั่งต่อไปนี้:

crontab -l

หากคุณไม่มีแฟ้ม crontab ข้อความ "crontab ไม่มีสำหรับ " จะปรากฏเป็นอย่างอื่นไฟล์ crontab ของคุณจะปรากฏขึ้น (ฟังก์ชันนี้แตกต่างจากระบบในระบบบางครั้งก็ไม่มีอะไรแสดงเลยและครั้งอื่น ๆ จะแสดงขึ้น " ไม่แก้ไขไฟล์นี้ ")

เมื่อต้องการสร้างหรือแก้ไขไฟล์ crontab ให้รันคำสั่งต่อไปนี้:

crontab -e

โดยค่าเริ่มต้นถ้าไม่มีโปรแกรมแก้ไขเริ่มต้นที่เลือกไว้ระบบจะขอให้คุณเลือกตัวแก้ไขเริ่มต้นที่จะใช้ ส่วนตัวผมชอบที่จะใช้ นาโน เป็นมันค่อนข้างตรงไปข้างหน้าที่จะใช้และมันจะทำงานจากสถานี

ไฟล์ที่เปิดขึ้นมีข้อมูลเป็นจำนวนมาก แต่ส่วนสำคัญคือตัวอย่างก่อนจบส่วนความคิดเห็น (ความคิดเห็นจะแสดงด้วยเส้นที่ขึ้นต้นด้วย #)

# mh dom mon dow command

0 5 * * 1 tar -zcf /var/backups/home.tgz / home /

มีข้อมูลทั้งหมด 6 ชิ้นให้พอดีกับแต่ละบรรทัดของไฟล์ crontab:

สำหรับแต่ละรายการ (ยกเว้นคำสั่ง) คุณสามารถระบุอักขระตัวแทน ดูตัวอย่าง crontab บรรทัดต่อไปนี้:

30 18 * * * tar - zcf /var/backups/home.tgz / home /

สิ่งที่คำสั่งดังกล่าวคืออยู่ที่ 30 นาที 18 ชั่วโมงและทุกวันเดือนและวันในสัปดาห์รันคำสั่งเพื่อ ซิป และ tar ไดเรกทอรีบ้านไปยังโฟลเดอร์ / var / backups

เพื่อให้ได้คำสั่งให้รันทุกๆ 30 นาทีที่ผ่านมาทุกๆชั่วโมงฉันสามารถเรียกใช้คำสั่งต่อไปนี้:

คำสั่ง 30 * * * *

เพื่อให้ได้คำสั่งให้เรียกใช้ทุกๆนาทีที่ผ่านมา 6 โมงเย็นฉันสามารถเรียกใช้คำสั่งต่อไปนี้:

* 18 * * * คำสั่ง

คุณต้องระมัดระวังในการตั้งค่าคำสั่ง crontab ของคุณ

ตัวอย่างเช่น

* * * คำสั่ง 1 *

คำสั่งดังกล่าวจะทำงานทุกนาทีทุกชั่วโมงในทุกๆวันของทุกสัปดาห์ในเดือนมกราคม ฉันสงสัยว่าเป็นสิ่งที่คุณต้องการ

เมื่อต้องการเรียกใช้คำสั่งที่ 5 โมงเช้าวันที่ 1 มกราคมคุณจะได้รับคำสั่งต่อไปนี้ในไฟล์ crontab:

0 5 1 1 * command

วิธีการลบแฟ้ม Crontab

เกือบตลอดเวลาที่คุณไม่ต้องการลบไฟล์ crontab แต่คุณอาจต้องการลบแถวบางส่วนออกจากไฟล์ crontab

อย่างไรก็ตามหากคุณต้องการลบไฟล์ crontab ของผู้ใช้ของคุณเรียกใช้คำสั่งต่อไปนี้:

crontab -r

วิธีที่ปลอดภัยกว่าในการทำเช่นนี้คือเรียกใช้คำสั่งต่อไปนี้:

crontab -i

คำถามนี้ถามคำถามว่า "คุณแน่ใจหรือ?" ก่อนที่จะลบไฟล์ crontab