Chkconfig thay thế cho Ubuntu Server?


144

Tôi đã trở nên rất quen với việc quản lý các dịch vụ khởi động trên nền tảng Redhat / RHEL bằng cách sử dụng chkconfigmặc dù đó không phải là cách của Debian / Ubuntu - Làm cách nào để cập nhật thông tin runlevel cho các dịch vụ hệ thống trên Ubuntu?

Cuối cùng tìm kiếm tương đương của:

chkconfig --add <service>
chkconfig --level 345 <service> on
chkconfig --del <service>

1
BTW: bạn cũng có thể apt-get install chkconfiggói trên Ubuntu. Tuy nhiên, nó đã bị hỏng từ nhiều năm, các liên kết tượng trưng sau đây sẽ làm cho nó (phần nào) hoạt động:ln -s /usr/lib/insserv/insserv /sbin/insserv
eckes

Câu trả lời:


125

Tương đương với chkconfigupdate-rc.d

Tương đương bạn tìm kiếm là

update-rc.d <service> defaults
update-rc.d <service> start 20 3 4 5
update-rc.d -f <service>  remove

Xem trang hữu ích này để biết thêm thông tin hoặc xem man update-rc.d


5
update-rc.d chỉ có nghĩa là được sử dụng trong các tập lệnh đóng gói, không phải bởi con người. Nó cũng dành cho các tập lệnh init mà Ubuntu không sử dụng. Ubuntu sử dụng Upstart.
maco

11
"Xin lưu ý rằng chương trình này được thiết kế để sử dụng trong các tập lệnh bảo trì gói và theo đó, chỉ có chức năng rất hạn chế theo yêu cầu của các tập lệnh đó. Các quản trị viên hệ thống không được khuyến khích sử dụng update-rc.d để quản lý runlevels. Họ nên chỉnh sửa các liên kết trực tiếp hoặc sử dụng các trình soạn thảo runlevel như sysv-rc-conf và bum thay thế. " Từ trang manpage: manpages.ubfox.com/manpages/hardy/man8/update-rc.d.8.html
maco

4
Tôi chấp nhận câu trả lời này vì các trang người cập nhật đã xóa cảnh báo đó. manpages.ubfox.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi

4
Điều này vẫn không thay đổi thực tế là Ubuntu thậm chí không sử dụng các tập lệnh init SysV ngày nay và update-rc.d chỉ dành cho chúng.
maco

1
Vẫn còn một số tập lệnh sysv được sử dụng và đặc biệt là chúng cũng hoạt động với phần khởi động. Vì vậy, nếu bạn không có thời gian để chuyển đổi một tập lệnh, bạn vẫn có thể sử dụng nó theo cách này.
eckes 10/2/2015

53

IMHO thay thế tốt nhất là sysv-rc-conf Để cài đặt chỉ cần chạy lệnh:

sudo apt-get install sysv-rc-conf

Sau khi cài đặt chạy lệnh:

sudo sysv-rc-conf

Bạn có thể kiểm tra hoặc bỏ chọn các tùy chọn để bắt đầu một dịch vụ ở bất kỳ mức độ thực thi nào và thậm chí có thể dừng hoặc bắt đầu các dịch vụ từ bảng điều khiển này. Đây là một công cụ không thể thiếu để kích hoạt hoặc vô hiệu hóa các ứng dụng một cách vĩnh viễn để khởi động ubfox của bạn Nếu bạn cần thay đổi nhanh, thì bạn có thể sử dụng giao diện CLI:

Ví dụ: để dừng ssh ở cấp 3 và 5 của thực thi:

sysv-rc-conf-off level 35 ssh

Atd để bắt đầu trong runlevels 2,3,4 và 5:

sysv-rc-conf on atd

Nếu bạn muốn biết thêm:

man sysv-rc-conf

Đây chính xác là những gì tôi cần, ngoại trừ tôi đã làm sysv-rc-conf apache2 on/ sysv-rc-conf apache2 offv.v.
Adam K Dean

Điều này làm việc cho tôi so sánh update-rc.d đang tìm kiếm các tập lệnh chương trình trong thư mục /etc/init.d/ nơi một số chương trình như vsftpd không được cài đặt.
David Okwii

Làm việc cho tôi trên Ubuntu 14.04
Hashid Hameed

