服务和网络 管理 init ifcfg ens33
1.服务:
Linux系统中提供的功能,统称为服务,如:at服务、cron服务、web服务、FTP服务、sshd服务等。
服务是由已经在运行的进程提供的(应用程序时用户使用时自己启动),
对这些提供服务的应用程序的管理,如查看、启动、停止等就是服务管理。
Linux系统可以提供很多服务。对于大多数Linux的使用者,不会使用全部的服务, 因此,Linux对这些服务进行了综合整理、划分,结合Linux系统的运行状态,定义了运行级别。不同的运行级别,Linux系统的运行状态不同,默认提供的服务也不同。
2.Linux支持7中运行级别 关机 单多用户 完全 自定义 图形,重启级别
0 ---关机级别 不提供任何服务
1 ---单用户级别,仅root可登录,用于系统修复、安防,相当于windows的安全模式。 仅提供很少必要的系统管理的服务。
2 ---多用户级别,允许所有系统用户登录,但是只支持有限的网络服务。提供部分网络服务
3 ---完全级别,允许所有系统用户登录,支持网络,运行于字符界面。 提供网络服务,但不提供图形服务
4 ---自定义级别,用于研发,一般不用
5 ---图形界面,GUI系统的默认级别 提供网络服务,提供图形服务
6 ---重启级别
3..CentOS6模式及之前的服务管理
Linux系统的运行级别管理及服务管理,在CentOS6(包括)之前是一种模式,这种模式和其它Unix系统相同,被称为传统模式。这种模式是从Unix诞生确立直到目前其他的Unix系统相同依然在采用。CentOS7之后才用了新的模式。
CentOS6模式:
1.服务管理模式:init 方式060
1、系统启动后,Linux核心会首先调用init初始化程序,init再启动其它程序。init会首先读/etc/inittab文件,根据该文件的内容确定默认的运行级别,启动符合运行级别的服务。以下内容是/etc/inittab文件中唯一一行内容:
id:3:initdefault:
2、得到默认的运行级别后,init还会读或运行其他的配置文件,在这些文件中,还会设置其他的功能,典型的如多系统控制台和组合键重启功。
3、多系统控制台是指Linux在字符界面控制台时支持6个终端登录界面,终端编号为 tty1-tty6,使用alt+F1-F6 组合键切换终端(提示:w命令可以查看已登录的用户信息);组合键重启功是指ctrl+alt+del组合键会使linux系统重新启动。
4、init继续其动作就会根据得到的默认运行级别在/etc目录下找到rc.N目录(N为数字,对应运行级别)。譬如,默认级别是3,则会找rc.3目录。/etc目录下存在6个rc.N目录,在各rc.N目录下,存在的文件有相同的特征,文件名都以K或S开头,其后跟随数字,然后是服务名。
5、K表示该文件代表的服务在系统运行级别启动或转换到该级别时该服务要中止,即该服务程序要停止运行;S表示服务要启动(提示,K、S不表示服务的当前状态,只表示系统在启动时或转换到该级别时服务启动或终止,之后服务的状态就和此文件无关了)。
6、数字及表示启动或停止的顺序,小数字表示先进行,大数字表示后进行。数字从00到99,数字相同,按之后的名字中的字母确定顺序。
7、rc.N目录下的文件,还都是软链接文件,源文件保存在/etc/rc.d/init.d目录下。
8、 /etc/rc.d/init.d目录下的文件都是文本文件,是bash可以运行的shell程序文件。这些文件可以对提供服务的二进制运行程序进行控制,可以启动、停止、重行启动程序及显示程序状态,因此这些shell程序可以称为服务管理程序,这些文件又叫服务管理文件。
9、采用上述的方式,系统可以实现对服务的自动管理,系统启动,某些服务自动启动,系统关闭,服务自动关闭,运行级别切换,服务自动启动或停止。
10、在/etc/rc.d/init.d目录下没有管理程序的服务程序,或在/etc/rc.d/init.d目录下有管理程序,但在rc.N目录下没有链接文件的服务程序。不能使用Linux的服务管理手段自动管理该服务。
11、/etc/rc.d/init.d目录下的文件是在软件安装时安装的,也可以自己编写shell程序创建。
2.级别切换init
CentOS6模式下,运行级别的转换命令是init:
#init N --X是数字,表示级别,级别转换时,系统控制台会出现信息提示。
注:GUI系统下,支持字符、图形的互换;基础设置服务器系统,仅安装了字符界面,未安装GUI,所以字符无法切换到图形下,但级别会切换
查看当前的运行级别,使用runlevel命令:
# runlevel
输出:
N M --N M 是数字,M表示当前的运行级别,N表示切换到M级别前的运行级别,默认系统运行级别时,第一个数字就显示“N”
例:
#runlevel
N 3 --当前运行级别3,是系统默认的系统级别。
#init 2 --装换到运行级别2
#runlevel
3 2 --当前运行级别2,是从级别3转换而来。
#init 5
#runlevel
3 5 --转换成功,但没有图形(图形只能在系统控制台)
3.服务管理:
服务管理2个命令: chkconfig service
chkconfig
service
chkconfig命令用于显示和控制/etc/rc.N目录下的文件的存在与名字转换,也就是即控制服务在系统启动和运行级别转换时启动或停止。它用不同的选项参数实现不同的功能。
chkconfig --list [服务名] --显示当前各服务或指定服务在各级别的状态,服务名即为/etc/rc.d/init.d/目录下的文件名。
显示结果:
#sysstat 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭
英文显示:
#sysstat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
格式说明: 第一列是服务名,其它字段中,数字表示各级别,"关闭"或“on”表示服务在进入该级别时启动,“启用”或“off”表示进入该级别时停止。
chkconfig可以在rc.N目录中增加或删除文件。
chkconfig --del 服务名 --删除服务,在所有的rc.N目录中删除服务相关的文件,系统不能自动管理该服务。 只修改rc.N目录,对/etc/rc.d/init.d目录没有影响。 --list选项时没有显示
chkconfig --add 服务名 -- 系统增加对指定服务的自动管理,服务名由/etc/rc.d/init.d目录下的文件名定义。
命令实质是在rc.N目录下创建软连接文件,文件名有服务名前加S或K及数字前缀。
在不同rc.N目录下的数字及K或S在/etc/rc.d/init.d目录下的shell程序内部已定义好。
--list选项显示出来
chkconfig命令还可以对指定的服务(--list选项能显示的服务)在各运行级别的启动或停止设置
chkconfig --level n..n 服务名 on |off --n..n 1个或多个运行级别的数字,最多6个,0~6,一般只对2~5级别修改
on表示指定服务在对应的级别启动,off表示对应的级别停止。
例:
chkconfig --add crond
chkconfig --list crond
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
chkongfig --level 24 crond off
chkconfig --list crond
crond 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:启用 6:关闭
chkconfig --del crond
chkconfig --list crond
输出空行
4.服务当前状态管理: 启动停止 status状态
chkconfig命令只能对服务程序在系统启动或系统运行级别转换时的启动、停止进行管理。不能对服务当前状态管理。服务当前状态使用service命令或/etc/rc.d/init.d/目录下的服务控制程序管理。
格式:
service 服务名 [命令]
服务名是/etc/rc.d/init.d/目录下的管理程序文件名,命令可以缺失,缺失时是使用方法帮助,显示可以使用的命令 。命令可以是start stop restart status等,表示服务的启动、停止、重启和状态查询。
例:
service sshd status
显示:openssh-daemon (pid 917) 正在运行...
ps -e |grep sshd|grep -v grep --查看sshd进程
显示: root 917 1 0 19:12 ? 00:00:00 /usr/sbin/sshd--sshd进程在运行,PID号917
service sshd stop
显示:停止 sshd:[确定]
ps -e |grep sshd|grep -v grep
显示:
service sshd status查看sshd的状态
显示:openssh-daemon 已停
service sshd start
显示:正在启动 sshd: [确定]
4.CentOS7:
1.systemd代替init
CentOS7及之后的版本(实质是linux的3.0版本后,之前的CentOS版本,如6、5用的都是2版本的核心)对系统管理方式及服务管理的方式作了重大调整,使用系统后台进程systemd管理系统和服务。systemd的功能强大,既可以对linux的系统进行管理,也可以管理服务。
systemd代替了传统方式中的init程序。在系统启动时,Linux核心到内存运行后,调用systemd,之后由systemd管理各方面。所以,systemd是linux系统的第一个系统进程,PID为1,其它进程都是它的子进程
systemd是一个服务程序,但它不能被人为管理,系统管理只能被动使用它提供的功能。Linux提供了丰富的命令来使用systemd的功能。较常用的命令是systemctl和journalctl命令。
systemd设计时,考虑到人们的使用习惯,向前兼容了init的功能,同时,还具有更先进的功能,譬如系统引导时并行启动系统服务、按需激活守护进程以及基于依赖的服务控制逻辑等。
2.systemd的设计思想:
systemd定义了成为systemd unit——systemd单元的概念,systemd单元是Linux系统中存在的文件,根据管理的目的不同,划分为不同的类型,不同的类型用不同的文件后缀表示,如服务,就用“服务名.service“的文件表示。下述是部分systemd单元的类型:
systemd单元类型 |
后缀名 |
描述 |
服务单元 |
.service |
表示服务 |
目标单元 |
.target |
单元组,包括一个或多个单元 |
设备单元 |
.device |
Linux核心识别出来的设备文件 |
路径单元 |
.path |
文件系统内的文件或目录 |
这些带后缀名的文件的格式是systemd能识别的格式,
存放在三个目录下:
/etc/systemd/system
/run/systemd/system
/usr/lib/systemd/system
这三个目录中的/etc/systemd/system目录下的文件,优先级最高,是使用命令systemctl enable增加的软链接文件以及为扩展服务增加的单元文件;
其次是/run/systemd/system目录下的文件,是在系统运行时创建的单元文件;
优先级最低的是/usr/lib/systemd/system目录下的文件,是由安装动作(如rpm安装软件)创建的。
5.运行级别
CentOS7中大大淡化了原有的运行级别的概念,而是采用“目标”(target)将多个服务组成一组启动。但systemd保留了和原来传统的运行级别的兼容性,查看/etc/systemd/system目录或/usr/lib/systemd/system目录下,存在下述目标:
runlevelN.target --N为数字0~6,对应7个运行级别。
default.target --系统缺省启动后的目标
multi-user.target --字符界面的运行目标
graphical.target --图形界面运行目标
1.systemd查看和更改
/etc/systemd/system/default.target->/usr/lib/systemd/system/multi-user.target
文件表示缺省的运行状态。该文件是一个软链接文件,修改此软链接,就可以修改缺省启动运行目标。查看、修改缺省的运行状态都使用systemctl命令,但CentOS7保留了兼容传统方式的命令,因此,象init X命令、 runlevel命令。
systemctl get-default ---查看系统的缺省级别
systemctl set-default multi-user.target ---设置启动缺省级别,
multi-user.target字符界面3级别 graphical.target图形界面
systemctl isoalte runlevel1 --设置当前系统级别为单用户1
修改缺省的启动目标,可以采用手动,但强烈不建议使用手动。
2.查看全部激活的目标:
systemctl list-units --type target
UNIT: 单元名,这里是目标名
LOAD:目标的定义、设置等已被systemd读取,并装载到systemd,systemd会按照这些定义、配置管理目标,对目标定义、配置参数的修改,对当前目标状态没有影响,必须重新装载。
ACTIVE:本目标所依赖的上一级单元的激活状态,上一级为非激活时,本目标不能激活。
SUB:依赖本目标的下一级单元的激活状态。
DESCRIPTION: 目标描述
3.查看所有目标包括未激活
systemctl list-units --type target --all 列出所有的目标
systemctl isolate runlevel3 切换运行目标
6.Centos7服务管理:
服务是单元的类别,对服务的管理也使用systemctl命令
1.查看单元及服务
systemctl list-units显示所有激活的单元:
systemctl list-units -all显示所有的单元:
systemctl list-units --type service显示所有激活的服务:
systemctl list-units --type service --all显示所有的服务:
小贴士:
所有systemctl命令缺省的显示都是激活的对象,显示所有的对象,最后要加 --all选项。
2.查看单元文件及服务文件
显示所有的单元文件
systemctl list-unit-files
显示格式:
UNIT FILE: 单元文件名
STATE: 单元的状态
enable:系统引导时自动启动
disable:开机关闭
static: 系统必备服务,不存在启动关闭的情形
显示所有的服务文件:
systemctl list-unit-files --type service
7.使用systemctl管理服务:
1.命令格式:
systemctl 命令 服务名[.service]
其中 “命令” 为:
start/stop/restart(重启)/status(查看)/ enable/diable--系统启动时的状态
“服务名[.service]”为显示命令中显示的服务。
也是/usr/lib/systemd/system目录下的以.service为后缀的文件名。
.service后缀可省略
2.命令的详细解释:
enable | disable只影响服务在系统启动或目标切换时是否启动,对服务的当前状态没有影响。
start | stop | restart | status影响服务的当前状态。
enable: 设置服务在系统启动或转换到当前目标时启动,实质是在/etc/systemd/system/指定缺省目标.wants目录下创建软 链接指向真是存在的服务文件。
例如:
systemctl enable crond
显示:
Createdsymlinkfrom/etc/systemd/system/multi-user.target.wants/crond.serviceto /usr/lib/systemd/system/crond.service. 说明:当前的目标为multi-user.target
disable: 取消服务在系统启动或转换到当前目标时启动,也就是取消软链接。
例如:
systemctl disbale crond
显示:
Removedsymlink /etc/systemd/system/multi-user.target.wants/crond.service.
启动、关闭服务的示例:
systemctl stop crond ---关闭服务 之后使用ps命令查看进程发现crond进程不存在。
systemctl start crond ---启动服务,之后使用ps命令查看进程发现crond进程存在。
systemctl restart crond ---重启服务
显示服务的状态:
systemctl status crond ---查看服务的当前状态
提高:
手动修改一般只用于故障解决,手动修改缺省启动目标:
ln -sf /usr/lib/systemd/system/ runlevel1.target /etc/systemd/system/default.target
注:将缺省的启动级别修改为单用户。
8.开机级别原理
1.开机级别配置文件:
/etc/systemd/system/default.target,这是一个软链接文件,它指向谁,谁就是开机级别该文件指向的都是/usr/lib/systemd/system/下的.target文件
ln -sf /usr/lib/systemd/system/reboot.target/etc/systemd/system/default.target 手动改软链接,实现设置开机级别
RHEL7.0之前版本系统级别
vi /etc/inittab ---编辑开机级别文件,改里面的数字
如:
id:3:initdefault:
2.开机启动服务的原理
自动启动的服务,
会在/etc/systemd/system/multi-user.target.wants/中建立软链接,指向/usr/lib/systemd/system/的进程文件
即/etc/systemd/system/multi-user.target.wants/的软链接指向谁,谁就是开机启动状态
如:
ln-s/usr/lib/systemd/system/crond.service/etc/systemd/system/multi-user.target.wants/crond.service
---手动创建软链接,实现服务的开机自动启动
注:
不管是GUI图形界面还纯字符界面,开机自动启动的服务软链接,都在/etc/systemd/system/multi-user.target.wants/中
说明:
/etc/systemd/system/multi-user.target.wants/中的软链接,GUI图形界面和纯字符界面都生效
/etc/systemd/system/graphical.target.wants/中软链接,仅在图形界面下生效
3.开机顺序
主板bios加电自检=>读取磁盘的MBR=>读取、激活引导程序(grub、lilo)=>加载、激活系统内核(kernal)=>激活系统启动程序(/boot中的镜像)
=>激活系统根进程systemd=>读取/etc/fstab,挂载文件系统=>读取默认开机级别文件,启动相应级别,启动服务
=>login登录(验证/etc/passwd、/etc/shadow)=>shell(伴随环境变量生效)
4.RHEL7.0之前版本服务的原理
在/etc/rc.d/下有7个目录分别是:rc0.d - rc6.d ,对应七个运行级别
每个目录中,如: rc3.d中,会有以S开头的软链接,表示开机时运行的进程,以K开头的软链接,表示关机时运行的进程
这些软链接全部指向了/etc/rc.d/init.d/中系统服务进程
9.计划任务cron(crond服务)
1.功能和格式
功能:周期性,循环执行进程--指定时间和频率来完成指定的任务
crontab -e ---编辑计划任务,回车后,进入vi编辑界面
格式: 分 时 日 月 周 命令的绝对路径
例:
00 01 * * * /usr/sbin/reboot ---每天
00 01 * * 1 /usr/sbin/reboot ---每周,周一到周日数字表示:1234560
00 14 1 * * /usr/bin/rm -rf /tmp/* ---每月清理一次垃圾,即临时文件
00 01 * * 1-5 /usr/sbin/reboot ---每周一到周五
00 14 1 1,4,7,10 * /usr/bin/rm -rf /tmp/* ---每三个月
00 14 */3 * * /mnt/dfMonitor.sh ---每三天,用 */数字 表示间隔频率
crontab -l ---查看本用户的计划任务
crontab -r ---删除本用户的计划任务
crontab -e -u zhang --- -u 编辑指定用户的计划任务
2.功能、格式
crond --指定时间和频率来完成指定的任务
分 时 日 月 星期 如果是*表示每星期每月每日每时每分都这样
分 1,5 --整点的第一分钟和第五分钟不超过59
0-12 --整点到12分
0-10/2 --整点开始到10分每次隔两分钟
0-10/2,15,20-59/10 --整点开始到10分每次隔两分钟,第15分钟,从20分钟开始每隔10分钟到59分钟(不够到整点)
5,,5 10 12 4-8 3 4月到8月的12号是星期三
3.计划任务记录文件
/var/spool/cron/下,以用户名命名的文件
说明:crontab -t 实质是cat查看的这个文件,crontab -r 实质是rm 删除的这个文件,crontab -e 实质是vi编辑这个文件
4.用户管理文件:
/etc/cron.deny(默认存在,且为空) /etc/cron.allow(默认不存在)
二者的功能、关系与at.deny、at.allow完全一样
10.sshd服务
sshd服务是用于管理远程连接的服务,是进行远程加密传输的一组协议。
11.网络 网卡管理配置的重启、注销原因
linux系统、记录配置信息的配置文件,都存放于计算机的磁盘上,开机时,会从磁盘上读取系统程序及配置文件,到内存中执行
手动输入的命令,生效于内存,并未更改磁盘上的配置文件,所以当关机、注销后清理内存,则配置失效
若要配置永久生效,则需手动更改磁盘上的配置文件
1..网卡命名:
6(包括)以前:
eth0 eth1 ...... ethN 以太网卡
wlan0 wlan1 ...... wlanN 无线网卡
7及以后:
en wl ww
缺省根据固件(firmware)、支持的拓扑结构、计算机上的位置来区分。命名比较复杂。
命名方案结构:
方案1: eno1 --en 以太网 o on-board 嵌在主板上 1 BIOS提供的顺序
方案2: ens1 --en 以太网 s PCI 插槽 1 插槽位置 1
方案3: enp0s3 -- en 以太网 p 物理 0 位置 s 接头 3 位置
方案4: enx78e7d1ea46da --en 以太网 x8e7d1ea46da MAC地址 ---缺省不用,除非用户选择使用这种方式。
方案5: eth0
优先级 1 2 3 5 递减
12.网卡配置文件 ifcfg ens33
网卡没有配置时,是无法正常使用的,配置网卡的设置,有各种方式,可以使用NetworkManager的应用程序,nmcli nmtui等工具,也可以直接创建配置文件。使用配置文件,还可以为网卡命名。
在网卡的配置文件中,UUID的值是由uuidgen命令产生的。
uuidgen 网卡名
复制输出的值到配置文件,这就是网卡的UUID。
修改网卡的配置后,要重新启动网络服务network
网卡配置文件
/etc/sysconfig/network-script/ifcfg-网卡:
TYPE=Ethernet --网卡类型
BOOTPROTO=none --启动时的协议: none static dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33 --网卡名字
UUID=7fdcf7c1-942c-4690-b86e-e1f914e291e6 --网卡UUID
DEVICE=ens33 --设备名字
ONBOOT=yes --是否在系统启动时激活
IPADDR=192.168.100.73 --IP地址
PREFIX=24 --子网掩码
IPV6_PRIVACY=no
HWADDR=xx:xx:xx:xx:xx:xx --物理(MAC)地址
GATEWAY=xxx.xxx.xxx.xxx --缺省网关
网卡没有配置时,是无法正常使用的,配置网卡的设置,有各种方式,可以使用NetworkManager的应用程序,nmcli nmtui等工具,也可以直接创建配置文件。使用配置文件,还可以为网卡命名。
在网卡的配置文件中,UUID的值是由uuidgen命令产生的。
uuidgen 网卡名
复制输出的值到配置文件,这就是网卡的UUID。
修改网卡的配置后,要重新启动网络服务network