11.1 启动过程
进程管理:kernel+process
CPU:ring0:内核空间 ring1-2:库文件等 ring3:用户空间
CPU读取的数据都来自内存
内存:内核空间和用户空间,RAM:易失性存储器
PC:Linux启动过程:
- POST (加电自检(PowerOnSelfTest))—-> BIOS(基本输入输出系统:Basic Input Output System:硬件信息;Boot Sequence :启动顺序)—-> MBR(主引导记录;446字节BootLoader)—-> 启动菜单(Linux启动菜单:GRUB)—-> kernel —-> initramfs(虚拟根文件系统) —-> /sbin/init
kernel作用:(驱动和检测系统外围硬件或程序)文件系统、安全管理、网络管理、进程管理、驱动程序
内核设计:
单内核:把所有的功能都集成到内核中去
- Linux使用单内核,模块化设计 /lib /lib64
/lib/modules/‘内核版本号为名称的目录’/kernel/ :内核模块
- arch:平台架构相关
- crypto:安全加密
- drivers:驱动程序
- fs:文件系统
- kernel:内核
- lib:内核库(.ko)
- mm:memory mangement 内存管理
- net:系统中TCP/IP协议栈
- sound:声卡
- modules.dep:解决系统依赖关系
- 微内核:把每一个功能都做成小模块 (Windows 、Solaris)
/boot/initramfs:centos 6,虚拟根文件系统,把 /sys /dev /proc目录复制到根文件系统
/boot/initrd:centos 5
Linux运行级别:0-6
- 0:halt关机
- 1:单用户模式(root,无须登录),single,维护模式;
- 2:多用户模式,会启动网络功能,但不会启动NFS;维护模式;
- 3: 多用户模式,正常模式;文本界面;
- 4:预留级别;
- 5:多用户模式,正常模式;图形界面:GUI
- 6:重启
chroot:改变根文件系统目录
ldd:查看二进制文件所依赖的库文件
11.2 GRUB
BootLoader:MBR(位于磁盘中0磁道0柱面,512字节),后安装系统的BootLoader会覆盖前一系统的BootLoader,安装双系统时,先安装Linux,再安装Windows
Windows:不允许其他系统引导,也不引导其他系统
Linux:GRUB:默认的BootLoader
GRUB配置文件 :/boot/grub/grub.conf 的解释
default=0 //默认引导系统
timeout=5 //GRUB引导系统超时时间
splashimage=(hd0,0)/grub/splash.xpm.gz //引导系统时的图片
hiddenmenu
title CentOS 6 (2.6.32-642.el6.x86_64)
//系统title以及在grub中显示是名称
root (hd0,0) //根所在的位置
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=ef361140-6306-423c-90f0-63a93c664f96 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto EYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-642.el6.x86_64.img
//解释:
//kernel /vmlinuz-2.6.32-220.el6.x86_64 :制定内核文件的位置
//ro: 刚开始以只读方式挂载根文件系统
//root=UUID=ef361140-6306-423c-90f0-63a93c664f96 : root根 分区设备位置
//rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD: 为了加速引导启动进程,可以指定磁盘是否加密、语言环境、不启用LVM、RAID、键盘等等,节省dracut查找的时间
//SYSFONT=latarcyrheb-sun16 KEYTABLE=us: 对于有加密磁盘的系统启动,可以指定键盘规格和字体显示等
//quiet:启动过程中只有重要信息显示,类似硬件自检的消息不回显示
//rhgb: RedHat graphics boot,就是会看到图片来代替启动过程中显示的文本信息,这些信息在启动后用dmesg也可以看到
GRUB分阶段启动:
- stage1:第一阶段,位于BootLoader,为了引导第二阶段
- stage1_5:识别文件系统
- stage2:加载启动设置等等,读取配置文件/boot/grub/grub.conf
GRUB修复:(使用光盘启动(BIOS调启动顺序),选择救援模式)
# chroot /mnt/sysimage
# grub-install --root-directory=/ /dev/sda
//注意:此处写/,是因为boot是一个独立的分区,如果没有独立,就应该写绝对路径,例如 /boot/,/dev/sda是指定第一块磁盘
# grub
grub> root (hd0,0) //磁盘0扇区,0柱面
grub> setup (hd0)
grub> quit
# vi /boot/grub/grub.conf //准备(自己写)这个文件,内容及格式与上面的一样
# reboot //前面的做完了就重启,注意在BIOS中调一下启动顺序
为GRUB启动菜单添加密码:
# grub-crypto --sha-512 //生成加密密码
# vim /boot/grub/grub.conf //在这个文件中hidden menu那一行下添加一行:
password --encryped 密文 //因为是sha加密,所以使用--encryped,如果是md5加密,应该使用 --md5 密文
为系统添加启动密码:
# grub-md5-crypto //生成加密密码
# vim /boot/grub/grub.conf //在这个文件中title那一行下添加一行:
password --md5 密文 //因为是md5加密,所以使用--md5
11.3 kernel、centos6—-upstart init
Linux内核与内核模块相关文件及位置:
- 内核: /boot/ vmlinuz-version
- initramfs : /boot/ initramfs-kernel_version
- 内核模块: /lib/modules/kernel_version/kernel
- 内核源码:/usr/src/kernels/kernel_version
- 内核版本:/proc/version
- 系统内核功能:/proc/sys/kernel/
Linux关于内核的命令:
lsmod:查看系统中加载的内核模块
- 结果解释:
- module:模块名称
- size:模块大小
- userd by:此模块是否被其他模块使用(依赖关系)
depmod :更新模块的依赖关系并创建依赖关系文件
- /lib/modules/kernel_version/modules.dep:解决依赖关系的文件
- -A :查找比/lib/modules/kernel_version/modules.dep新的模块,如果有,才会更新,并写入该文件
- -n:不写入依赖关系,直接输出到屏幕上
- -e:显示当前系统中已经加载的但不可执行的模块名称
modinfo:查看模块的信息
- modinfo modules_name
insmod:加载模块
- insmod modules_name_full_path
rmmod:删除模块
- rmmod 模块名称
modprobe:加载删除模块
- -c:列出目前系统中所有的模块
- -l:列出/1ib/modules/2.6.32-642.e16. x86_64/kernel当中所有模块的完整文件名
- -f:强制加载
- -r:删除某个模块,类似于rmmod
Linux内核模块额外的参数设置目录: /etc/modprobe .d/
Linux启动时所用的重要的目录:/etc/sysconfig
init:
upstart:CentOS 6:采用时间驱动(event driven),把功能并行执行
CentOS6上面Upstart大致的一个启动过程:
1.内核启动init,读取配置文件,在CentOS 6中只定义了运行级别
2.系统初始化:( /etc/init/rcS.conf exec /etc/rc.d/rc.sysinit )
3. init找到/etc/inittab文件,确定默认的运行级别(X) ( /etc/init/rcS.conf exec telinit$runlevel)
4.触发相应的runleve1事件(/etc/init/rc.conf exec /etc/rc.d/rc $RUNLEVEL)
5.开始运行/etc/rc.d/rc,传入参数X
6./etc/rc.d/rc脚本进行一系列设置,最后运行相应的/etc/rcX. d/中的脚本
7./etc/rcX.d/中的脚本按事先设定的优先级依次启动
8.最后执行/etc/rc.d/rc.local
9.加载终端或X-Window接口
/etc/init目录:定义了系统初始化的配置文件
/proc/cmdline : 系统内核设置的参数
/etc/rc.d/rc.sysinit : 系统初始化主要配置文件
/etc/init/rc . conf:sysv运行级别
/etc/rc.d/存放每个运行级别所需要的服务,比如/etc/rc.d/rc3.d/目录定义的运行级别3所需要的服务
命名:
K+数字+服务名
S+数字+服务名
K:kill结束进程
S:start开启服务
数字:代表启动的优先级
/etc/rc.d/rc.local:系统启动加载的最后一个脚本(用户的脚本)
sys v init chkconfig : 定义系统服务在每个级别的运行状态
—list:查看系统中所有服务的状态
chkconfig —level 2345 httpd on
chkconfig —level 2345 httpd off
upstart : initctl
服务分类:
独立服务:应用程序自己控制
超级服务:依赖于xineted进程来管理
控制服务:service service_name start | stop | restart | reload | status
11.4 CentOS系统详解—-systemd
systemd特性:
- 平行处理所有服务,加速开机流程:旧的init启动脚本是一项一项任务依序启动的模式,因此不相依的服务也是得要一个一个的等待。systemd可以让所有的服务同时启动,因此系统启动的速度变快了
- 一经要求就回应的on-demand启动方式:
systemd全部就是仅有一只systemd服务搭配systemctl指令来处理,无须其他额外的指令来支援。不像systemV还要init, chkconfig, service…等等指令.此外,systemd由于常驻存储器,因此任何要求(on-demand)都可以立即处理后续的daemon启动的任务
- 服务相依性的自我检查:
由于systemd可以自订服务相依性的检查,因此如果B服务是架构在A服务上面启动的,那当你在没有启动A服务的情况下仅手动启动B服务时,systemd会自动帮你启动A服务!
- 按照daemon功能分类:
systemd管理的服务非常多,首先systemd先定义所有的服务为一个服务单位(unit),并将该unit归类到不同的服务类型(type)去。systemd将服务单位(unit)区分为service, socket , target , path, snapshot, timer等多种不同的类型(type),方便管理员的分类与记忆
- 将多个daemons集合成为一个群组:
如同systemV的init里头有个runlevel的特色,systemd亦将许多的功能集合成为一个所谓的target项目,这个项目主要在设计操作环境的建置,所以是集合了许多的daemons,也就是执行某个target就是执行好多个daemon的意思!
- 向下兼容旧有的init服务脚本:基本上,systemd是可以兼容于init的启动脚本的,因此,旧的init启动脚本也能够透过systemd来管理,只是更进阶的systemd功能就没有办法支援就是了
- systemd有些地方无法完全取代init!包括:在runlevel的对应上,大概仅有runlevel1,3,5有对应到systemd的某些target类型而已,没有全部对应;
- 全部的systemd都用systemctl这个管理程序管理,而systemctl支援的语法有限制,不像/etc/init.d/ daemon就是纯脚本可以自订参数,systemctl不可自订参数;
Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。Systemd是一个系统管理守护进程、工具和库的集合,用于取代SystemV初始进程。
Systemd的功能是用于集中管理和配置类UNIX系统.
在L inux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个
发行版尚未部署.Systemd通常是所有其它守护进程的父进程,但并非总是如此.
11.4.1 CentOS 7 启动流程
- 在内核载入完毕、进行完硬件侦测与驱动程序载入后,内核会启动第一个进程systemd,systemd最主要的功能就是准备软件执行的环境,包括系统的主机名称、网络设定、语言设置、文件系统及其他服务的启动。而 所有的动作都会通过systemd 的预设启动服务集合/etc/systemd/system/default.target设定。另外, systemd 已经舍弃沿用多年的system V的runlevel !
- 常见的操作环境target 与兼容于runlevel 的等级可以作为预设的操作环境(default. target)的主要项目有: multi-user.target 以及graphical.target这两个。当然还有rescue.target, emergency.target, shutdown.target等等,以及initrd.target!但是过去的systemV 使用的是一个称为runlevel (执行等级)的概念来启动系统的,systemd 为了兼容于旧式的systemV 操作行为,所以也将runlevel与操作环境做个结合!你可以使用底下的方式来查询两者间的对应关系
# 11 -d /usr/lib/systemd/system/runlevel*.target
# yum -y install bash-completion //可以补齐参数或选项
# systemctl list-dependencies graphical.target //查看启动依赖关系
# systemctl list-dependencies multi-user.target //查看字符界面依赖关系
sysinit. target完成的功能:
- 特殊文件系统装置的挂载:包括dev- hugepages . mount dev -mqueue . mount等挂载服务,主要在挂载跟巨量存储器分页使用与讯息队列的功能。挂载成功后,会在 /dev底下建立/dev/hugepages/ ,/dev/mqueue/ 等目录;
- 特殊档案系统的启用:包括磁碟阵列、网络磁碟(iscsi)、 LVM档案系统、档案系统对照服务(multipath) 等等,也会在这里被侦测与使用到!
- 开机过程的讯息传递与动画执行:使用plymouthd 服务搭配plymouth指令来传递动画与讯息
- 日志式登录档的使用:就是systemd- journald这个服务的启用啊!
- 载入额外的核心模块:透过/etc/modules -load . d/*.conf档案的设定,让核心额外载入管理员所需要的核心模块!
- 载入额外的核心参数设定:包括/etc/sysctl.conf以及/etc/sysctl.d/*.conf内部设定!
- 启动系统的随机数产生器:随机数产生器可以帮助系统进行一些密码加密演算的功能
- 设定终端机(console) 字形
- 启动动态装置管理员:就是udevd
与sys V兼容的rc.local操作:
# chmod +X /etc/rc.d/rc.local
# systemctl start rc-local
# systemctl enable rc-local
unit分类:
.service:一般服务类型(serviceunit):主要是系统服务,包括服务器本身所需要的本机服务以及网络服务
.socket:套接字(socketunit):主要是IPC (Inter-processcommunication)的传输讯息(socketfile)功能.这种类型的服务通常在监控讯息传递的套接字,当有透过此套接字传递讯息来说要连结服务时,就依据当时的状态将该用户的要求传送到对应的daemon,若daemon尚未启动,则启动该daemon后再传送用户的要求.
.target :执行环境类型(targetunit)
.mount :文件系统挂载相关的服务( automountunit/mountunit):例如来自网络的自动挂载、NFS档案系统挂载等与档案系统相关性较高的程序管理.
.path:侦测特定档案或目录类型(pathunit):某些服务需要侦测某些特定的目录来提供队列服务,例如最常见的打印服务,就是透过侦测打印队列目录来启动打印功能!
.timer:循环执行的服务(timerunit) :这个东西有点类似anacrontab !不过是由systemd主动提供的,比anacrontab更加有弹性!
与systemd的daemon运作过程相关的目录简介:
1./usr/lib/systemd/system/:使用CentoS官方提供的软件安装后,预设的启动脚本设定档都放在这里
2./run/systemd/system/ :系统执行过程中所产生的服务脚本,这些脚本的优先序要比/usr/lib/ systemd/system/高!
3./etc/systemd/ system/:管理员依据主机系统的需求所建立的执行脚本,其实这个目录有点像以前/etc/rc.d/rc5.d/Sxx之类的功能!执行优先序又比/run/systemd/system/高!
4./etc/sysconfig/*:几乎所有的服务都会将初始化的一些选项设定写入到这个目录下,举例来说,mandb所要更新的manpage索引中,需要加入的参数就写入到此目录下的man-db当中!而网络的设定则写在/etc/sysconfig/network -scripts/这个目录内
5./var/lib/ :一些会产生资料的服务都会将他的资料写入到/var/lib/目录中.举例来说,数据库管理系统Mariadb的数据库预设就是写入/var/lib/mysql/这个目录下!
6./run/:放置了好多daemon的暂存档,包括lockfile以及PIDfile等等.
systemctl项目简介:
cat /usr/lib/systemd/system/sshd.service
.service大概能够将整个设定分为三个部份,就是:
[Unit]:unit本身的说明,以及与其他相依赖daemon的设定,包括在什么服务之后才启动此unit之类的设定值;
[Service], [Socket], [Timer], [Mount], [Path]..:不同的unit type就得要使用相对应的设定项目.我们拿的是sshd . service来当模板,,所以这边就使用Service来设定.这个项目内主要在规范服务启动的脚本、环境设定档档名、重新启动的方式等等,
[Install]:这个项目就是将此unit安装到哪个target里面去的意思!
至于设定档内有些设定规则还是得要说明一下:
设定项目通常是可以重复的,例如我可以重复设定两个After在设定档中,不过,后面的设定会取代前面的!因此,如果你想要将设定值归零,可以使用类似[After=」的设定,亦即该项目的等号后面什么都没有,,就将该设定归零了(reset).
如果设定参数需要有「是/否」 的项目(布尔值,boolean),你可以使用1,yes,true,on代表启动,用0,no,false,off代表关闭!
空白行、开头为#或;的那一行,都代表注解!
Unit部分说明:
Description :服务的描述信息
Documentation :提供给管理员的一些帮助文档!提供的文件可以是如下的格式:Documentation=http://www.. .. Documentat ion=man : sshd(8 )Documentation=file:/etc/ssh/sshd_ config
After :说明此unit是在哪个daemon启动之后才启动的意思!基本上仅是说明服务启动的顺序而已,并没有强制要求里头的服务一定要启动后此unit才能启动。以sshd.service的内容为例,该服务提到After后面有network.target以及sshd-keygen.service,但是若这两个unit没有启动而强制启动sshd.service的话,那么sshd.service应该还是能够启动的!这与Requires的设定是有差异的!
Before :与After的意义相反,是在什么服务启动前最好启动这个服务的意思,不过这仅是规范服务启动的顺序,并非强制要求的意思
Requires :明确的定义此unit需要在哪个daemon启动后才能够启动!就是设定依赖服务啦!如果在此项设定的前导服务没有启动,那么此unit就不会被启动!
Wants :与Requires刚好相反,规定的是这个unit之后最好还要启动什么服务比较好的意思!不过,并没有明确的规定就是了!主要的目的是希望建立让使用者比较好操作的环境。因此,这个Wants后面接的服务如果没有启动,其实不会影响到这个unit本身!
Conflicts :代表冲突的服务!也就是这个项目后面接的服务如果有启动,那么我们这个unit本身就不能启动!
我们unit有启动,则此项目后的服务就不能启动!
[Service]部分说明:
Type:说明这个daemon启动的方式,会影响到ExecStart!一般来说,有底下几种类型:
simple:预设值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于存储器中.
forking:由ExecStart启动的程序透过spawns延伸出其他子程序来作为此daemon的主要服务.原生的父程序在启动结束后就会终止运作.传统的unit服务大多属于这种项目,例如httpd这个Www服务,当httpd的程序因为运作过久因此即将终结了,则systemd会再重新生出另一个子程序持续运作后,再将父程序删除.
oneshot:与simple类似,不过这个程序在工作完毕后就结束了,不会常驻在存储器中,
dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作!因此设定这个项目时,通常也要设定BusName=才行!
idle:与simple类似,意思是,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行.这 类的daemon通常是开机到最后才执行即可的服务!比较重要的项目大概是simple, forking 与oneshot 了!毕竟很多服务需要子程序(forking),而有更多的动作只需要在开机的时候执行次(oneshot) ,例如文件系统的检查与挂载啊等等的。
EnvironmentFile:可以指定启动脚本的shell环境!例如sshd.service 的设定档写入到/etc/sysconfig/sshd 当中!你也可以使用Environment= 后面接多个不同的Shell变量来给予设定!
ExecStart:就是实际执行此daemon的指令或脚本程序。你也可以使用ExecStartPre (之前)以及ExecStartPost (之后)两个设定项目来在实际启动服务前,进行额外的指令行为。但需要特别注意的是,指令串仅接受「指令参数参数…」的格式,不能接受<,>,>>,|,&等特殊字符,很多的bash 语法也不支援喔! 所以,要使用这些特殊的字符时,最好直接写入到指令脚本里面去!不过,上述的语法也不是完全不能用,亦即,若要支援比较完整的bash 语法,那你得要使用Type=oneshot 才行喔!其他的 Type不支持这些字符
ExecStop:与systemctl stop 的执行有关,关闭此服务时所进行的指令。
Restart:当设定Restart=1 时,则当此daemon服务终止后,会再次的启动此服务。举例来说,如果你在tty2使用文字界面登入,操作完毕后登出,基本上,这个时候tty2 就已经结束服务了。但是你会看到荧幕又立刻产生一个新的tty2 的登入画面等待你的登入!那就是Restart的功能!除非使用systemctl强制将此服务关闭,否则这个服务会源源不绝的一直重复产生!
RemainAfterExit:当设定为RemainAfterExit=1 时,则当这个daemon所属的所有程序都终止之后,此服务会再尝试启动。这对于Type=oneshot 的服务很有帮助!
TimeoutSec:若这个服务在启动或者是关闭时,因为某些缘故导致无法顺利「正常启动或正常结束」的情况下,则我们要等多久才进入「强制结束」的状态!
KillMode:可以是process, control-group ,none的其中一种,如果是process 则daemon终止时,只会终止主要的程序(ExecStart 接的后面那串指令),如果是control -group时,则由此daemon 所产生的其他control-group的程序也都会被关闭,如果是none的话,则没有程序被关闭
RestartSec:与Restart有点相关性,如果这个服务被关闭,然后需要重新启动时,大概要sleep 多少时间再重新启动的意思。预设是100ms(亳秒)。
Install部分说明:
WantedBy:这个设定后面接的大部分是*.target unit !意思是,这个unit本身是附挂在哪一个target unit 底下的!一般来说,大多的服务性质的unit都是附挂在multi-user.target 底下!
Also:当目前这个unit 本身被enable 时,Also 后面接的unit也请enable的意思!也就是具有相依性的服务可以写在这里呢!
Alias:进行一个连结的别名的意思!当systemctl enable相关的服务时,则此服务会进行连结档的建立!以multi -user. target为例,这个家伙是用来作为预设操作环境default.target的规划,因此当你设定用成default.target时,这个/etc/systemd/system/default.target就会链接到/usr/lib/systemd/system/multi-user.target !
11.4.2 systemctl命令详细使用说明:
1.首先检查你的系统中是否安装有systemd并确定当前安装的版本
# systemd --version
2.检查systemd和systemctl的二进制文件和库文件的安装位置,
# whereis systemd
# whereis systemctl
3.检查systemd是否运行
#ps - eaf | grepsys temd
注意:systemd是作为父进程(PID=1) 运行的。在上面带(-e)参数的ps命令输出中,选择所有进程,(-a)选择除会话前导外的所有进程,并使用(-f)参数输出完整格式列表(即-eaf)
4.分析systemd启动进程
# systemd-analyze
5.分析启动时各个进程花费的时间
# systemd-analyzeblame
6.分析启动时的关键链
# systemd-analyzecritical-chain
7.列出所有可用单元
# systemctl list-unit-files
8.列出所有运行中单元
# systemctl list-units
9.列出所有失败单元
# systemctl --failed
10.检查某个单元(如cron. service)是否开机自启
# systemctl is-enabled crond.service
11.检查某个单元或服务是否运行
# systemctl status firewalld.service
使用Systemct1控制并管理服务
12.列出所有服务(包括启用的和禁用的)
# systemctl list-unit-files --type=service
- Linux中如何启动、重启、停止、重载服务以及检查服务(如httpd.service)状态
# systemctl start httpd.service
# systemctl restart httpd.service
# systemctl stop httpd.service
# systemctl reload httpd.service
# systemctl status httpd.service
注意:当我们使用systemctl的start,restart, stop和reload命令时,我们不会从终端获取到任何输出内容,只有status命令可以打印输出。
14.如何激活服务并在启动时启用或禁用服务(即系统启动时自动启动服务)
# systemctl is-active httpd.service
# systemctl enable httpd.service
# systemctl disable httpd.service
15.如何屏蔽(让它不能启动)或显示服务( 如httpd. service)
# systemctl mask httpd.service
# systemctl unmask httpd.service
16.使用systemctl命令杀死服务
# systemctl kill httpd
# systemctl status httpd
使用systemctl 控制并管理挂载点
17.列出所有系统挂载点
# systemctl list-unit-files --type=mount
18.挂载、卸载、重新挂载、重载系统挂截点并检查系统中挂载点状态
# systemctl start tmp.mount
# systemctl stop tmp.mount
# systemctl restart tmp.mount
# systemctl re load tmp.mount
# systemctl status tmp.mount
19.在启动时激活、启用或禁用挂载点(系统启动时自动挂载)
#systemctl is-active tmp.mount
#systemctl enable tmp.mount
#systemctl disable tmp.mount
20.在L inux中屏蔽(让它不能启用)或可见挂载点
# systemctl mask tmp.mount
# systemctl unmask tmp.mount
使用 systemctl 控制并管理套接口
21.列出所有可用系统套接口
# systemctl list-unit-files --type=socket
22.在Linux中启动、重启、停止、重载套接口并检查其状态
# systemctl start cups.socket
# systemctl restart cups.socket
# systemctl stop cups.socket
# systemctl reload cups.socket
# systemctl status cups.socket
23.在启动时激活套接口,并启用或禁用它( 系统启动时自启动)
#systemctl is-active cups.socket
#systemctl enable cups.socket
#systemctl disable cups.socket
24.屏蔽( 使它不能启动)或显示套接口
# systemctl mask cups.socket
# systemctl unmask cups.socket
25.获取当前某个服务的CPU分配额(如httpd)
# systemctl show -p CPUShares httpd.service
注意:各个服务的默认CPU分配份额=1024,你可以增加/减少某个进程的CPU分配份额.
26.将某个服务( httpd . service)的CPU分配份额限制为2000CPUShares/
# systemctl set-property httpd.service CPUShares=2000
# systemctl show -p CPUShares httpd.service
注意:当你为某个服务设置CPUShares,会自动创建一个以服务名命名的目录(如httpd,service),里面包含了一个名为90-CPUShares.conf的文件,该文件含有CPUShare限制信息,你可以通过以下方式查看该文件:
# vim /etc/systemd/system/httpd.service.d/50-CPUShares.conf
[Service]
CPUShares=2000
27.检查某个服务的所有配置细节
# systemctl show httpd
28.分析某个服务(httpd) 的关键链
# systemd-analyze critical-chainhttpd.service
29.获取某个服务(httpd) 的依赖性列表
#systemctl list-dependencies httpd.service
30.按等级列出控制组
# systemd-cgls
31.按CPU、内存、输入和输出列出控制组
# systemd-cgtop
控制系统运行等级
32.启动系统救援模式
# systemctl rescue
33.进入紧急模式
# systemct lemergency
34.列出当前使用的运行等级
# systemctl get-default
35.启动运行等级5,即图形模式
# systemctl isolate runlevel5.target
或
# systemctl isolate graphical.target
36.启动运行等级3,即多用户模式(命令行)
# systemctl set-default runlevel3.target
# systemctl set-default runlevel5.target
37.重启、停止、挂起、休眠系统或使系统进入混合睡眠
# systemctl reboot
# systemctl halt
# systemctl suspend
# systemctl hibernate
# systemctl hybrid-sleep