Bạn có lỗi đánh máy: sysv-rc-conf-off level 35 sshnên làsysv-rc-conf --level 35 ssh off
Slam

Đã thử nghiệm làm việc trên Ubuntu 16.04LTS , nơi update-rc.dkhông.
Sopalajo de Arrierez

10

Ngay bây giờ, không có tương đương trên một bản phát hành ổn định để làm mọi thứ với các kịch bản Upstart. Jacob Peddicord đã viết dịch vụ việc làm (trình nền phụ trợ) và quản trị viên công việc (GTK + GUI nói chuyện với nó) cho dự án Google Summer of Code của mình. Gói Lucid nằm trong PPA của mình . Họ cũng tồn tại trong vũ trụ trong Maverick. Không có dòng lệnh front-end cho dịch vụ việc làm, chỉ có quản trị công việc.


10

Thử đi:

apt-get install chkconfig

Điều này hoạt động, ít nhất là như bản phát hành Ubuntu 12.04.


6
Không hoạt động vào ngày 12.10
chuyên gia

có 12.04 và cài đặt apt-get chkconfig cung cấp: "E: Gói 'chkconfig' không có ứng cử viên cài đặt". Có gì trong tập tin /etc/apt/source.list của bạn?
John Little

Có vẻ như mới nhất đã được xuất bản cho chính xác: 12.04: 1.0-79.1-2 0 in http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. Một số sửa chữa không bao giờ làm cho nó thành một gói.
eckes

2
Không có gói nào trên Ubuntu 14.04. Chúng ta có cần thêm một nguồn khác không?
Hashid Hameed

5

Hãy đi bộ từ ZERO đến Goal - cách thực hiện từng bước một.

Bước 1: hãy viết một thế giới xin chào

cat >> /var/tmp/python/server.py <<\EOF
#/usr/bin/python
import time
while True:
  print "hello> YES Bello"
  time.sleep(30)

EOF

Bước 2: cho phép tự động hóa ứng dụng hello world server server của chúng tôi

cat >> /var/tmp/myserver.sh <<\EOF
#!/bin/sh
script='/var/tmp/python/server.py'
export DISPLAY=:0.0 && /usr/bin/python $script &

EOF
chmod +x /var/tmp/myserver.sh

cat >> /etc/init.d/myserver <<\EOF

#! /bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/var/tmp/myserver.sh
PIDFILE=/var/run/myserver.pid

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

case "$1" in
  start)
     log_daemon_msg "Starting feedparser"
     start_daemon -p $PIDFILE $DAEMON
     log_end_msg $?
   ;;
  stop)
     log_daemon_msg "Stopping feedparser"
     killproc -p $PIDFILE $DAEMON
     PID=`ps x |grep server.py | head -1 | awk '{print $1}'`
     kill -9 $PID       
     log_end_msg $?
   ;;
  force-reload|restart)
     $0 stop
     $0 start
   ;;
  status)
     status_of_proc -p $PIDFILE $DAEMON atd && exit 0 || exit $?
   ;;
 *)
   echo "Usage: /etc/init.d/atd {start|stop|restart|force-reload|status}"
   exit 1
  ;;
esac

exit 0


EOF
chmod +x /etc/init.d/myserver
chmod -R 777 /etc/init.d/myserver

Bước 3:

$ update-rc.d myserver defaults
update-rc.d: warning: /etc/init.d/myserver missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/myserver ...
   /etc/rc0.d/K20myserver -> ../init.d/myserver
   /etc/rc1.d/K20myserver -> ../init.d/myserver
   /etc/rc6.d/K20myserver -> ../init.d/myserver
   /etc/rc2.d/S20myserver -> ../init.d/myserver
   /etc/rc3.d/S20myserver -> ../init.d/myserver
   /etc/rc4.d/S20myserver -> ../init.d/myserver
   /etc/rc5.d/S20myserver -> ../init.d/myserver
  • Vì vậy, trong bước 3, hệ thống khi khởi động, sẽ tự động thực thi server.txt dưới dạng daemon và giúp bạn dễ dàng tự động hóa

Hy vọng nó sẽ giúp.


2
+1: Câu trả lời rất hữu ích nhưng tôi nghĩ nó có câu hỏi sai kèm theo.
Claris
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.