เพื่อเรียกใช้งาน cron ตอนเที่ยงคืนคุณจะนำหน้าคำสั่งหรือเส้นทางไปยังสคริปต์ของคุณด้วย:
0 0 * * *
ตัวอย่างเช่นในการเรียกใช้ /home/youssif/myscript
คุณจะใช้:
0 0 * * /home/youssif/myscript
ในไฟล์ crontab ของคุณ
เพื่อแก้ไขไฟล์ crontab ของคุณ, ใช้ crontab -e
เพื่อเรียกใช้คำสั่งในฐานะผู้ใช้ปัจจุบันของคุณ อีกทางหนึ่ง หากคุณต้องการเรียกใช้คำสั่งในฐานะรูท คุณสามารถเรียกใช้ได้ sudo crontab -e
เพื่อแก้ไขไฟล์ crontab ของคุณ
ในการเรียกใช้คำสั่งในเทอร์มินัล (ไม่ใช่ความคิดที่ดีหากคุณเรียกใช้คำสั่งในฐานะรูท) คุณจะต้องระบุการแสดงผลเพื่อใช้ในคำสั่งหรือในสคริปต์ของคุณ ในการทำเช่นนี้ สมมติว่าคุณ $จอแสดงผล
เป็น :0
(ค่าเริ่มต้น) คุณสามารถนำหน้าคำสั่งของคุณด้วยตัวแปรต่อไปนี้:
จอแสดงผล=:0
นอกจากนี้ โดยทั่วไปเทอร์มินัลจะปิดหลังจากดำเนินการคำสั่ง แต่คุณสามารถทำได้ ใช้ตัวเลือกการระงับด้วย xterm เพื่อให้เทอร์มินัลเปิดอยู่
ดังนั้นเพื่อเรียกใช้ เสียงสะท้อน "สวัสดีชาวโลก"
ในอาคารผู้โดยสารตอนเที่ยงคืน คำสั่งของคุณจะมีลักษณะดังนี้:
0 0 * * DISPLAY=:0 xterm -hold -e 'echo "hello world"'
หรือเรียกใช้สคริปต์ของคุณ:
0 0 * * DISPLAY=:0 xterm -hold -e '/home/youssif/myscript'
อย่างไรก็ตาม วิธีมาตรฐานในการตรวจสอบเอาต์พุตของ cronjob คือเปลี่ยนเส้นทางเอาต์พุตเทอร์มินัลไปยังไฟล์ซึ่งคุณสามารถดูได้ในภายหลัง
ตัวอย่างเช่น เพื่อเปลี่ยนทิศทางเอาต์พุตของเทอร์มินัลไปยังไฟล์ /home/youssif/helloworld.log
คุณจะใช้บรรทัดต่อไปนี้ในไฟล์ crontab ของคุณ:
0 0 * * echo "สวัสดีชาวโลก" > /home/youssif/helloworld.log
หรือคุณยังสามารถใช้ ที
คำสั่งเพื่อเปลี่ยนเส้นทางเอาต์พุตดังนี้:
0 0 * * echo "สวัสดีชาวโลก" | ที /home/youssif/helloworld.log
ในที่สุดคุณสามารถใช้ แมว
คำสั่งเพื่อดูเนื้อหาของไฟล์:
แมว /home/youssif/helloworld.log
ด้วยวิธีนี้ คำสั่งสามารถทำงานในพื้นหลัง แต่คุณยังคงสามารถตรวจสอบเอาต์พุตได้
หากต้องการปิด/เปิดใช้งานงานตามผลลัพธ์ของงานที่รันไปแล้วฉันคิดว่านี่จะเหมาะสมกว่าสำหรับคำถามแยกต่างหาก ฉันเชื่อว่าคำตอบของคุณจะเกี่ยวข้องกับการใช้คำสั่ง "ถ้าเป็นอย่างอื่น" ในสคริปต์ทุบตี
แก้ไข:
เนื่องจาก @Tcooper ชี้ให้เห็นเราต้องเพิ่ม 2>&1
เพื่อเปลี่ยนเส้นทางเอาต์พุตทั้งหมด รวมถึงข้อความแสดงข้อผิดพลาด ดังนั้นคุณอาจต้องการใช้สิ่งนี้แทน:
0 0 * * echo "สวัสดีชาวโลก" 2>&1 > /home/youssif/helloworld.log
หรือ
0 0 * * echo "สวัสดีชาวโลก" 2>&1 | ที /home/youssif/helloworld.log