Linux service 配置,并自动启动
一般来说,服务器是极少重启的。如果必须重启,很多程序,如:shadowsocksserver,还要重新远程启动,很麻烦的。所以将程序添加到开机运行中是件很方便的事情。
创建脚本/etc/init.d/shadowsocks 文件(其实也是 /etc/rc.d/init.d/shadowsocks文件):
$sudovim/etc/init.d/shadowsocks
添加以下内容:
#!/bin/sh # #shadowsocksstart/restart/stopshadowsocks # #chkconfig:23458515 #description:startshadowsocks/ssserveratboottime start(){ ssserver-c/etc/shadowsocks.json-dstart } stop(){ ssserver-c/etc/shadowsocks.json-dstop } restart(){ ssserver-c/etc/shadowsocks.json-drestart } case"$1"in start) start ;; stop) stop ;; restart) restart ;; *) echo"Usage:$0{start|restart|stop}" exit1 ;; esac
懂bash,或者其他程序语言语法的,应该都看得懂是什么意思吧!其中:
- 前面的几行,看起来像注释,特别chkconfig那一行,不可删除,否则无法设置开机启动,会提示错误:serviceshadowsocksdoesnotsupportchkconfig
- chkconfig:23458515中,2345代表在设置在那个level中是on的。如果一个都不想on,那就写一个横线"-",比如:chkconfig:-8515。后面两个数字代表S和K的默认排序号
然后增加这个文件的可执行权限:
$sudochmod+x/etc/init.d/shadowsocks
这样就可以在shell中直接运行下面的命令开启程序了(重启和停止同理):
$sudoserviceshadowsocksstart
注意:
- 这里以root权限运行的,如果不想以root权限运行可以用sudo-u{user}{command}。
- 如果不给脚本文件加上其他用户的可执行权限,不带参数运行serviceshadowsocks 会提示unrecognizedservice。
在上面脚本没有问题(也就是保留了前面10行,并且语法正确)的情况下,通过下面的命令,就可以设置程序自动启动了:
$sudochkconfigshadowsockson
这样程序就会自动启动了。
参考资料
- 设置shadowsocksserver开机启动
- 编写linuxservice并设置开机启动(Ubuntu)
- Ubuntu添加开机启动服务的官方文档:UbuntuBootupHowto。
- 关于启动的内容还有更多:UpstartIntro,CookbookandBestPractises。