Linux服务管理

运行级别

运行级别 含义
0 关机
1 单用户模式,只要用于系统修复
2 不完全的命令行模式,不含NFS模式
3 完整的命令行模式,就是标准字符页面
4 系统保留
5 图形模式
6 重启

查看及修改系统运行级别

1
2
3
4
5
6
7
8
9
10
// 查看系统运行级别
// N:NULL。当前级别为3即字符界面,其上一个级别为N即为空,表示系统开机直接进入字符界面
# runlevel
N 3

// 修改系统运行级别
// 进入图形级别,前提是安装图形界面
# init 5 // 若未安装图形界面则会报错
# runlevel
3 5 // 仍然进入了5级别

查看及修改系统默认的运行级别

1
2
# vim /etc/inittab
id:3:initdefault:

注:不要把开机启动级别设置为0或6级别。

服务启动和自启动

启动:就是在当前系统中让服务启动,并提供功能。

自启动:指让服务在系统开机或重启动之后,随着系统的启动而自动启动服务。

注:在chkconfig –list 查看到服务在不同运行级别时,服务自启动是否开启,不能确定现在服务是否已经开启。

查询已安装的服务

①、RPM包安装的服务

chkconfig –list命令查看服务自启动状态,可以看到所有RPM包安装的服务

②、源码包安装的服务

查看服务安装位置,一般是/usr/local/目录下
service、chkconfig、ntsysv都不能找到源码包安装的服务。

两者区别:主要是安装位置的不同

源码包:一般安装在/usr/local/目录下
RPM包:默认安装位置

RMP包服务管理

常规的rpm包文件安装位置:

路径 作用
/etc/init.d/ 启动脚本位置
/etc/sysconfig/ 初始化环境配置文件位置
/etc/ 配置文件位置
/etc/xinetd.conf xinetd配置文件
/etc/xinetd.d 基于xinetd服务的启动脚本
/var/lib/ 服务产生的数据放在这里
/var/log/ 日志

RMP包服务管理——独立服务的管理

①、独立服务的启动
  • 法一:/etc/init.d/ 独立服务名 或者 /etc/rc.d/init.d/ 独立服务名 start|stop|status|restart|
1
2
3
4
5
6
7
// 查看apache http服务的状态,其中httpd为一个shell脚本文件
# /etc/init.d/httpd status
// 启动apache服务
# /etc/init.d/httpd start

// 早期Linux版本服务管理脚本放在/etc/rc.d/init.d/目录
# /etc/rc.d/init.d/httpd status
  • 法二:service 独立服务名 start|stop|restart|status|
1
2
3
# service httpd status
// centos 7
# systemctl [start/stop/status/restart] 独立服务名

备注:上面两种方法一般无法管理源码包启动脚本,但可以把源码包启动脚本放置在/etc/init.d/目录下统一管理

②、独立服务的自启动
  • 法一:chkconfig [ - - level 运行级别 ] 服务名
1
2
3
4
# chkconfig [--level 运行级别] [独立服务名] [on/off]
例如:
# chkconfig --level 2345 httpd on
# chkconfig httpd off # --level 2345 可以省略,默认就是2345级别
  • 法二:修改文件:/etc/rc.d/rc.local 或者 /etc/rc.local 文件
1
2
3
# vi /etc/rc.local 或者 vi /etc/rc.d/rc.local
// 然后在尾部添加一行,例如
# /etc/init.d/httpd start # 开机apache服务就会自启动
  • 法三:ntsysv 命令管理自启动(可管理独立服务,和基于xinetd服务)

备注

①、/etc/rc.d/rc.local文件是在系统启动时,把所有的服务启动完,用户登录到系统前最后执行的文件,因此系统会执行这个文件中的命令

②、/etc/rc.local文件是/etc/rc.d/rc.local文件的软连接

RMP包服务管理——基于xinetd服务的管理

安装xinetd服务

1
# yum -y install xinetd

基于xinetd服务的启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 显示rsync服务的端口
# grep rsync /etc/services

# vim /etc/xinetd.d/rsync
service rsync
{
flags = REUSE // 设置TCP/IP socket可重用
socket_type = stream
wait = no // 允许多个连接同时连接
user = root // 启动服务的用户为root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID // 登录失败后,记录用户的ID
disable = no // 开启rsync服务,开启:no 关闭:yes
}

// 重启动xinetd服务
# service xinetd restart
或者
# systemctl restart xinetd (centos 7)

基于xinetd服务的自启动

1
2
3
# checkconfig time-stream on
// ntsysv命令
# ntsysv

备注

xinetd的服务:实际上自启动与启动完全同步,自启动关闭/开启,启动同时关闭/开启,启动关闭/开启,自启动同时关闭/开启

源码包服务管理

①、源码包安装服务的启动

使用绝对路径,调用启动脚本来启动。不同的源码包的启动脚本不通,可以查看源码包的安装说明,查看启动脚本的方法

1
# /usr/local/apache2/bin/apachectl start|stop
②、源码包安装服务的自启动

通过修改/etc/rc.d/rc.local文件加入启动命令

1
# vim /etc/rc.d/rc.local // 加入/usr/local/apache2/bin/apachectl start
③、让源码包服务被服务管理命令识别(chkconfig,ntsysv,service)
  • 让源码包的apache服务能被service命令管理启动
1
2
# ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache # 软链接
# service apache start
  • 让源码包的apache服务能被chkconfig与ntsysv命令管理自启动
1
2
3
4
5
6
7
8
9
10
11
vim /etc/init.d/apache 
// 在apache启动脚本中添加
# chkconfig: 35 86 76 # 格式:chkconfig : 运行级别 启动顺序 关闭顺序
# description: source package apache # description的内容随意
// 把源码包apache加入chkconfig 命令
# chkconfig --add apache
# chkconfig --list |grep apache
# apache 0:关闭 1:关闭 2:关闭 3:开启 4:关闭 5:开启 6:关闭

// 这时,ntsysv命令也可以管理apache
# ntsysv

systemctl

systemctl命令将service和chkconfig命令结合在了一起。这样通过一个命令就可以实现两个命令的功能。(CentOS 7 和 Ubuntu可用)

格式:

1
2
systemctl   动作   服务名.service
systemctl start|stop|restart|status 服务名.service

设置开机启动:

1
systemctl enable httpd.service

取消开机启动:

1
systemctl disable httpd.service

系统操作

1
2
3
4
systemctl reboot 重启
systemctl poweroff 关机
systemctl suspend 睡眠
systemctl hibernate 休眠

分析启动进程

1
systemd-analyze

分析各进程启动的时间

1
systemd-analyze blame

服务管理总结