Ubuntu ServerのChkconfigの代替案?


144

chkconfigDebian / Ubuntuの方法ではないようですが、Redhat / RHELプラットフォームでのサービススタートアップの管理に非常に慣れてきました-Ubuntuのシステムサービスのランレベル情報を更新するにはどうすればよいですか?

最終的に次のものに相当するものを探します:

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

1
ところで:あなたもapt-get install chkconfigubuntuでパッケージをすることができます。しかし、それは何年以来破られ、以下のシンボリックリンクが(多少)の仕事になります:ln -s /usr/lib/insserv/insserv /sbin/insserv
eckes

回答:


125

相当chkconfigISupdate-rc.d

あなたが求める同等物は

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

詳細については、この便利なページを参照するか、man update-rc.dをチェックしてください。


5
update-rc.dは、パッケージスクリプトで使用することのみを目的としており、人間では使用できません。また、Ubuntuが使用しないinitスクリプト用でもあります。UbuntuはUpstartを使用します。
マコ

11
「このプログラムは、パッケージメンテナースクリプトで使用するために設計されているため、そのようなスクリプトに必要な機能は非常に限られていることに注意してください。システム管理者は、run-level直接、またはsysv-rc-confやbumなどのランレベルエディターを代わりに使用してください。」マンページから: manpages.ubuntu.com/manpages/hardy/man8/update-rc.d.8.html
maco

4
更新されたmanページでその警告が削除されたため、この回答を受け入れています。manpages.ubuntu.com/manpages/lucid/man8/update-rc.d.8.html
Marco Ceppi

4
Ubuntuは現在SysV initスクリプトさえ使用しておらず、update-rc.dはそれらのためだけであるという事実を今でも変えません。
マコ

1
まだいくつかのsysvスクリプトが使用されており、特にupstartでも機能します。したがって、スクリプトを変換する時間がなかった場合でも、この方法でスクリプトを使用できます。
15

53

最良の代替IMHOはsysv-rc-confです。インストールするには、コマンドを実行するだけです。

sudo apt-get install sysv-rc-conf

インストールしたら、次のコマンドを実行します。

sudo sysv-rc-conf

オプションをオンまたはオフにして、任意の実行レベルでサービスを開始できます。このコンソールからサービスを停止または開始することもできます。ubuntuを永続的に起動する方法でアプリケーションを有効または無効にするために不可欠なツールです。迅速な変更が必要な場合は、CLIインターフェースを使用できます。

たとえば、実行レベル3および5でsshを停止するには:

sysv-rc-conf-off level 35 ssh

ランレベル2、3、4および5で開始するAtd:

sysv-rc-conf on atd

もっと知りたい場合:

man sysv-rc-conf

これは、私がsysv-rc-conf apache2 on/ sysv-rc-conf apache2 offetc。を除いて、私がまさに必要としたものです。
Adam K Dean

これは、vsftpdのようないくつかのプログラムがインストールされていない/etc/init.d/ディレクトリでプログラムスクリプトを探していたupdate-rc.dと比較してうまくいきました。
デビッドオクウィー14年

Ubuntu 14.04で私のために働いた
ハシッドハメド

タイプミスがあります:するsysv-rc-conf-off level 35 ssh必要がありますsysv-rc-conf --level 35 ssh off
スラム

Ubuntu 16.04LTSで動作をテストしましたが、動作update-rc.dしませんでした。
ソパラホデアリエレス

10

現時点では、Upstartスクリプトを使用して作業を行うための安定版リリースに相当するものはありません。Jacob Peddicordは、彼のGoogle Summer of Codeプロジェクトのために、jobservice(バックエンドデーモン)とjobs-admin(これと通信するGTK + GUI)を作成しました。明idパッケージは彼のPPAにあります。それらはマーベリックの宇宙にも存在します。jobserviceのコマンドラインフロントエンドはまだありません。jobs-adminだけです。


10

これを試して:

apt-get install chkconfig

これは、少なくともUbuntu 12.04リリースとして機能します。


6
12.10では機能しません
専門家

12.04があり、apt-get install chkconfigは「E:パッケージ 'chkconfig'にはインストール候補がありません」と表示します。/etc/apt/sources.listファイルの内容は何ですか?
ジョンリトル14年

最新版が正確に発行されたように見えます:12.04:1.0-79.1-2 0 in http://us.archive.ubuntu.com/ubuntu/ precise/universe i386 Packages。いくつかの修正がパッケージ化されませんでした。
15

2
Ubuntu 14.04にはパッケージはありません。別のソースを追加する必要がありますか?
ハシッドハメド

5

ゼロからゴールまで歩きましょう-ステップバイステップでそれを行う方法。

ステップ1: Hello Worldを作成しましょう

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

EOF

ステップ2: Hello Worldアプリケーションserver.pyを自動化する

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

ステップ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
  • そのため、起動時のシステムのステップ3では、server.pyをデーモンとして自動的に実行し、自動化を容易にします

お役に立てば幸いです。


2
+1:非常に便利な答えですが、間違った質問が添付されていると思います。
クラリス14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.