Chạy chương trình tự động khi khởi động trong linux ubfox [đã đóng]


140

Tôi cần một chương trình để chạy mỗi khi tôi khởi động linux linux của mình. Vì vậy, tôi cần thêm nó vào danh sách các chương trình khởi động của mình. Chỉ có một vấn đề: tôi cần thực hiện thông qua thiết bị đầu cuối.



23
@Flexo Câu trả lời này không có trong cả các liên kết bạn cung cấp. +1 cho câu hỏi và câu trả lời này
Francisco Valdez

2
Trong thực tế, câu trả lời ở đây được tham chiếu từ câu hỏi đầu tiên.
Wilson F

4
Đối với một cách đơn giản, di động để làm điều này, bạn có thể sử dụng Cron. Chạy crontab -eđể chỉnh sửa crontab của người dùng của bạn; thêm @reboot commandđể chạy commandtrên mỗi khởi động.
appas 27/05/2015

2
Tôi không biết nó có trùng lặp hay không nhưng đó là lần truy cập google đầu tiên ..
Vladimir tuyên bố

Câu trả lời:


178
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename 
sudo update-rc.d filename defaults 

Script bây giờ sẽ bắt đầu khởi động. Lưu ý rằng phương pháp này cũng hoạt động với cả liên kết cứng và liên kết tượng trưng ( ln).

Biên tập

Tại thời điểm này trong quy trình khởi động, PATH chưa được đặt, vì vậy điều quan trọng là các đường dẫn tuyệt đối được sử dụng xuyên suốt. NHƯNG, như đã chỉ ra trong các bình luận của Steve HHH, tuyên bố rõ ràng đường dẫn tệp đầy đủ ( /etc/init.d/filename) cho lệnh update-rc.d không hợp lệ trong hầu hết các phiên bản Linux. Trên mỗi trang dành cho update-rc.d , tham số thứ hai là một tập lệnh nằm trong /etc/init.d/*. Cập nhật mã trên để phản ánh điều này.

Chỉnh sửa khác

Cũng như được chỉ ra trong các ý kiến ​​(của Charles Brandt), /filenamephải là một kịch bản theo phong cách init. Một mẫu tốt cũng đã được cung cấp - https://github.com/fhd/init-script-template .

Một liên kết khác đến một bài viết khác chỉ để tránh sự thối rữa liên kết có thể xảy ra (mặc dù nó sẽ rất buồn nếu GitHub chết) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

Chưa chỉnh sửa

Như đã chỉ ra trong các bình luận (của Russell Yan), Điều này chỉ hoạt động trên chế độ mặc định của update-rc.d.

Theo hướng dẫn của update-rc.d, nó có thể chạy trên hai chế độ, "các máy sử dụng chế độ cũ sẽ có một tệp /etc/init.d/.legacy-bootordering", trong trường hợp đó bạn phải chuyển cấu hình chuỗi và runlevel thông qua các đối số dòng lệnh.

Đối số tương đương được đặt cho ví dụ trên là

sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .


1
Cũng giống như một FYI, tùy chọn này mặc định, mặc định, đặt một liên kết để bắt đầu tập lệnh ở các cấp chạy 2, 3, 4 và 5. (và đặt một liên kết dừng ở 0, 1 và 6.)
Dave Lasley

5
Tôi mới thử cái này trong Ubuntu Server 12.04 LTS, nhưng trong 12.04 bạn không thể có tiền tố /etc/init.d. Chỉ là vậy thôi sudo update-rc.d filename defaults.
Steve HHH

1
@puk Cả liên kết cứng và liên kết tượng trưng sẽ hoạt động với phương pháp này
Dave Lasley

14
Chỉ muốn thêm tên / tên tệp trong trường hợp này phải là một tập lệnh kiểu init. Đây là một mẫu để bắt đầu tập lệnh init tùy chỉnh của riêng bạn: github.com/fhd/init-script-template
Charles Brandt

1
Đọc này - unix.stackexchange.com/questions/28679/ từ - cùng với câu trả lời sẽ rất hữu ích
Arjun Sreedharan
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.