Linux 将常用软件注册为服务,开机自启

  • 可以使用"service 服务名称"来进行管理,比如常常使用的命令”service httpd start”,就是httpd注册成为一个服务了,于是才不需要写一大串的原始服务路径。像nginx的启动手工方式为:”/usr/tengine-version/sbin/nginx -c /usr/tengine-version/conf/nginx.conf”,将nginx注册成为系统服务后,就可以像"service nginx start"来启动。
  • 如何增加一个服务:
    • 服务脚本必须存放在/etc/ini.d/目录下;
    • chkconfig --add servicename在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
    • chkconfig --level 35 mysqld on修改服务的默认启动等级。
  • 要把一个程序注册成系统服务,首先得给出一个供service命令调用的脚本文件放到目录"/etc/init.d/"中去。
  • 写脚本之前,先看下软件的帮助文档:
    [root@localhost sbin]# ./nginx -h
    Tengine version: Tengine/2.2.1 (nginx/1.8.1)
    Usage: nginx [-?hvmVtdq] [-s signal] [-c filename] [-p prefix] [-g directives]
    
    Options:
      -?,-h         : this help
      -v            : show version and exit
      -m            : show all modules and exit
      -l            : show all directives and exit
      -V            : show version, modules and configure options then exit
      -t            : test configuration and exit
      -d            : dump configuration and exit
      -q            : suppress non-error messages during configuration testing
      -s signal     : send signal to a master process: stop, quit, reopen, reload
      -p prefix     : set prefix path (default: /usr/tengine/)
      -c filename   : set configuration file (default: conf/nginx.conf)
      -g directives : set global directives out of configuration file
    # 由此可知 设置配置文件为-c 文件名,停止为-s stop
    
  • 脚本文件(注意case语句的格式,格式错误是启动不起来的,如果启动不成功,执行cat /var/log/messages|grep nginx查看启动日志)
#! /bin/bash
#chkconfig: 2345 20 80
#description: nginx  service
#processname:nginx
ROOT_PATH=/usr/tengine
case "$1" in
  start)
  echo "Starging nginx Server..."
  $ROOT_PATH/sbin/nginx  -c $ROOT_PATH/conf/nginx.conf
  ;;
  stop)
  echo "Stopping nginx Server..."
  $ROOT_PATH/sbin/nginx -s stop
  ;;
  restart)
  echo "Restart nginx Server..."
  $ROOT_PATH/nginx -s stop
  $ROOT_PATH/sbin/nginx  -c $ROOT_PATH/conf/nginx.conf
  ;;
  *)
  echo "Usage: $0 {start|stop|restart}"
  exit 1
  ;;
esac
exit 0
  • chmod +x nginx只授予这个文件的所属者执行的权限
  • 脚本文件chkconfig解释
    #chkconfig: 2345 20 80
    #2345表示系统运行级别是2,3,4或者5时都启动此服务,
    #20,是启动的优先级,
    #80是关闭的优先级,如果启动优先级配置的数太小时如0时,则有可能启动不成功,
    #因为此时可能其依赖的网络服务还没有启动,从而导致自启动失败。
    chkconfig --list #列出所有的系统服务。
    chkconfig --add httpd #增加httpd服务。
    chkconfig --del httpd #删除httpd服务。 
    chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态。
    chkconfig --list #列出系统所有的服务启动情况。 chkconfig --list mysqld #列出mysqld服务设置情况。 
    chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭。 chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级。
    如果需要自启动某些服务,只需使用chkconfig 服务名 on即可,若想关闭,将on改为off
    在默认情况下,chkconfig会自启动2345这四个级别,如果想自定义可以加上--level选项
    
  • chkconfig nginx onchkconfig --add nginx添加到自启列表
  • reboot就能看到nginx开机自启了

你可能感兴趣的:(Linux 将常用软件注册为服务,开机自启)