just do it

[脚本]workman项目设置开机自启动

给Ubuntu添加一个开机启动脚本,操作如下:

1、新建个脚本文件wsocket

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/bin/bash  
### BEGIN INIT INFO
# Provides:          lostphp.com
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: wsocket service
# Description:       wsocket service daemon
### END INIT INFO 
 
php=/usr/bin/php  
root_path="/data/socket/hnzsxd/"  
start_file="start.php"  
case "$1" in  
start)  
echo 'starting hnzsxd start.php'  
echo "$php ${root_path}${start_file} start -d"  
$php ${root_path}${start_file} start -d  
;;  
stop)  
echo "stoping hnzsxd...start.php"  
echo "$php ${root_path}${start_file} stop"  
$php ${root_path}${start_file} stop  
;;  
 
status)  
echo "status hnzsxd...start.php"  
echo "$php ${root_path}${start_file} status"  
$php ${root_path}${start_file} status  
;;  
 
restart)  
echo "restarting hnzsxd...start.php"  
echo "$php ${root_path}${start_file} reload"  
$php ${root_path}${start_file} reload  
;;  
*)  
 
echo "Usage: $0 {start|stop|restart|restart}"  
 
exit 1  
 
;;  
 
 
esac

2、设置权限

1
2
3
sudo chmod 755 wsocket
#或者
sudo chmod +x wsocket

3、把脚本放置到启动目录下

1
sudo mv wsocket /etc/init.d/

4、将脚本添加到启动脚本

执行如下指令,在这里90表明一个优先级,越高表示执行的越晚

1
2
cd /etc/init.d/
sudo update-rc.d wsocket defaults 90

5、移除Ubuntu开机脚本

1
sudo update-rc.d -f wsocket remove

6、通过sysv-rc-conf来管理上面启动服务的启动级别等,还是开机不启动

1
sudo sysv-rc-conf

7、update-rc.d的详细参数

使用update-rc.d命令需要指定脚本名称和一些参数,它的格式看起来是这样的(需要在 root 权限下):

update-rc.d [-n] [-f] remove
update-rc.d [-n] defaults
update-rc.d [-n] disable|enable [S|2|3|4|5]
update-rc.d start|stop
-n: not really
-f: force
其中:

disable|enable:代表脚本还在/etc/init.d中,并设置当前状态是手动启动还是自动启动。
start|stop:代表脚本还在/etc/init.d中,开机,并设置当前状态是开始运行还是停止运行。(启用后可配置开始运行与否)
NN:是一个决定启动顺序的两位数字值。(例如90大于80,因此80对应的脚本先启动或先停止)
runlevels:则指定了运行级别。

实例:

(1)、添加一个新的启动脚本sample_init_script,并且指定为默认启动顺序、默认运行级别(首先要有实际的文件存在于/etc/init.d,即若文件/etc/init.d/sample_init_script不存在,则该命令不会执行):

1
update-rc.d sample_init_script defaults

上一条命令等效于(中间是一个英文句点符号):

1
update-rc.d sample_init_script start 20 2 3 4 5 . stop 20 0 1 6

(2)、安装一个启动脚本sample_init_script,指定默认运行级别,但启动顺序为50:

1
update-rc.d sample_init_script defaults 50

(3)、安装两个启动脚本A、B,让A先于B启动,后于B停止:

1
2
update-rc.d A 10 40
update-rc.d B 20 30

(4)、删除一个启动脚本sample_init_script,如果脚本不存在则直接跳过:

1
update-rc.d -f sample_init_script remove

这一条命令实际上做的就是一一删除所有位于/etc/rcX.d目录下指向/etc/init.d中sample_init_script的链接(可能存在多个链接文件),update-rc.d只不过简化了这一步骤。

(5)禁止Apache/MySQL相关组件开机自启:

1
2
update-rc.d -f apache2 remove
update-rc.d -f mysql remove

8、服务的启动停止状态

#通过service,比如

1
2
3
4
sudo service wsocket status
sudo service wsocket start
sudo service wsocket stop
sudo service wsocket restart

9、查看全部服务列表

1
sudo service --status-all
点赞