一、简介与分类
1. 系统的运行级别
运行级别
运行级别 | 含义 |
---|---|
0 | 关机 |
1 | 单用户模式,可以近似理解为 Windows 的安全模式,主要用于系统修复 |
2 | 不完全的命令行模式,不包含NFS服务(Network File System,即网络文件系统) |
3 | 完全命令行模式,即标准的字符界面 |
4 | 系统保留 |
5 | 图形模式 |
6 | 重启 |
查看系统当前运行级别
runlevel
- 实例
[root~]$runlevel
N 3
输出说明:
第一个数字是有哪个运行级别进入当前运行级别,N 表示开机直接进入当前运行级别。
第二个数字是当前运行级别。
修改系统运行级别
init [运行级别]
[root~]$init 5
[root~]$runlevel
3 5
系统默认运行级别
CentOS6 以前可以通过修改
/etc/inittab
配置文件来修改系统默认运行级别CentOS7 中
/etc/inittab
配置文件已被弃用
[root~]$cat /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
翻译如下:
在使用 systemd 后 inittab 已经不再使用。
在这里添加配置不会生效。
Ctrl-Alt-Delete 由 /usr/lib/systemd/system/ctrl-alt-del.target 处理。
systemd 使用 'targets' 替代运行级别(runlevels),默认情况下,有两个主要的 targets:
multi-user.target:类似于运行级别 3 (完全命令行模式)
graphical.target: 类似于运行级别 5 (图形模式)
要查看当前的默认 target,运行:
systemctl get-default
要设置一个默认 target,运行:
systemctl set-default TARGET.target
- 实例
[root~]$systemctl get-default
multi-user.target
[root~]$systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root~]$systemctl get-default
graphical.target
2. 服务的分类
RPM包服务
- 显示所有已启动的服务
systemctl list-units --type=service
[root~]$systemctl list-units --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
auditd.service loaded active running Security Auditing Service
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
firewalld.service loaded active running firewalld - dynamic firewall daemon
getty@tty1.service loaded active running Getty on tty1
gssproxy.service loaded active running GSSAPI Proxy Daemon
irqbalance.service loaded active running irqbalance daemon
● network.service loaded failed failed LSB: Bring up/down networking
NetworkManager-wait-online.service loaded active exited Network Manager Wait Online
NetworkManager.service loaded active running Network Manager
...省略...
vboxadd-service.service loaded active running vboxadd-service.service
vboxadd-x11.service loaded active exited vboxadd-x11.service
vboxadd.service loaded active exited vboxadd.service
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
37 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
源码包服务
- 查询已安装的服务
查看服务安装位置,一般在
/usr/local/
下
3. 服务与端口
端口是什么
如果把IP地址化作一间房子,端口就是这间房子里的门。真正的房子里只有几个门,但是IP地址的端口可以有65536个。
端口是传输层想应用层传递数据的门。
常用端口与服务对应关系
/etc/services
/etc/services
文件只是记录常用端口与服务对应关系,但是这个关系并不是绝对的,仅供参考。
- 查看服务对应的端口号
grep [服务] /etc/services
[root~]$grep memcache /etc/services
memcache 11211/tcp # Memory cache service
memcache 11211/udp # Memory cache service
- 查看指定端口对应的服务
grep [端口号] /etc/services
[root~]$grep 11211 /etc/services
memcache 11211/tcp # Memory cache service
memcache 11211/udp # Memory cache service
[root~]$grep ' 80/' /etc/services
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
http 80/sctp # HyperText Transfer Protocol
列出系统中开启的服务与对应的端口
netstat -tulnp
-t:列出TCP协议的端口
-u:列出UDP协议的端口
-l:仅列出在监听状态的网络服务
-n:不使用域名与服务名,而使用IP地址和端口号
-p:显示正在使用Socket的程序识别码和程序名称
- 实例
[root~]$netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1069/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 3121/sendmail: acce
tcp6 0 0 :::22 :::* LISTEN 1069/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 3048/dhclient
二、RPM包服务管理
1. RPM 包服务的安装目录
仅供参考
目录 | 说明 |
---|---|
/etc/init.d/ | 启动脚本所在目录 |
/etc/sysconfig/ | 初始化环境配置文件目录 |
/etc/ | 配置文件安装目录 |
/var/log/ | 日志文件目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存目录 |
/usr/share/doc/ | 基本的软件使用手册保存目录 |
/usr/share/man/ | 帮助文件保存目录 |
2. RPM 包服务启动|停止|重启|状态
systemctl [start|stop|restart|status] 服务名
[root~]$systemctl stop crond
[root~]$systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Thu 2018-05-24 04:23:44 UTC; 5s ago
Process: 588 ExecStart=/usr/sbin/crond -n $CRONDARGS (code=exited, status=0/SUCCESS)
Main PID: 588 (code=exited, status=0/SUCCESS)
May 24 01:03:51 localhost.localdomain systemd[1]: Started Command Scheduler.
May 24 01:03:51 localhost.localdomain systemd[1]: Starting Command Scheduler...
May 24 01:03:51 localhost.localdomain crond[588]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 12% if used.)
May 24 01:03:51 localhost.localdomain crond[588]: (CRON) INFO (running with inotify support)
May 24 04:23:44 10.0.2.15 systemd[1]: Stopping Command Scheduler...
May 24 04:23:44 10.0.2.15 systemd[1]: Stopped Command Scheduler.
[root~]$systemctl start crond
[root~]$systemctl restart crond
[root~]$systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2018-05-24 04:24:15 UTC; 1s ago
Main PID: 7480 (crond)
CGroup: /system.slice/crond.service
└─7480 /usr/sbin/crond -n
May 24 04:24:15 10.0.2.15 systemd[1]: Started Command Scheduler.
May 24 04:24:15 10.0.2.15 systemd[1]: Starting Command Scheduler...
May 24 04:24:15 10.0.2.15 crond[7480]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 82% if used.)
May 24 04:24:15 10.0.2.15 crond[7480]: (CRON) INFO (running with inotify support)
May 24 04:24:15 10.0.2.15 crond[7480]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
3. RPM 包服务的自启动设置
systemctl [enable|disable] 服务名
使用
systemctl is-enabled 服务名
可以查看服务自启动状态
[root~]$systemctl is-enabled crond
enabled
[root~]$systemctl disable crond
Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.
[root~]$systemctl is-enabled crond
disabled
[root~]$systemctl enable crond
Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.
[root~]$systemctl is-enabled crond
enabled
修改 /etc/rc.d/rc.local
文件
在文件中加入开机需要执行的命令即可,别忘了给文件添加执行权限。
[root~]$cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
三、源码包服务管理
1. 源码包安装服务的目录
一般在 /usr/local/ 下,仅供参考
2. 源码包安装服务的启动
使用绝对路径,调用启动脚本来启动。
不同的源码包的启动脚本不同。
可以查看源码包的安装说明,查看启动脚本的方法。
- 例:源码包 nginx 的启动、停止、重启
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx -s reload
3. 服务的自启动设置
修改 /etc/rc.d/rc.local
文件
在文件中加入开机需要执行的命令即可,别忘了给文件添加执行权限。
[root~]$cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
# 开机启动nginx
/usr/local/nginx/sbin/nginx
四、常见服务功能简介
服务名称 | 功能简介 | 建议 |
---|---|---|
acpid | 电源管理接口。 如果是笔记本用户建议开启,可以监听内核层的相关电源事件 | 开启 |
anacron | 系统的定时任务程序。 cron 的一个子系统,如果定时任务错过了执行时间,可以通过 anacron 继续唤醒执行 | 关闭 |
alsasound | Alsa 声卡驱动。 如果使用 alsa 声卡,开启 | 关闭 |
apmd | 电源管理模块。 如果支持 acpid,就不需要 apmd,可以关闭 | 关闭 |
atd | 指定系统在特定时间执行某个任务,只能执行一次。 如果需要则开启,但我们一般使用 crond 来进行循环定时任务 | 关闭 |
auditd | 审核子系统。 如果开启了此服务,SELinux 的审核信息会写入/var/log/audit/audit.log 文件,如果不开启,审核信息会记录在 syslog 中 | 开启 |
autofs | 让服务器可以自动挂载网络中的其他服务器的共享数据,一般用来自动挂载 NFS 服务。 如果没有 NFS 服务建议关闭 | 关闭 |
avahi-daemon | Avahi是 zeroconf 协议的实现。 它可以在没有 DNS服务的局域网里发现基于 zeroconf 协议的设备和服务。 除非有兼容设备或使用 zeroconf 协议,否则关闭 | 关闭 |
bluetooth | 蓝牙设备支持。 一般不会在服务器上启用蓝牙设备,关闭它 | 关闭 |
capi | 仅对使用 ISND 设备的用户有用 | 关闭 |
chargen-dgram | 使用 UDP 协议的 chargen server。 主要功能是提供类似远程打字的功能 | 关闭 |
chargen-stream | 同上 | 关闭 |
cpuspeed | 可以用来调整 CPU 的频率。 当闲置时可以自动降低 CPU 频率来节省电量 | 开启 |
crond | 系统的定时任务。 一般的 Linux 服务器都需要定时任务帮助系统维护。建议开启 | 开启 |
cvs | 一个版本控制系统 | 关闭 |
daytime-dgram | daytime 使用 TCP 协议的 Daytime 守护进程。 该协议为客户机实现从远程服务器获取日期和时间的功能 | 关闭 |
daytime-stream | 同上 | 关闭 |
dovecot | 邮件服务中 POP3/IMAP 服务的守护进程。 主要用来接收信件,如果启动了邮件服务则开启,否则关闭 | 关闭 |
echo-dgram | 服务器回显客户服务的进程 | 关闭 |
echo-stream | 同上 | 关闭 |
firstboot | 系统安装完成之后,有个欢迎界面,需要对系统进程初始设定,就是这个进程的作用。 既然不是第一次启动了,关闭吧 | 关闭 |
gpm | 在字符终端(tty1-tty6)中可以使用鼠标复制和粘贴,就是这个服务的功能 | 开启 |
haldaemon | 检测盒支持 USB 设备。 如果是服务器可以关闭,个人机建议开启 | 关闭 |
hidd | 蓝牙鼠标、键盘等蓝牙设备检测。 必须启动 bluetooth 服务 | 关闭 |
hplip | HP 打印机支持 如果没有 HP 打印机关闭吧 | 关闭 |
httpd | apache 服务的守护进程 如果需要启动 apache,就开启 | 开启 |
ip6tables | IPv6 的防火墙 目前 IPv6 协议并没有使用,可以关闭 | 关闭 |
iptables | 防火墙功能 Linux 中防火墙是内核支持功能。这是服务器的主要防护手段,必须开启。 | 开启 |
irda | IrDA 提供红外线设备(笔记本,PDA’s,手机,计算器等等)间的通讯支持。关闭吧 | 关闭 |
irqbalance | 支持多核处理器,让 CPU 可以自动分配系统中断(IRQ),提高系统性能 目前服务器多是多核 CPU,请开启 | 开启 |
isdn | 使用 ISDN 设备连接网络 目前主流的联网方式是光纤接入和ADSL,ISDN 已经非常少见,请关闭 | 关闭 |
kudzu | 该服务可以在开机时进行硬件检测,并会调用相关的设置软件。 建议关闭,仅在需要时开启 | 关闭 |
lvm2-monitor | 该服务可以让系统支持 LVM 逻辑卷组 如果分区采用的是 LVM方式,那么应该开启。建议开启 | 开启 |
mcstrans | SELinux 的支持服务。建议启动 | 开启 |
mdmonitor | 该服务用来监测 Software RAID 或 LVM 的信息。 不是必须服务,建议关闭 | 关闭 |
mdmpd | 该服务用来监测 Multi-Path 设备。 不是必须服务 | 关闭 |
messagebus | 这是 Linux 的 IPC(Interprocess Communication,进程间通讯)服务,用来在各个软件中交换信息。 个人建议关闭 | 关闭 |
microcode_ctl | Intel 系列的 CPU 可以通过这个服务支持额外的微指令集 | 关闭 |
mysqld | mysql 数据库服务器。 如果需要就开启,否则关闭 | 开启 |
named | DNS 服务的守护进程,用来进行域名解析。 如果是 DNS 服务器则开启,否则关闭 | 关闭 |
netfs | 该服务用于在系统启动时自动挂载网络中的共享文件空间 比如:NFS,Samba 等等。需要就开启,否则关闭 | 关闭 |
network | 提供网络设置功能。 通过这个服务来管理网络,所以开启 | 开启 |
nfs | NFS(Network File System)服务,Linux 与 Linux 之间的文件共享服务。 需要就开启,否则关闭 | 关闭 |
nfslock | 在 Linux 中如果使用了 NFS 服务,为了避免同一个文件被不同的用户同时编辑,所有有这个锁服务。 有 NFS 是开启,否则关闭 | 关闭 |
ntpd | 该服务可以通过互联网自动更新系统时间,使系统时间永远都准确。 需要则开启,但不是必须服务 | 关闭 |
pcscd | 智能卡检测服务,可以关闭 | 关闭 |
portmap | 用在远程过程调用(RPC)的服务,如果没有任何 RPC 服务时,可以关闭。 主要是 NFS 和 NIS 服务需要 | 关闭 |
psacct | 该守护进程支持几个监控进程活动的工具 | 关闭 |
rdisc | 客户端 ICMP 路由协议 | 关闭 |
readahead_early | 在系统开机的时候,先将某些进程加载如内存整理,可以加快一点启动速度 | 关闭 |
readahead_later | 同上 | 关闭 |
restorecond | 用于给 SELinux 监测和重新加载正确的文件上下文。 如果开启 SELinux 则需要开启 | 关闭 |
rpcgssd | 与 NFS 有关的客户端功能。 如果没有 NFS 就关闭吧 | 关闭 |
rpcidmapd | 同上 | 关闭 |
rsync | 远程数据备份守护进程 | 关闭 |
sendmail | sendmail 邮件服务的守护进程。 如果有邮件服务就开启,否则关闭 | 关闭 |
setroubleshoot | 该服务用于将 SELinux 相关信息记录在日志/var/log/messages 中。 建议开启 | 开启 |
smartd | 该服务用于自动检测硬盘状态。 建议开启 | 开启 |
smb | 网络服务 samba 的守护进程。 可以让 Linux 和 Windows 之间共享数据。如果需要则开启 | 关闭 |
squid | 代理服务的守护进程。 如果需要则开启,否则关闭 | 关闭 |
sshd | ssh 加密远程登陆管理的服务。 服务器的远程管理必须使用此服务,不要关闭 | 开启 |
syslog | 日志的守护进程 | 开启 |
vsftpd | vsftp 服务的守护进程。 如果需要 FTP 服务则开启,否则关闭 | 关闭 |
xfs | 这个是 X Window 的字体守护进程。 为图形界面提供字体服务,如果不启动图形界面,就不用开启 | 关闭 |
xinetd | 超级守护进程。 如果有依赖 xinetd 的服务就必须开启 | 开启 |
ypbind | 为 NIS(网络信息系统)客户机激活 ypbind 服务进程 | 关闭 |
yum-updatesd | yum 的在线升级服务 | 关闭 |