วิธีการตั้งค่า cron job เพื่อเรียกใช้งานปฏิบัติการทุกชั่วโมง?


95

ฉันต้องการตั้งค่างาน cron ที่เรียกใช้ไฟล์ปฏิบัติการที่คอมไพล์โดยใช้ gcc ทุกๆชั่วโมง

ฉันล็อกอินด้วยรูทและพิมพ์ crontab -e

จากนั้นฉันป้อนข้อมูลต่อไปนี้และบันทึกไฟล์

0 * * * *  /path_to_executable

อย่างไรก็ตามงาน cron ไม่ทำงาน

ฉันเห็นว่าเมื่อฉันพิมพ์/...path_to_executableฉันได้รับข้อผิดพลาดในการแบ่งกลุ่ม ฉันสามารถเรียกใช้งานไฟล์ปฏิบัติการได้จากโฟลเดอร์ที่อยู่ในโฟลเดอร์เท่านั้นมีวิธีใดบ้างที่ฉันสามารถแก้ปัญหานี้ได้


8
นั่นเป็นชื่อที่ไม่ดี คุณรู้วิธีตั้งค่างาน cron สิ่งที่คุณอยากรู้คือทำอย่างไรให้คำสั่งทำงาน
David Thornley

5
เป็นของ superuser.com (ไม่เกี่ยวข้องโดยตรงกับการเขียนโปรแกรม)
Philipp

3
ชื่อผิด แต่นี่คือวิธีที่ฉันพบวิธีแก้ปัญหา
Roman Holzner

ไฟล์ปฏิบัติการของคุณอาจเริ่มทำงานแล้ว ฉันแนะนำให้ใช้syslog (3)ข้างใน (และอย่างน้อยก็สร้างข้อความบันทึกเมื่อเริ่มต้นเพื่อให้แน่ใจว่าได้เริ่มต้นแล้ว)
Basile Starynkevitch

คำตอบ:


162
0 * * * * cd folder_containing_exe && ./exe_name

ควรใช้งานได้เว้นแต่จะมีอย่างอื่นที่ต้องตั้งค่าเพื่อให้โปรแกรมทำงาน


11
ใช้ && แทน; มิฉะนั้นสิ่งที่สร้างขึ้นระหว่างกันอาจเกิดขึ้นได้ (โดยเฉพาะเมื่อใช้กับ rm)
Reactormonk

4
คุณถูก. && จะดีกว่ามากหากมีโอกาสที่เป้าหมาย cd ​​จะไม่มีอยู่ (ตัวอย่างเช่นถ้า Diretory อยู่บนเซิร์ฟเวอร์ NFS ที่เกิดขัดข้อง)
โจสต์

บันทึกวันของฉัน! ขอบคุณ!
Chiakie

โปรดทราบว่าคุณต้องมีเส้นทางสัมบูรณ์ (เช่นจากไดเรกทอรีราก) afaik
drevicko


5

คุณยังสามารถใช้@hourlyทันทีของไฟล์0 * * * *


อยากรู้กับวิธีแก้ปัญหานี้ว่านาทีไหนที่ @hourly บอกเป็น 0?
ojblass

1
@ojblass @hourlyเป็นคำพ้องความหมายที่แน่นอน0 * * * *ไม่มีความแตกต่าง
Marek Skiba

2

คุณหมายถึงว่าไฟล์ปฏิบัติการล้มเหลวในการรันหากถูกเรียกใช้จากไดเร็กทอรีอื่น? นี่เป็นข้อบกพร่องในการปฏิบัติการ สาเหตุหนึ่งที่เป็นไปได้อาจเป็นเพราะไฟล์ปฏิบัติการต้องการไลบรารี่ที่แชร์จากโฟลเดอร์ที่ติดตั้ง คุณสามารถตรวจสอบตัวแปรสภาพแวดล้อมLD_LIBRARY_PATH



0

เนื่องจากฉันไม่สามารถเรียกใช้Cไฟล์ปฏิบัติการได้ด้วยวิธีนี้ฉันจึงเขียนคำง่ายๆshell scriptที่ทำสิ่งต่อไปนี้

cd /..path_to_shell_script
./c_executable_name

ในรายการงาน cron ฉันเรียกเชลล์สคริปต์


0

ใช้

path_to_exe >> log_file

เพื่อดูผลลัพธ์ของคำสั่งของคุณนอกจากนี้ยังสามารถเปลี่ยนเส้นทางข้อผิดพลาดด้วย

path_to_exe &> log_file

คุณยังสามารถใช้

crontab -l

เพื่อตรวจสอบว่าการแก้ไขของคุณถูกบันทึกไว้หรือไม่


crontab -l แสดงงาน cron เมื่อฉันล็อกอินด้วย root ฉันลอง log_file แต่ว่างเปล่า
ไม่ระบุชื่อ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.