前言
Linux操作系统中包含了大量的服务程序,这些服务程序在切换运行级别时根据预设的状态进行启动或终止,其中有不少系统服务可能并不是用户需要的,但是默认也运行了
一、系统服务控制
1、systemctl
在CentOS系统中,各种系统服务的控制脚本默认放在usr/lib/systemd目录下,通过systemctl命令工具可以实现对指定系统服务的控制,语法格式如下
systemctl 控制类型 服务名称
对于大多数系统服务来说,常见的几种控制类型如下
start(启动):运行指定的系统服务程序,实现服务功能
stop(停止):终止指定的系统服务程序,关闭相应的功能
restart(重启):先退出,再重新运行指定的系统服务程序
reload(重载):不退出服务程序,只是刷新配置,在某些服务中与restart的操作相同
status(查看状态):查看指定的系统服务的运行状态及相关信息
对于在实际生产环境中运行的服务器,不要轻易执行stop或restart操作,以免造成客户端访问中断,带来不必要的损失,若只是要为系统服务启用新的配置,可以采用相对温和一些的“reload”参数重新加载配置,而不是生硬地执行“restart”,例如,对于正在为用户提供Web访问的httpd服务,当需要应用新的配置时,建议执行“systemctl reload httpd.service”命令来重新载入配置,而不是执行"systemctl restart httpd.service"
2、target
(1)查看target
明确当前系统所在的target将有助于管理员排除一些应用故障,若未能确知当前所处的目标,可以直接执行“runlevel”命令进行查询,显示结果中的两个字符分别表示切换前的目标和当前的目标,若之前尚未切换过运行级别,则第1列将显示“N”
若用户想查看系统启动时默认运行的target,可以执行“systemctl get-default”命令以显示系统默认的target
运行级别 | systemd的target | 说明 |
0 | target | 使用该级别会关闭主机 |
1 | rescue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 |
2 | multi-user.target | 用户定义/域特定运行级别,默认等同于3 |
3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 |
4 | multi-user.target | 用户定义/域特定运行级别,默认等同于3 |
5 | graphical.target | 图型界面的多用户模式,提供了图形桌面操作环境 |
6 | reboot.target | 重新启动,使用该级别时将会重启主机 |
(2)切换target
当用户需要将系统转换为其他的target时,可以通过传统的init程序进行,只要使用与运行级别相对应的数字(0-6)作为命令参数即可,或者使用systermctl命令进行目标切换,例如,为了节省系统资源,将系统运行的target由图形模式(5)切换为字符模式(3) ,可以执行“init 3”或“systemctl isolate multi-user. target”命令,将系统切换到字符模式以后,图形桌面环境不再可用,这时按Alt+F7组合键也无法恢复图形桌面环境,需要再次使用图形桌面时,可以执行“init 5”或者“systermctl isolate graphical target”命令切换回去
通过切换target的操作,还可以实现两个特殊的功能,那就是关机和重启,运行级别0和6分别对应关机和重启这两个特殊模式,因此只要执行“init 0”或“init 6”命令就可以实现相应的关机或重启操作了,运行级别0、6又分别对应着systemd的“poweroff.target”和“reboot.target”目标,因此执行“systemctl poweroff”与“systemctl reboot”命令也可以实现相应的关机、重启操作
若要永久切换运行级别,可执行如下命令可将当前系统的开机默认运行级别从graphical.target更改为multi-user.target
systemctl set-default runlevel3.target
使用以下命令让开机界面切换回图形界面模式
systemctl set-default runlevel5.target
3、常见系统服务
在CentOS系统中,默认安装的系统服务多达100多种,这些系统服务为用户提供了丰富的应用服务,只有了解各个系统服务的用途,才能有选择地进行优化操作,实现按需启用Linux服务
CentOS系统中常见的系统服务
服务名称 | 用途 |
atd | 延期、定期执行任务 |
bluetooth | 发现、认证蓝牙相关设备 |
crond | 按预定周期执行计划任务 |
irqbalance | 多核心CPU处理器的调度支持 |
kdump | 记录内核奔溃时的内存信息 |
lvm2-monitor | LVM管理及监控 |
netfs | 访问共享文件夹等网络文件系统 |
network | 配置及使用网卡、网络地址 |
restorecond | SELinux安全机制的文件监控和恢复功能 |
rhnsd | 访问Red Hat Network,获取通知、提交订阅等 |
rpcgssd | 管理NFS(Network File Systeam,网络文件系统)访问中的客户程序语境 |
saslauthd | 基于文本的身份认证 |
smartd | 监控本地硬盘的状态并发送故障报告 |
smb | 文件共享服务 |
sshd | 提供远程登陆和管理Linux主机的功能 |
rsyslog | 记录内核、系统的日志信息 |
vsftpd | 通过FTP(File Transfer Protocol,文件传输协议)提供文件上传、下载功能 |
必须强调的是,这些服务到底是选择开启还是关闭,应根据主机的实际功能需求来定,例如,如果当前的Linux主机用来向局域网提供文件共享服务,那么smb服务应开启,而不能关闭
4、开机自启服务管理
Linux操作系统在每次开机后会进入默认的systemd运行目标(如字符模式或图形模式),并运行该目标中默认设为启动的各种系统服务,若要禁止某些系统服务自动运行,可以使用ntsysv或者systemctl工具进行优化
(1)使用ntsysv
ntsysv工具可以在字符模式中运行,为用户提供一个仿图形的交互式操作界面,专门用于集中配置各种系统服务的启动状态,当需要同时设置多个服务的启动状态时,使用ntsysv工具会非常方便,单独执行“ntsysv”命令时仅用于管理当前运行目标中的服务,通过“--level”选项可以对指定运行目标(级别)中的服务进行管理,例如,执行“ntsysv --level 35” 命令可以打开 ntsysv 管理程序,操作时按方向键来选择不同的系统服务,按Space(空格)键设置服务的默认启动状态([*]表示启动, “[]”表示关闭),如果要查看所选定服务的说明信息,按F1键可以获取帮助
(2)使用systemctl
systemctl工具与ntsysv的功能类似,但是systemctl不提供交互式的操作界面,它用于查询或设置系统服务的默认启动状态,当需要设置某一个服务在当前运行目标中的默认启动状态时,使用systemetl工具会更有效率
常用的选项有三种
enable:开机自动启动
disable:开机自动关闭
is-enable:查看开机启动状态
在当前系统下执行“systemctl list-units --type=service”命令可以查看当前系统中所有已激活的系统服务
二、服务管理
1、防火墙与核心防护
通常情况下不建议关闭防火墙与核心防护
防火墙操作
systemctl status firewalld.service 查看防火墙状态
systemctl stop firewalld 关闭防火墙
systemctl start firewalld 开启防火墙
systemctl disable firewalld 开机自动关闭防火墙
systemctl enable firewalld 开机自动启动防火墙
核心防护操作
setenforce 0 临时关闭Selinux防护,重启或关机后失效 vim /etc/sysconfig/selinux 打开selinux文件"修改SELINUX=disable"保存退出,永久关闭Selinux防护 vim /etc/selinux/config 打开config文件"修改SELINUX=disable"保存退出,永久关闭Selinux防护
2、时间管理
安装ntpdate服务
yum -y install ntp ntpdate
设置与网络时间同步
ntpdate 时间服务器(ntp1.aliyun.com ,time.nist.gov,time.nuri.net)
hwclock --systohc 将系统时间写入硬件(BIOS)
timedatectl 查看系统时间
date 查看Centos的当前系统时间命令
3、SSH服务
SSH是较可靠的专为远程登录会话和其他网络服务提供安全性的协议,利用SSH协议可以有效防止远程管理过程中的信息泄露问题,可通过建立SSH连接来远程管理Linux,开启SSH方法如下
vim /etc/ssh/sshd_config
去掉PasswordAuthentication前边的#号,将后面修改为yes
service ssh start 启动SSH服务
netstat -anptu | grep sshd 查看服务进程状态
service ssh status 验证SSH服务状态
update-rc.d ssh enable 设置SSH开机自启
结语
不同的target代表系统不同的运行状态,所启用的服务或程序也不一样,例如,对于互联网中的网站、电子邮件等服务器来说,只需要运行在文本模式就可以了,无须启用图形桌面程序