Linux service 配置,并自动启动

一般来说,服务器是极少重启的。如果必须重启,很多程序,如:shadowsocks server,还要重新远程启动,很麻烦的。所以将程序添加到开机运行中是件很方便的事情。

添加应用到service

创建脚本 /etc/init.d/shadowsocks 文件(其实也是 /etc/rc.d/init.d/shadowsocks 文件):

$ sudo vim /etc/init.d/shadowsocks

添加以下内容:

#!/bin/sh
#
# shadowsocks start/restart/stop shadowsocks
#
# chkconfig: 2345 85 15
# description: start shadowsocks/ssserver at boot time

start(){
        ssserver -c /etc/shadowsocks.json -d start
}
stop(){
        ssserver -c /etc/shadowsocks.json -d stop
}
restart(){
        ssserver -c /etc/shadowsocks.json -d restart
}

case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
restart)
        restart
        ;;
*)
        echo "Usage: $0 {start|restart|stop}"
        exit 1
        ;;
esac

懂bash,或者其他程序语言语法的,应该都看得懂是什么意思吧!其中:

  • 前面的几行,看起来像注释,特别chkconfig那一行,不可删除,否则无法设置开机启动,会提示错误:service shadowsocks does not support chkconfig
  • chkconfig: 2345 85 15 中,2345代表在设置在那个level中是on的。如果一个都不想on,那就写一个横线”-“,比如:chkconfig: – 85 15。后面两个数字代表S和K的默认排序号

然后增加这个文件的可执行权限:

$ sudo chmod +x /etc/init.d/shadowsocks

这样就可以在 shell 中直接运行下面的命令开启程序了(重启和停止同理):

$ sudo service shadowsocks start

注意:

  • 这里以root权限运行的,如果不想以root权限运行可以用 sudo -u {user} {command}
  • 如果不给脚本文件加上其他用户的可执行权限,不带参数运行 service shadowsocks 会提示 unrecognized service。

设置开机启动

在上面脚本没有问题(也就是保留了前面10行,并且语法正确)的情况下,通过下面的命令,就可以设置程序自动启动了:

$ sudo chkconfig shadowsocks on

这样程序就会自动启动了。

 

参考资料

 

6 条评论

学无止境 says: 回复

我按照这方法试了,就是不会自启动怎么解决,debian7 32位

歪麦 says: 作者

这个方法是在Centos 6下测试的呢,可以试试直接把启动命令写到/etc/rc.local文件,也可以开机启动的。

a
azzz says: 回复

使用restart 或者start stop 都提示这个错误
INFO: loading config from /root/ss.json
ERROR: found an error in config.json: Expecting property name enclosed in double quotes: line 12 column 3 (char 261)

歪麦 says: 作者

ss.json文件语法错误,检查下

s
simom says: 回复

那些注释不能取消是什么原理,如解释器会解析使用的话那么为什么还要注释,正式写进去不就好了

歪麦 says: 作者

这是Bash的注释,Bash不会解析。
但是用chkconfig命令的时候,chkconfig会读取这一行。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

昵称 *