Làm thế nào tôi có thể làm cho cron chạy một công việc ngay bây giờ, để thử nghiệm / gỡ lỗi? mà không thay đổi lịch trình!


134

Tôi có một công việc định kỳ được lên lịch để chạy hàng ngày, ngoài việc thay đổi lịch trình, có cách nào khác để thực hiện chạy thử lệnh ngay bây giờ để xem nó có hoạt động như dự định không?


Tôi không hiểu câu hỏi của bạn? Tại sao không chỉ đơn giản là chạy lệnh?
favadi

21
Tôi biết lệnh hoạt động khi nhập nó vào shell (shell của tôi), nhưng tôi muốn biết nếu nó hoạt động khi cronchạy nó, nó có thể bị ảnh hưởng bởi ENV hoặc các công cụ cụ thể của shell ( ~mở rộng) hoặc quyền sở hữu và công cụ cấp phép hoặc ...
Ali

2
Vậy tại sao không tạo công việc cron mới chạy mỗi phút với cùng một lệnh?
favadi

13
Đây chính xác là những gì tôi đã làm, nhưng tôi tự hỏi liệu có cách nào để nói với bạn rằng bạn muốn chạy thử công việc số 7 không! Chắc chắn những người khác đã có vấn đề / yêu cầu / mong muốn này trước đây!
Ali

4
Rất muộn để cảnh ở đây thông qua google nhưng có tất cả mọi thứ sai về câu trả lời của favadi. Rõ ràng là anh ta muốn kiểm tra nó từ cron và không chỉnh sửa crontab cụ thể để làm điều đó. TUYỆT VỜI tệ hơn ai đó nói với bạn những gì bạn muốn là sai khi họ không cố gắng hiểu trường hợp sử dụng.
HörmannHH

Câu trả lời:


32

Theo như tôi biết thì không có cách nào để trực tiếp làm điều đó vì cron có một mục đích đặc biệt - chạy các lệnh lập lịch tại một thời điểm cụ thể. Vì vậy, điều tốt nhất là hoặc tự tạo một mục crontab hoặc viết một tập lệnh loại bỏ và đặt lại môi trường.


57

Bạn có thể buộc crontab chạy bằng lệnh sau:

run-parts /etc/cron.daily

9
... với giả định rằng công việc định kỳ của OP (được hỏi 3 năm trước) nằm trong cron.d Daily trái ngược với một crontab cá nhân.
Jeff Schaller

18
Tuy nhiên, điều này không mô phỏng hoàn toàn môi trường của người dùng cron, vì vậy rất có khả năng bạn vẫn sẽ gặp lỗi vì một khi bạn chạy tập lệnh của mình như một công việc cron thực tế thì PATH của bạn và các envv khác có thể khác với người dùng bạn đã run-parts /etc/cron.dailylàm. Tôi đang chiến đấu với lỗi này ngay bây giờ, vì tập lệnh của tôi sẽ chạy tốt run-partsnhưng không thành công khi thực sự chạy dưới người dùng cron.
ArtHare

42

Bạn có thể mô phỏng môi trường người dùng cron như được giải thích trong "Chạy một công việc định kỳ bằng tay và ngay lập tức" . Điều này sẽ cho phép bạn kiểm tra công việc khi nó được chạy với tư cách là người dùng cron.


Trích từ liên kết:


Bước 1 : Tôi tạm thời đặt dòng này vào crontab của người dùng:

* * * * *   /usr/bin/env > /home/username/tmp/cron-env

sau đó lấy nó ra khi tập tin được viết

Bước 2 : Tạo cho mình một tập lệnh bash run-as-cron nhỏ chứa:

#!/bin/bash
/usr/bin/env -i $(cat /home/username/tmp/cron-env) "$@"

Vì vậy, như người dùng trong câu hỏi, tôi đã có thể

run-as-cron /the/problematic/script --with arguments --and parameters

Thủ thuật hữu ích. Tất nhiên, điều đó sẽ không hữu ích nếu bạn có dấu phần trăm trong lệnh của mình.
bản6
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.