Làm thế nào để thực thi lệnh cứ sau 10 giây (không có cron)?


36

Khi tôi thực thi crontôi gặp lỗi này

cron: không thể mở hoặc tạo /var/run/crond.pid: Quyền bị từ chối

Vì vậy, làm thế nào để làm điều đó mà không có cron?

PS Tôi muốn kiểm tra xem tập tin trong svn có thay đổi không và tôi có tập lệnh đặc biệt cho nó không.


Nếu bạn không có quyền, hãy thử chạy cron với sudo.
Ẩn danh

4
Hãy nhớ rằng cron sẽ không làm điều gì đó cứ sau 10 giây, chi tiết nhất mà nó nhận được là một lần một phút.
Caesium

Nếu bạn muốn tạo cronjobs, bạn phải chạy crontab -eđể khởi động trình chỉnh sửa. Để liệt kê các crons hiện tại, hãy chạycrontab -l
Lekensteyn

@ Đồng nghĩa tôi không biết mật khẩu root, vì vậy sudo sẽ không giúp tôi.
UAd CHƯƠNG

Câu trả lời:


59

Để truy cập croncấu hình cá nhân của bạn, bạn nên sử dụng lệnh crontab -e(để chỉnh sửa bảng cron của bạn).

Thay thế là watchlệnh:

watch -n10 command args

Cuối cùng, để giám sát các sự kiện hệ thống tập tin hiệu quả hơn, bạn có thể sử dụng inotifywait, từ inotify-toolsgói.


1
Điều đáng chú ý, có lẽ, bạn nên bọc (các) lệnh của mình bên trong dấu ngoặc kép hoặc bạn có thể kết thúc với kết quả không mong muốn. watch -n<timeout> "command(s) arg(s)"thíchwatch -n2 "ps ux | grep ss5"
Achilles

Tôi thấy thật khó để watchchấp nhận các lệnh dài, phức tạp bằng cách sử dụng các đường ống và dấu ngoặc kép. Vòng lặp while bên dưới hoạt động, nhưng tất nhiên người ta phải luôn ngủ trước để tránh những cuộc chạy trốn.
rjurney

@rjurney: nó là đủ để bọc toàn bộ lệnh trong dấu ngoặc kép, đơn hoặc tốt hơn gấp đôi:watch -n10 "ls -l | grep $foo"
enzotib

@enzotib Vấn đề xảy ra khi có dấu ngoặc kép trong các lệnh, vì trích dẫn trong dấu ngoặc kép trong (thần giúp tôi) trích dẫn cách tiếp cận không thể trong bash. Về lý thuyết thì điều đó là có thể nhưng tôi hiếm khi đạt được các trích dẫn lồng nhau trong bash mà không từ bỏ và đi một con đường khác.
rjurney

32

Bạn có thể viết một kịch bản shell có sleeptrong một vòng lặp while.

#!/bin/sh
while [ true ]
do
    sh special_svn_script.sh
    sleep 10
done

5
while truekhông yêu cầu phanh vuông, nếu không thì "true" được hiểu là một chuỗi và mọi chuỗi đều tốt như "true".
enzotib

1
@enzotib vì vậy bạn cũng có thể viết trong khi xung quanh
Eduard Florinescu

Mặc dù điều này hoạt động, bạn phải luôn ngủ trước vì có thể xảy ra việc không thể đạt được bước ngủ, trong trường hợp đó, bạn đã có một cuộc trốn chạy tràn ngập thứ gì đó.
rjurney

4

gnome-calendar (nhấp vào nút đểInstall now!sử dụng Trung tâm phần mềm của bạn)
là giao diện người dùng đồ họa tận dụng sức mạnh của vixie-cron, dcron và tại để quản lý tệp crontab của bạn và cung cấp một cách dễ dàng để lên lịch các tác vụ trên máy tính của bạn. Nó hỗ trợ các nhiệm vụ và nhiệm vụ định kỳ (định kỳ) chỉ xảy ra một lần trong tương lai. Nó được viết bằng Python bằng pygtk.

Các tính năng tuyệt vời

  • Hỗ trợ các tiêu đề và biểu tượng tùy chỉnh cho các nhiệm vụ của bạn để chúng dễ dàng theo dõi hơn
  • Các mẫu hỗ trợ để bạn sẽ không phải tạo cùng một nhiệm vụ nhiều lần; những thứ này được lưu trong gconf và có thể dễ dàng gửi chúng cùng với một bản phân phối Linux
  • Nếu chạy dưới quyền root, bạn có thể chỉnh sửa bất kỳ tác vụ crontab và "at" nào của người dùng.
  • Các chuỗi có thể đọc được của con người như "Mỗi giờ" thay vì "0 * * * *"
  • Chế độ nâng cao cho các chuyên gia crontab
  • Cung cấp một "applet panel" nơi bạn có thể quản lý các tác vụ từ menu thả xuống
  • Các biểu thức phổ biến được xác định trước như: mỗi phút, mỗi tuần, ngày mai, tuần tới Lịch cho phép bạn chọn ngày bạn muốn thực hiện một tác vụ
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.