Lấy tập lệnh để chạy khi khởi động, không phải đăng nhập


11

Làm cách nào tôi có thể có được một tập lệnh cụ thể để chạy (tốt nhất không phải là siêu người dùng) bất cứ khi nào máy khởi động, nhưng trước khi đăng nhập. Nó có thể là điều cuối cùng để chạy khi khởi động. Tôi hầu như chỉ muốn tập lệnh hoạt động ngay cả khi không có người dùng đăng nhập.


1
@bruce hãy xem cái này -> Askubfox.com/questions/9382/NH
hhlp

1
Bạn có thể sử dụng upstart hoặc cron hoặc có thể là một loạt các phương pháp khác. Một điều quan trọng cần biết là nó có thể chạy sớm như thế nào . Ví dụ, nó cần một hệ thống tập tin cụ thể để được gắn kết, nó có cần X để chạy không, nó có cần DBus không, nó có cần kết nối mạng hay nói chung: nó có cần bất kỳ tài nguyên nào không?
JanC

@JanC: Vâng thực sự, nó cần tất cả mọi thứ bạn yêu cầu (ngoại trừ X), đó là lý do tại sao tôi muốn nó là điều cuối cùng được chạy. Thực sự không có lý do để chạy nó sớm hơn.
Malabarba

@hhlp: Tuyệt, cảm ơn. Nhưng kịch bản sẽ chạy sớm như thế nào nếu tôi sử dụng phương pháp đó? Như tôi đã đề cập ở trên, tốt nhất nếu đó là một trong những điều cuối cùng (trước khi đăng nhập).
Malabarba

Chà, đăng nhập không yêu cầu kết nối mạng, trừ khi bạn muốn đăng nhập vào máy chủ đầu cuối và / hoặc bạn có $ HOME trên mạng chia sẻ ... ;-)
JanC

Câu trả lời:


8

Tôi khuyên bạn nên sử dụng cron. Giá trị thời gian đặc biệt @rebootsẽ sinh ra công việc của bạn tại mỗi lần khởi động lại với tư cách là người dùng của bạn. Ví dụ: chạy crontab -evà sử dụng:

@reboot /home/yourself/bin/some_script_to_run

Để biết thêm chi tiết về các định dạng thời gian đặc biệt, xem man 5 crontab


Cảm ơn, có vẻ như đủ dễ dàng. Điều này không phụ thuộc vào người dùng nào tạo ra cronjob phải không? Nó chạy ở cuối boot bất kể đăng nhập?
Malabarba

Nó hoàn toàn phụ thuộc vào người đã tạo ra cronjob - nó sẽ chạy như người dùng đó. Nhưng nó không phụ thuộc vào họ để đăng nhập.
Kees Cook

Hãy nhớ rằng điều này chạy tập lệnh khi trình nền cron được khởi động để có thể thấy rằng hệ thống khác mà bạn có thể cần chưa sẵn sàng.
PhoneixS

4

Một khả năng là sử dụng Upstart. Điều này cho phép bạn chỉ định khi nào bạn muốn chạy tập lệnh của mình theo các phụ thuộc, ví dụ như, khi hệ thống tập tin được gắn kết và giao diện mạng eth0được bật và chạy trên đường. Tạo một tệp /etc/init/bruce_script.conf(bạn cần tạo tệp dưới dạng root) có chứa một cái gì đó như thế này:

description "Bruce's boot script"
start on filesystem and net-device-up IFACE=eth0
task
exec su -c '/home/bruce/script' bruce

Tham khảo tài liệu mới nhất để biết thêm thông tin, đặc biệt là init(5)trang hướng dẫn để biết danh sách những gì bạn có thể đặt trong tệp cấu hình đó.


Có một danh sách các sự kiện mới nổi có thể được sử dụng?
trời

@Markus: không phải tôi biết. Các sự kiện tiêu chuẩn có một trang hướng dẫn trong phần 7 (vì vậy dpkg -L upstart |grep /man7/) và bạn có thể xem các sự kiện được phát ra và được sử dụng làm trình kích hoạt trong các tập lệnh hiện có trong /etc/init.
Gilles 'SO- ngừng trở nên xấu xa'
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.