ใช้งานสคริปต์ทุกวันโดยใช้ cronjob


10

ฉันต้องการรหัสที่แน่นอนที่ฉันจะใช้เพราะฉันไม่สามารถเข้าใจได้ ฉันใช้crontab -eเพื่อตั้งค่างาน cron แต่เมื่อฉันบันทึกไว้มันไม่ทำงาน ฉันแค่พยายามเรียกใช้ไฟล์ที่เรียกnewmail.shจากผู้ใช้รูท


คุณพบคำตอบสำหรับคำถามของคุณหรือไม่
bendaf

คำตอบ:


10

หากคุณต้องการให้งานรันทุกวันเวลา 15:17 น. คุณจะใช้:

17 15 * * * root newmail.sh

สิ่งนี้บอกว่า "เรียกใช้ newmail.sh เหมือนรากทุกวันในสัปดาห์ทุกวันของเดือนทุกเดือนเวลา 15:17 น."

นาทีชั่วโมง dom เดือน dow ผู้ใช้ cmd

นาที - สิ่งนี้จะควบคุมว่าคำสั่งจะทำงานในนาทีใดและอยู่ระหว่าง '0' ถึง '59'

ชั่วโมง - สิ่งนี้จะควบคุมเวลาที่คำสั่งจะทำงานและระบุไว้ในนาฬิกา 24 ชั่วโมงค่าต้องอยู่ระหว่าง 0 ถึง 23 (0 คือเที่ยงคืน)

Dom - นี่คือวันของเดือนที่คุณต้องการให้คำสั่งทำงานบนเช่นในการเรียกใช้คำสั่งในวันที่ 19 ของแต่ละเดือน Dom จะเป็น 19

เดือนนี่คือเดือนที่คำสั่งที่ระบุจะทำงานในอาจเป็นตัวเลขที่ระบุ (0-12) หรือเป็นชื่อของเดือน (เช่นพฤษภาคม)

dow - นี่คือวันของสัปดาห์ที่คุณต้องการให้รันคำสั่งมันอาจเป็นตัวเลข (0-7) หรือเป็นชื่อของวัน (เช่นดวงอาทิตย์)

user - นี่คือผู้ใช้ที่รันคำสั่ง

cmd - นี่คือคำสั่งที่คุณต้องการเรียกใช้ ฟิลด์นี้อาจมีหลายคำหรือเว้นวรรค

จาก: http://www.unixgeeks.org/security/newbie/unix/cron-1.html


ในอูบุนตู 16 และใหม่กว่ารูปแบบใหม่คือ: "คำสั่ง mh dom mon dow"
bendaf

บน Ubuntu 19 นาทีเป็นครั้งแรก นอกจากนี้มันจะเตือนคุณเกี่ยวกับเวลาที่ไม่ถูกต้อง
kelalaka

6
sudo crontab -e

เพิ่มบรรทัดเหล่านี้ในตอนท้ายของไฟล์

*/1 * * * * wget -O /dev/null  project_crone_URL

(เรียกใช้ cron ต่อหนึ่งครั้งใน 1 นาที)

0 0 * * * wget -O /dev/null  project_crone_URL

(เรียกใช้ cron ต่อครั้งใน 24 ชั่วโมง)

บันทึกไฟล์

เริ่ม crontab โดยคำสั่งนี้

sudo /etc/init.d/cron start

หยุด crontab โดยคำสั่งนี้

sudo /etc/init.d/cron stop

รีสตาร์ท crontab โดยคำสั่งนี้

sudo /etc/init.d/cron restart

2

หากคุณใช้crontab -eตั้งแต่Ubuntu 16.0+จะไม่มีฟิลด์ผู้ใช้ดังนั้นรูปแบบที่ถูกต้องคือ:

17 15 * * * newmail.sh

สิ่งนี้บอกว่า "เรียกใช้ newmail.sh ทุกวันตลอดสัปดาห์ทุกวันของเดือนทุกเดือนเวลา 15:17 น."

วิธีอื่น ๆคำตอบของ dm78นั้นถูกต้องและมีคำอธิบายที่ถูกต้องของรูปแบบ

นอกจากนี้หากมีข้อผิดพลาดเกิดขึ้นและคุณติดตั้งระบบอีเมลระบบจะส่งข้อความถึงคุณ สำหรับข้อมูลเพิ่มเติมดูคำตอบนี้

หากคุณสนใจในการบันทึกของ cronjobs คุณสามารถใช้คำตอบนี้


2
มันขึ้นอยู่กับที่ crontab คุณแก้ไข crontab -ethingy ไม่ได้มีข้อมูลผู้ใช้ (ตามที่คุณได้อย่างถูกต้องกล่าวว่า) แต่ไฟล์/etc/crontab(คน socalled ระบบ crontab) และไฟล์ดังต่อไปนี้/etc/cron.d ทำมีข้อมูลผู้ใช้
PerlDuck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.