Linux服务

Linux服务

Linux服务脚本位于/etc/rc.d/init.d,它是一个特殊的shell脚本。

标准结构

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
#!/bin/bash

# chkconfig: 2345 20 80
# description: Customized service

start() {
echo 'This is my service, start command'
echo ''
}

stop() {
echo 'This is my service, stop command'
echo ''
}

restart() {
echo 'This is my service, restart command'
echo ''
}

status() {
echo 'This is my service, status command'
echo ''
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo 'Usage: service myservice {start|status|stop|restart}'
;;
esac

chkconfig: 2345 20 80 (这里作一下特殊说明: 20 是该程序开机的启动优先级,值越小越优先;80是关机时的优先级,值越小越先关闭;这里就可以设定linux值的开关机顺序了)。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。

Linux 进程运行的7个等级

1
2
3
4
5
6
7
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

常用命令

注册服务

需要给予脚本执行权限chmod +x myservice

1
chkconfig --add myservice

删除服务

1
chkconfig --del myservice

设置启动等级

1
2
3
chkconfig [--level <1-6>] myservice [on/off/reset]
# e.g.
chkconfig --level 35 mysqld on

服务列表

1
chkconfig --list [name]

示例

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
#!/bin/sh

# chkconfig: 345 90 90
# description: ss server

start() {
echo -ne "Starting ss server\n"
# 后台运行
/usr/local/bin/ss > /dev/null 2>&1 &
}

stop() {
echo -ne "Stop ss server\n"
# 根据端口号杀死进程
fuser -k 1080/tcp
}

restart() {
stop
start
}

status() {
fuser 1080/tcp
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo 'Usage: service ss {start|stop|restart|status}'
;;
esac

参考

本站采用「署名 4.0 国际」进行许可。