Cron.hourly sẽ không chạy


54

Ok, vậy là tôi đã tạo tập lệnh của mình, tôi đã bỏ tập tin vào /etc/cron.hourlyrồi chmod 777tập tin nhưng nó sẽ không chạy (tự động). Nếu tôi tự chạy nó, nó hoạt động tốt. Tôi có cần phải làm gì khác không?


Câu trả lời này không nên nhận được rằng nhiều upvote mà không có tên của tệp và nội dung.
người dùng không xác định

Câu trả lời:


13

Tại sao không sử dụng crontab (/ etc / crontab) và sử dụng * / 1 trong trường giờ. Tôi đã sử dụng điều này để chạy một kịch bản cứ sau 5 phút và nó hoạt động tốt:

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

6
Sử dụng cron.dailyvà bạn bè hoạt động tốt hơn một chút nếu máy không chạy liên tục, vì anacron cố gắng sắp xếp đúng lịch trình trong khi cron đơn giản sẽ không chạy chúng nếu máy không hoạt động cả đêm. Đối với công việc hàng giờ, điều này có lẽ không quan trọng lắm.
poolie

9
Tôi thực sự đánh giá cao câu trả lời tiếp theo, vì nó giải quyết vấn đề với cron.hourly, thay vì tìm cách giải quyết.
tishma

4
Đây không phải là một câu trả lời cho câu hỏi
josh123a123

@poolie Như có thể thấy trên/etc/crontab : cron.daily, cron.weeklycron.monthly chạy với anacron (nếu có) nhưng hàng giờ run-parts --report /etc/cron.hourly.
Pablo A

144

Các mục trong cron.hourlyđược chạy theo cơ chế bộ phận chạy ( man run-partsđể biết thêm thông tin). Và run-partsrất kén chọn về những tên tập tin mà nó cho là hợp lệ.

Ví dụ: cung cấp cho tập lệnh của bạn một phần mở rộng sẽ làm cho nó không hợp lệ và dẫn đến công việc không được chạy. [a-zA-Z0-9_-]là các ký tự hợp lệ, vì vậy '.' làm cho nó không hợp lệ

Khi thêm một công việc vào /etc/cron.hourly(hoặc .daily, .weeklyv.v.), luôn luôn kiểm tra sau đó run-partssẽ thực sự chạy nó bằng cách ban hành lệnh:

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

Nếu bằng cách chạy lệnh này, nó hiển thị tệp của bạn, nó có nghĩa là nó đã hoạt động. Mặt khác, nếu không hiển thị bất cứ điều gì tên tệp của bạn không hợp lệ.

Tên của kịch bản của bạn là gì?


Có hai: cerebro_random_response.sh và Cerebro Nhiệt độ.sh không tốt?
Switchkick

21
đúng, không tốt :) [a-zA-Z0-9_-] là các ký tự hợp lệ, vì vậy '.' làm cho nó không hợp lệ Đây là những gì tôi muốn nói ở trên bằng cách 'cung cấp cho tập lệnh của bạn một phần mở rộng sẽ làm cho nó không hợp lệ'
DaithiF

11
oMG, Điều này chỉ cứu một cơn đau đầu rất lớn. CẢM ƠN BẠN! giving your script an extension will make it invalid and result in the job not being run
Jonathan S. Fisher

Bạn cũng có thể sử dụng --reportđể thực sự chạy các kịch bản.
Pablo A

5

Vấn đề của bạn có lẽ là do các quyền mở quá mức, cho phép mọi người chỉnh sửa tệp của bạn. Hãy thử 755thay thế.

Nhìn vào các mục cron trong đầu ra nhật ký hệ thống của bạn sẽ xác nhận điều này.


4

Câu trả lời của DaithiF phải là câu trả lời đúng.

Ngoài ra, kịch bản của tôi không có #!/bin/bashtrong dòng đầu tiên. Mặc dù tập lệnh có thể được thực thi bằng dòng lệnh, run-partstừ chối nó nói "Lỗi định dạng Exec".

Thay đổi tên tệp từ scriptname.shthành scriptnamevà thêm #!/bin/bashdòng đầu tiên cho phép tập lệnh của tôi chạy hàng giờ.


-1

Khi bạn chạy

crontab -l

nhiệm vụ này có trong danh sách không?

nếu không, thêm nó

crontab -e

thêm dòng này

0 * * * * yourScript

nếu nó nằm trong danh sách này, hãy thử thêm đường dẫn ngôn ngữ lập trình vào đầu tập lệnh của bạn

Thí dụ:

bash: #!/bin/bash

2 điều này luôn giải quyết vấn đề của tôi :)


Hoàn thành tất cả và kịch bản là tốt, nó hoạt động như một nét duyên dáng. Nó cũng nằm trong danh sách crontab nhưng không có nhiệm vụ hàng giờ chạy. Dù sao cũng cảm ơn :(
Switchkick
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.