Cron.hourly จะไม่ทำงาน


54

ตกลงดังนั้นฉันได้สร้างสคริปต์ของฉันฉันทิ้งไว้ใน/etc/cron.hourlyนั้นฉันchmod 777ไฟล์ แต่มันจะไม่ทำงาน (โดยอัตโนมัติ) ถ้าฉันรันด้วยตนเองมันก็ใช้ได้ดี ฉันต้องทำอะไรอีกหรือไม่


คำตอบนี้ไม่ควรได้รับการอัปโหลดจำนวนมากที่ไม่มีชื่อไฟล์และเนื้อหา
— ผู้ใช้ไม่ทราบ

คำตอบ:


13

ทำไมไม่ใช้ crontab (/ etc / crontab) และใช้ * / 1 ในฟิลด์ชั่วโมง ฉันใช้สิ่งนี้เพื่อเรียกใช้สคริปต์ทุก 5 นาทีและทำงานได้ดี:

# m h dom mon dow user  command
* */1  * * *   user    command

6
การใช้งานcron.dailyและเพื่อน ๆ จะทำงานได้ดีขึ้นเล็กน้อยหากเครื่องไม่ทำงานตลอดเวลาเพราะ anacron พยายามประมาณตารางเวลาที่ถูกต้องในขณะที่ cron ธรรมดาจะไม่ทำงานหากเครื่องไม่ทำงานตลอดทั้งคืน สำหรับงานประจำชั่วโมงนี้อาจไม่สำคัญมากนัก
— poolie

9
ฉันขอขอบคุณคำตอบต่อไปนี้เพราะมันแก้ไขปัญหากับ cron.hourly แทนที่จะหาวิธีแก้ปัญหา
— tishma

4
นี่ไม่ใช่คำตอบสำหรับคำถาม
— josh123a123

@poolie ที่สามารถเห็นได้ใน/etc/crontab : cron.daily, cron.weeklyและcron.monthly ทำงานกับ anacron (ถ้ามี) run-parts --report /etc/cron.hourlyแต่รายชั่วโมง
— Pablo A

144

รายการcron.hourlyจะดำเนินการโดยกลไกการทำงานของชิ้นส่วน ( man run-partsสำหรับข้อมูลเพิ่มเติม) และเลือกrun-partsได้ว่าชื่อไฟล์ใดที่ถือว่าใช้ได้

ตัวอย่างเช่นการให้สคริปต์ส่วนขยายของคุณจะทำให้มันไม่ถูกต้องและส่งผลให้งานไม่ได้ทำงาน [a-zA-Z0-9_-]เป็นอักขระที่ถูกต้องดังนั้น '.' ทำให้มันไม่ถูกต้อง

เมื่อเพิ่มงานลงใน/etc/cron.hourly(หรือ.daily, .weeklyฯลฯ ) ให้ทดสอบในภายหลังเสมอว่าrun-partsจะรันโดยการออกคำสั่ง:

run-parts --test /etc/cron.hourly

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

สคริปต์ของคุณชื่ออะไร


มีอยู่สองอย่าง: cerebro_random_response.sh และ Cerebro Temperature.sh ไม่ดีเหรอ?
— Switchkick

21
ถูกต้องไม่ดี :) [a-zA-Z0-9_-] เป็นอักขระที่ถูกต้องดังนั้น '.' ทำให้มันไม่ถูกต้อง นี่คือสิ่งที่ฉันหมายถึงข้างต้นโดย 'ให้สคริปต์ของคุณส่วนขยายจะทำให้มันไม่ถูกต้อง'
— DaithiF

11
oMG สิ่งนี้ช่วยลดอาการปวดหัวได้อย่างมาก ขอขอบคุณ! giving your script an extension will make it invalid and result in the job not being run
— Jonathan S. Fisher

คุณอาจใช้--reportเพื่อเรียกใช้สคริปต์จริง
— Pablo A

5

ปัญหาของคุณอาจเป็นไปตามการอนุญาตที่เปิดมากเกินไปซึ่งอนุญาตให้ใครก็ตามแก้ไขไฟล์ของคุณได้ ลอง755แทน

การดูรายการ cron ในเอาต์พุต syslog ของคุณควรยืนยันสิ่งนี้


4

คำตอบของ DaithiF ควรเป็นคำตอบที่ถูก

นอกจากนี้สคริปต์ของฉันไม่ได้#!/bin/bashอยู่ในบรรทัดแรก แม้ว่าสคริปต์จะสามารถดำเนินการกับบรรทัดคำสั่งได้ แต่run-partsก็ปฏิเสธว่า "ข้อผิดพลาดการจัดรูปแบบ Exec"

การเปลี่ยนชื่อไฟล์จากscriptname.shเป็นscriptnameและเพิ่ม#!/bin/bashเข้าไปในบรรทัดแรกทำให้สคริปต์ของฉันทำงานทุกชั่วโมง


-1

เมื่อคุณวิ่ง

crontab -l

งานนี้อยู่ในรายการหรือไม่

ถ้าไม่เพิ่ม

crontab -e

เพิ่มบรรทัดนี้

0 * * * * yourScript

หากอยู่ในรายการนี้ให้ลองเพิ่มเส้นทางของภาษาโปรแกรมไปยังด้านบนของสคริปต์ของคุณ

ตัวอย่าง:

bash: #!/bin/bash

2 สิ่งนี้แก้ไขปัญหาของฉันได้เสมอ :)


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