làm cho lệnh chạy một lần mỗi giờ


12

Tôi có một bộ chỉ mục cho nhân sư và tôi muốn nó chạy một lần mỗi giờ trong linux. Làm thế nào tôi sẽ làm điều này?

linux 

Câu trả lời:


14

Vì mọi người khác đang đăng câu trả lời ngắn, tôi nghĩ rằng tôi nên mô tả thêm một chút ...

cron là một trình nền được tìm thấy trên hầu hết các hệ thống * nix chạy các lệnh được lên lịch tại các khoảng thời gian được chỉ định.

Bạn thêm một tập lệnh vào danh sách bằng cách sao chép nó vào thư mục bạn chọn:

  • cron.d Daily
  • cron.hourly
  • cron.monthly
  • cron.weekly

Các thư mục này thường được tìm thấy trong /etcthư mục.


2
thư mục cron. * là rất nhiều distro cụ thể. crontab là cách phổ biến để có các vật phẩm chạy bằng cron theo các khoảng thời gian xác định.
MDMarra

Thật. Tôi chỉ đưa ra một ví dụ. crontab cho phép bạn kiểm soát nhiều hơn nữa.
Nathan Osman


7

Chỉ để khác biệt -

tùy thuộc vào nhu cầu của bạn, bạn có thể sử dụng lệnh xem.

  watch --interval=3600 command

1
Điều này có chạy lệnh mỗi 1 giờ; hoặc nó chạy lệnh, đợi 1h, rồi chạy lại? Lưu ý rằng nó làm cho một sự khác biệt tốt nếu lệnh mất rất nhiều thời gian. (Tôi hỏi vì nó không rõ ràng từ trang người đàn ông.)
Malabarba

Thực sự không khó để tự mình thử nó.
mimoralea


2

bạn sẽ chỉnh sửa tệp cron bằng cách nhập lệnh crontab -e

đưa bạn vào trình soạn thảo 'vi' (đối với Linux và FreeBSD hiện tại).

sau đó nhập thông tin sau: (nhập 'i' để chèn)

00 * * * * /path/to/sphinx_indexer.exe

sau đó lưu và thoát (nhấn 'esc' rồi gõ như sau)

:wq



1

Nếu bạn chỉ cần một lần trong một thời gian, không vĩnh viễn như bạn nhận được cronwatchgiải pháp không đủ linh hoạt, bạn cũng có thể sử dụng tập lệnh bash cũ tốt:

while true; do
   # do stuff
   sleep $[60 * 60]
done

Điều này sẽ không hoạt động như #do Stuff nếu phải mất 3599 giây để thực thi và sau đó theo yêu cầu, tập lệnh phải kích hoạt giây tiếp theo trên các phường và đặt lại đồng hồ về 0 nhưng trong trường hợp này, nó sẽ tạm dừng ở 3599 giây và sau đó tiến hành ngủ trong 3600 giây tiếp theo. Sẽ không có sự chồng chéo nhưng khoảng cách bất ngờ giữa các lần lặp. Ở đây tôi đoán người dùng đang cố gắng thực hiện một công việc mỗi giờ mà không cần cron.
mannoj

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.