Làm thế nào để thiết lập một công việc cron để chạy một tệp thực thi mỗi giờ?


94

Tôi cần thiết lập một công việc cron chạy một tệp thực thi được biên dịch bằng gcc mỗi giờ một lần.

Tôi đã đăng nhập với quyền root và gõ crontab -e

Sau đó, tôi nhập thông tin sau và lưu tệp.

0 * * * *  /path_to_executable

Tuy nhiên, công việc cron không hoạt động.

Tôi thấy rằng khi tôi nhập, /...path_to_executabletôi gặp lỗi phân đoạn. Tôi chỉ có thể thực thi tệp thực thi từ thư mục chứa tệp đó. Có cách nào tôi có thể giải quyết vấn đề này không?


8
Đó là một tiêu đề tồi. Bạn biết cách thiết lập cron job; điều bạn muốn biết là làm thế nào để lệnh hoạt động.
David Thornley

5
thuộc về superuser.com (không liên quan trực tiếp đến lập trình)
Philipp

3
Tiêu đề sai, nhưng đây là cách tôi tìm ra giải pháp.
Roman Holzner

Tập tin thực thi của bạn có thể đã bắt đầu. Tôi khuyên bạn nên sử dụng syslog (3) bên trong nó (và ít nhất hãy tạo một thông báo nhật ký khi bắt đầu, để đảm bảo rằng nó được khởi động).
Basile Starynkevitch

Câu trả lời:


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

sẽ hoạt động trừ khi có thứ gì khác cần được thiết lập để chương trình chạy.


11
sử dụng && thay vì;, nếu không interessting thứ có thể xảy ra (đặc biệt là khi sử dụng với rm)
Reactormonk

4
Bạn đúng. && sẽ tốt hơn nhiều nếu có khả năng mục tiêu cd không tồn tại (ví dụ: nếu kho lưu trữ trên máy chủ NFS xảy ra sự cố).
tham gia

Hãy cứu lấy ngày của tôi! Cảm ơn!
Chiakie

Lưu ý rằng bạn cũng cần một đường dẫn tuyệt đối (tức là từ thư mục gốc) afaik
drevicko

8

Giải pháp để giải quyết vấn đề này là tìm hiểu lý do tại sao bạn gặp lỗi phân đoạn và sửa lỗi đó.


5

Bạn cũng có thể sử dụng @hourlytức thì của0 * * * *


tò mò với giải pháp này nó chạy ở phút thứ bao nhiêu @hourly ngụ ý ở 0?
ojblass

1
@ojblass @hourlylà một từ đồng nghĩa chính xác của 0 * * * *, không có sự khác biệt.
Marek Skiba

2

Ý của bạn là tệp thực thi không thể chạy, nếu được gọi từ bất kỳ thư mục nào khác? Đây là một lỗi trên tệp thực thi. Một lý do tiềm năng có thể là tệp thực thi yêu cầu một số thủ thư được chia sẻ từ thư mục đã cài đặt. Bạn có thể kiểm tra biến môi trườngLD_LIBRARY_PATH


2

Nếu bạn đang sử dụng Ubuntu, bạn có thể đặt một kịch bản shell trong một trong các thư mục này: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthlyhoặc /etc/cron.weekly.

Để biết thêm chi tiết, hãy xem bài đăng này: /ubuntu/2368/how-do-i-set-up-a-cron-job


0

Vì tôi không thể chạy Ctệp thực thi theo cách đó, nên tôi đã viết một đơn giản shell scriptnhư sau

cd /..path_to_shell_script
./c_executable_name

Trong danh sách công việc cron, tôi gọi là shell script.


0

sử dụng

path_to_exe >> log_file

để xem kết quả đầu ra của lệnh của bạn cũng như các lỗi có thể được chuyển hướng với

path_to_exe &> log_file

bạn cũng có thể sử dụng

crontab -l

để kiểm tra xem các chỉnh sửa của bạn đã được lưu hay chưa.


crontab -l hiển thị công việc cron khi tôi đăng nhập với tư cách là người chủ. Tôi đã thử log_file nhưng nó trống.
Anonymous
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.