Làm cách nào để định cấu hình dịch vụ để chạy khi khởi động


244

Tôi có một trình nền chạy tốt nếu tôi khởi động thủ công bằng servicelệnh:

ricardo@ricardo-laptop:~$ sudo service minidlna start                   
 * Starting minidlna minidlna                                                              [ OK ] 

nhưng nó không được cấu hình để tự động khởi động khi PC khởi động lại.

Làm cách nào tôi có thể định cấu hình để khởi động tự động, ngay cả khi không có ai đăng nhập vào PC?


@ user154721 Bạn đã đưa ra những đối số nào để cập nhật-RC.d để tự động khởi động? Tôi đã thử nhiều lựa chọn khác nhau nhưng không gặp may mắn.
BennyTheBen

Các chương trình tự khởi động được cấu hình trong autostarttệp kê khai hoặc trong *.servicecác tệp ở một số vị trí, cũng như trong init.dhoặc crontab. Xem: unix.stackexchange.com/a/525845/43233
Noam Manos

Câu trả lời:


281
sudo update-rc.d minidlna defaults

Điều này sẽ thêm dịch vụ vào hệ thống khởi động tự động. Nhưng nếu bạn nhận được:

System start/stop links for /etc/init.d/minidlna already exist.

Làm lệnh

sudo update-rc.d minidlna enable

PS : Để biết thêm chi tiết, hãy xem trang man để cập nhật-RC.d bằng cách gõ lệnhman update-rc.d


7
cảm ơn, nhưng điều gì sẽ xảy ra nếu tôi nhận được đầu ra này khi chạy lệnh đó?:System start/stop links for /etc/init.d/minidlna already exist.
Ricardo Reyes

1
nếu minidlna không ghi vào bất kỳ logfile nào bạn sẽ không tìm thấy nó ở bất cứ đâu. Nó có thể thất bại vì không có kết nối mạng khi nó được bắt đầu? Cố gắng xem xét cấu hình nếu có thể bật gỡ lỗi và / hoặc đăng nhập để tìm hiểu những gì sai.
LassePoulsen

8
@RicardoReyes sử dụng sudo update-rc.d -f minidlna removeđể xóa các liên kết hiện có.
Dogweather

5
Tôi nhận được dưới đây cập nhật lỗi-rc.d: /etc/init.d/usermanage: tập tin không tồn tại
Rizwan Patel

2
Tôi cũng vậy, có lỗi tương tự update-rc.d: /etc/init.d/mongod: file does not exist. Sau đó, sudo systemctl enable mongod.servicelàm việc cho tôi.
nhà thám hiểm

36

Đôi khi bạn cần chạy một kịch bản trong quá trình khởi động, ví dụ chạy cấu hình iptables trong quá trình khởi động. Vì vậy, bạn không phải chạy tập lệnh theo cách thủ công mỗi lần khởi động lại.

Bạn có thể chạy tập lệnh của mình trong quá trình khởi động trong Ubuntu bằng cách thêm nó vào /etc/init.d/rc.localtệp. Nhìn các bước dưới đây.

  1. Mở /etc/rc.localtệp bằng lệnh này:

    vim /etc/rc.local
    
  2. Thêm tập lệnh của bạn mà bạn muốn chạy trong quá trình khởi động ở đó, ví dụ:

    sh /home/ivan/iptables.sh 
    echo 'Iptable Configured!'
    
  3. Xem lại các bình luận có trong tệp đó và đảm bảo thoát 0 ở cuối.

  4. Lưu các tập tin. Và kịch bản của bạn sẽ chạy trên quá trình khởi động.


2
Nhận xét của /etc/init.d/rc.local trong Ubuntu 12.04 nói "Mô tả ngắn: Chạy /etc/rc.local nếu nó tồn tại", vì vậy có lẽ thêm các tập lệnh vào /etc/rc.local sẽ là ý tưởng tốt hơn?
Sanghyun Lee

Phương pháp này sẽ đưa ra lệnh "shutdown" cho dịch vụ hay chỉ giết quá trình khi tắt hệ điều hành?
Vadim Chekan

Vadim, RC.local chỉ chạy khi khởi động, không có gì đạt được khi tắt máy. Quá trình rất có thể sẽ bị HĐH giết chết khi tắt máy.
Weboide

1
FYI: Sự khác biệt giữa rc.localso với việc thêm nó vào init, là RC.local được thực thi ở cuối chuỗi khởi động init, chứ không phải là một phần của nó
BobTuckerman

35
  • Để bắt đầu một daemon khi khởi động:

    update-rc.d service_name defaults
    
  • Để xóa:

    update-rc.d -f service_name remove
    

mặc định => mức chạy mặc định 2,3,4 và 5

Thí dụ:

update-rc.d tomcat7 defaults

1
Khi tôi thực hiện lệnh này, tôi nhận được "Hệ thống bắt đầu / dừng liên kết cho /etc/init.d/tomcat7 đã tồn tại". tuy nhiên, khi tôi khởi động lại, nó không khởi động tomcat, tôi luôn phải thực hiện "dịch vụ tomcat7 bắt đầu".
John Little

trong trường hợp của tôi, sudo update-rc.d myservice mặc định luôn luôn hoàn thành mà không có đầu ra và dịch vụ sẽ không khởi động khi khởi động hoặc với dịch vụ myservice sudo bắt đầu cũng hoàn thành một cách âm thầm. sudo /etc/init.d/myservice bắt đầu hoạt động tuy nhiên
axk

13

Kể từ Ubuntu 15.10 (tương ứng với Debian 8 "jessie"), bạn phải sử dụng lệnh sau để định cấu hình dịch vụ của mình minidlnađể chạy khi khởi động:

sudo systemctl enable minidlna.service

Và để vô hiệu hóa nó một lần nữa từ khi bắt đầu lúc khởi động:

sudo systemctl disable minidlna.service

Điều này hoạt động với tất cả các tham chiếu tên dịch vụ mà bạn có thể tìm thấy với ls /lib/systemd/system/*.service.

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.