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.