Tôi có một công việc chạy mãi mãi ngay khi nó bắt đầu. Vì vậy, tôi muốn khởi động nó chỉ một lần sau khi nhập nó vào tập tin "crontab -e" và lưu nó (hoặc) bất cứ khi nào khởi động lại.
Làm thế nào để đạt được điều này?
Tôi có một công việc chạy mãi mãi ngay khi nó bắt đầu. Vì vậy, tôi muốn khởi động nó chỉ một lần sau khi nhập nó vào tập tin "crontab -e" và lưu nó (hoặc) bất cứ khi nào khởi động lại.
Làm thế nào để đạt được điều này?
Câu trả lời:
Nếu bạn muốn một lệnh chạy một lần vào một ngày sau đó, hãy sử dụng at
lệnh.
Nếu bạn muốn một lệnh được chạy một lần khi khởi động hệ thống, giải pháp chính xác là sử dụng một trong hai:
@reboot
tiền tố đặc biệt (xem trang chủ)Cái sau là tùy chọn duy nhất cho người dùng không root.
at now
@reboot
.
Bạn có thể sử dụng tại (1) để điều hành công việc tại một thời điểm nào đó trong tương lai. Tuy nhiên, nếu bạn muốn chạy một cái gì đó khi khởi động và nó sẽ tự chạy, có lẽ bạn muốn một mục trong /etc/init.d/ cho nó? Điều đó sẽ cho phép bạn bắt đầu nó khi khởi động.
kill
(giả sử bạn đã có quyền để làm như vậy, điều mà bạn làm cho các quy trình của riêng bạn). Làm một init script thực sự dễ dàng. Tìm kiếm /etc/init.d/
một tập lệnh không dài và mô hình hóa tập lệnh của bạn sau tập lệnh đó hoặc google cho making init scripts (your distribution)
.
/etc/init.d/skeleton
trên openSuSE) mà bạn có thể điều chỉnh để sử dụng.
Một công việc chỉ chạy một lần và chạy mãi cho đến khi bạn bảo nó chết được gọi là "daemon". Chúng thường được bắt đầu thông qua các tập lệnh init trong /etc/init.d/.
Nếu công việc của bạn kết thúc tại một số thời điểm và có thể được coi là một loại công việc một lần, thì bạn có thể muốn xem lệnh tại. Chẳng hạn, nếu tôi muốn chạy lệnh find lúc 10 giờ tối nay và chỉ điều này một lần tôi sẽ làm:
$ at 10PM
at> find /root > /root/find_results.list
at> <EOT>
job 3 at 2010-02-10 22:00
Có một cái nhìn vào lệnh