Alternatif Chkconfig untuk Server Ubuntu?


144

Saya sudah terbiasa mengelola startup layanan pada platform Redhat / RHEL chkconfigmeskipun itu tampaknya bukan cara Debian / Ubuntu - Bagaimana cara memperbarui informasi runlevel untuk layanan sistem di Ubuntu?

Akhirnya mencari yang setara dari:

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

1
BTW: Anda bisa apt-get install chkconfigpaket di ubuntu juga. Namun itu rusak sejak bertahun-tahun, symlink berikut akan membuatnya (agak) berfungsi:ln -s /usr/lib/insserv/insserv /sbin/insserv
eckes

Jawaban:


125

Setara dengan chkconfigadalahupdate-rc.d

Setara yang Anda cari adalah

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

Lihat halaman yang bermanfaat ini untuk informasi lebih lanjut atau lihat man update-rc.d


5
pembaruan-rc.d hanya dimaksudkan untuk digunakan dalam skrip pengemasan, bukan oleh manusia. Ini juga untuk skrip init, yang tidak digunakan Ubuntu. Ubuntu menggunakan pemula.
maco

11
"Harap dicatat bahwa program ini dirancang untuk digunakan dalam skrip pengelola paket dan, karenanya, hanya memiliki fungsionalitas yang sangat terbatas yang diperlukan oleh skrip tersebut. Administrator sistem tidak didorong untuk menggunakan pembaruan-rc.d untuk mengelola runlevel. Mereka harus mengedit tautan langsung atau gunakan editor runlevel seperti sysv-rc-conf dan bum sebagai gantinya. " Dari manual: manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html
maco

4
Saya menerima jawaban ini karena halaman manual yang diperbarui telah menghapus peringatan itu. manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi

4
Yang masih tidak mengubah fakta bahwa Ubuntu bahkan tidak menggunakan skrip init SysV saat ini dan pembaruan-rc.d hanya untuk mereka.
maco

1
Masih ada beberapa skrip sysv yang digunakan dan terutama mereka bekerja dengan pemula juga. Jadi, jika Anda tidak punya waktu untuk mengonversi skrip, Anda mungkin masih menggunakannya dengan cara ini.
eckes

53

IMHO alternatif terbaik adalah sysv-rc-conf Untuk menginstal hanya perlu menjalankan perintah:

sudo apt-get install sysv-rc-conf

Setelah terinstal jalankan perintah:

sudo sysv-rc-conf

Anda dapat memeriksa atau menghapus centang opsi untuk memulai layanan pada tingkat eksekusi apa pun dan bahkan dapat menghentikan atau memulai layanan dari konsol ini. Ini adalah alat yang sangat diperlukan untuk mengaktifkan atau menonaktifkan aplikasi secara permanen untuk mem-boot ubuntu Anda. Jika Anda perlu perubahan cepat, maka Anda dapat menggunakan antarmuka CLI:

Misalnya untuk menghentikan ssh di level 3 dan 5 dari eksekusi:

sysv-rc-conf-off level 35 ssh

Atd untuk memulai di runlevel 2,3,4 dan 5:

sysv-rc-conf on atd

Jika Anda ingin tahu lebih banyak:

man sysv-rc-conf

Ini persis apa yang saya butuhkan, kecuali saya lakukan sysv-rc-conf apache2 on/ sysv-rc-conf apache2 offdll.
Adam K Dean

Ini berfungsi untuk saya dibandingkan pembaruan-rc.d yang sedang mencari skrip program di direktori /etc/init.d/ di mana beberapa program seperti vsftpd tidak diinstal.
David Okwii

Bekerja untuk saya di Ubuntu 14.04
Hashid Hameed

Anda salah ketik: sysv-rc-conf-off level 35 sshseharusnyasysv-rc-conf --level 35 ssh off
Slam

Diuji bekerja di Ubuntu 16.04LTS , di mana update-rc.dtidak.
Sopalajo de Arrierez

10

Saat ini, tidak ada yang setara dengan rilis stabil untuk melakukan sesuatu dengan skrip pemula. Jacob Peddicord menulis layanan pekerjaan (backend daemon) dan jobs-admin (GTK + GUI yang berbicara dengannya) untuk proyek Google Summer of Code-nya. Paket l Lucid berada di PPA-nya . Mereka juga ada di Universe di Maverick. Tidak ada baris perintah front-end untuk layanan pekerjaan, hanya pekerjaan-admin.


10

Coba ini:

apt-get install chkconfig

Ini berfungsi, setidaknya sebagai rilis Ubuntu 12.04.


6
Tidak berfungsi pada 12,10
ahli

memiliki 12,04, dan apt-get install chkconfig memberikan: "E: Package 'chkconfig' tidak memiliki kandidat instalasi". Whats dalam file /etc/apt/sources.list Anda?
John Little

Sepertinya yang terbaru dipublikasikan dengan tepat: 12.04: 1.0-79.1-2 0 in http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages. Beberapa perbaikan tidak pernah berhasil menjadi sebuah paket.
eckes

2
Tidak ada paket di Ubuntu 14.04. Apakah kita perlu menambahkan sumber lain?
Hashid Hameed

5

Mari kita berjalan dari NOL ke Tujuan - bagaimana melakukannya dengan langkah demi langkah.

Langkah 1: mari kita menulis dunia halo

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

EOF

Langkah 2: mari kita buat server aplikasi hello world kami otomatis

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

Langkah 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
  • Jadi pada langkah 3, sistem saat boot, akan secara otomatis menjalankan server.py sebagai daemon dan membuatnya mudah untuk diotomatisasi

Semoga ini bisa membantu.


2
+1: Jawaban yang sangat berguna tetapi saya kira ada pertanyaan yang salah.
Claris
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.