Thứ nhất, một sự làm rõ là theo thứ tự:
- init.d là thư mục lưu trữ các tập lệnh kiểm soát dịch vụ, nó kiểm soát việc bắt đầu và dừng các dịch vụ như
httpd
hoặccron
- RC.local là một dịch vụ cho phép chạy các tập lệnh tùy ý như là một phần của quy trình khởi động hệ thống
Về việc sử dụng rc.local
hay cron
chạy kịch bản của bạn tốt hơn , tôi nghi ngờ rằng đó là một câu hỏi về tính thẩm mỹ nhiều hơn là tính thực tế. cron
, như một bộ lập lịch tác vụ, được dùng như một phương pháp để thực hiện bảo trì hoặc bảo trì máy, chẳng hạn như kiểm tra cập nhật, làm sạch bộ nhớ cache hoặc thực hiện kiểm tra bảo mật. Điều này không có nghĩa là nó bị giới hạn trong việc thực hiện các chức năng đó, vì nó có thể chạy bất kỳ tập lệnh hoặc lệnh nào mong muốn tại thời điểm được chỉ định (chẳng hạn như @reboot
).
rc.local
Mặt khác, việc sử dụng sẽ thuộc nhiều loại nhiệm vụ cấu hình hệ thống, do rc.local
, được thực thi bởi hệ thống init của máy, thường chịu trách nhiệm thiết lập cấu hình, dịch vụ hoặc môi trường của máy (nhưng một lần nữa, không giới hạn chỉ nhiệm vụ này).
Tuy nhiên, cả hai điểm này đều cần được giảm bớt bởi thực tế là không phải tất cả các hệ thống init đều cung cấp một rc.local
cơ chế và không phải tất cả các trình nền cron đều cung cấp @reboot
thẻ psuedo.
Điểm thưởng
Như đã đề cập, init.d
là thư mục chứa các tập lệnh kiểm soát các dịch vụ có thể được khởi động hoặc dừng trên hệ thống của bạn (ít nhất là trên các máy sử dụng SysV
hệ thống init type). Tùy thuộc vào hệ thống init của bạn và mục đích của tập lệnh của bạn, có thể hợp lý để chuyển tập lệnh của bạn thành tập lệnh init để được chạy theo cách tương tự như một dịch vụ. Tuy nhiên, điều này phụ thuộc rất nhiều vào hệ thống init của bạn vì khung xung quanh cách các tệp này được xây dựng có thể khác nhau rất nhiều.
Tư cuôi cung
Cũng cần lưu ý rằng thông thường các tập lệnh bash kết thúc bằng một hậu tố .sh
thay vì .txt
, vì điều này ngay lập tức biểu thị tệp là tập lệnh shell thay vì tập tin văn bản. Điều đó đang được nói, miễn là nó có một shebang ( #!/bin/bash
) ở đầu tệp, hoặc được gọi là bash /path/to/script.whatever
, điều đó không quan trọng trong việc thực thi tập lệnh.