当前位置: 首页>>技术问答>>正文


Chkconfig替代Ubuntu服务器?

, ,

问题描述

我已经习惯于使用chkconfig在Redhat /RHEL平台上管理服务创业公司,尽管这看起来不像Debian /Ubuntu的方式 – 我如何更新Ubuntu系统服务的运行级别信息?

最终寻找等同物:

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

最佳解决办法

与chkconfig等效的是update-rc.d

你寻求的等价物是

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

有关更多信息,请参见this useful page或查看man update-rc.d

次佳解决办法

最好的替代方案恕我直言,是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

Atd以运行级别2,3,4和5开始:

sysv-rc-conf on atd

如果你想知道更多:

man sysv-rc-conf

第三种解决办法

目前,在稳定版本上没有用于处理Upstart脚本的等价物。 Jacob Peddicord为他的Google Summer of Code项目编写了jobservice(后台守护进程)和jobs-admin(与之对话的GTK + GUI)。 Lucid包是in his PPA。它们也存在于Maverick的宇宙中。没有用于jobservice的命令行front-end,但只有jobs-admin。

第四种办法

尝试这个:

apt-get install chkconfig

这起作用,至少在Ubuntu 12.04发行版中。

第五种办法

让我们从零走到目标 – 如何一步一步做到这一点。

第1步:让我们写一个问候世界

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作为后台进程,并使其易于自动化

希望它有帮助。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/367.html,未经允许,请勿转载。