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

  1. Windows:不允许其他系统引导,也不引导其他系统
  2. LinuxGRUB:默认的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特性

  1. 平行处理所有服务,加速开机流程:旧的init启动脚本是一项一项任务依序启动的模式,因此不相依的服务也是得要一个一个的等待。systemd可以让所有的服务同时启动,因此系统启动的速度变快了
  2. 一经要求就回应的on-demand启动方式:

systemd全部就是仅有一只systemd服务搭配systemctl指令来处理,无须其他额外的指令来支援。不像systemV还要init, chkconfig, service…等等指令.此外,systemd由于常驻存储器,因此任何要求(on-demand)都可以立即处理后续的daemon启动的任务

  1. 服务相依性的自我检查:

由于systemd可以自订服务相依性的检查,因此如果B服务是架构在A服务上面启动的,那当你在没有启动A服务的情况下仅手动启动B服务时,systemd会自动帮你启动A服务!

  1. 按照daemon功能分类:

systemd管理的服务非常多,首先systemd先定义所有的服务为一个服务单位(unit),并将该unit归类到不同的服务类型(type)去。systemd将服务单位(unit)区分为service, socket , target , path, snapshot, timer等多种不同的类型(type),方便管理员的分类与记忆

  1. 将多个daemons集合成为一个群组:

如同systemV的init里头有个runlevel的特色,systemd亦将许多的功能集合成为一个所谓的target项目,这个项目主要在设计操作环境的建置,所以是集合了许多的daemons,也就是执行某个target就是执行好多个daemon的意思!

  1. 向下兼容旧有的init服务脚本:基本上,systemd是可以兼容于init的启动脚本的,因此,旧的init启动脚本也能够透过systemd来管理,只是更进阶的systemd功能就没有办法支援就是了
  2. systemd有些地方无法完全取代init!包括:在runlevel的对应上,大概仅有runlevel1,3,5有对应到systemd的某些target类型而已,没有全部对应;
  3. 全部的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 启动流程
  • lsinitrd /boot/initramfs-3.10.0-1101.el7.x86_64.img //查看虚根文件系统

  • 在内核载入完毕、进行完硬件侦测与驱动程序载入后,内核会启动第一个进程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完成的功能:

  1. 特殊文件系统装置的挂载:包括dev- hugepages . mount dev -mqueue . mount等挂载服务,主要在挂载跟巨量存储器分页使用与讯息队列的功能。挂载成功后,会在 /dev底下建立/dev/hugepages/ ,/dev/mqueue/ 等目录;
  2. 特殊档案系统的启用:包括磁碟阵列、网络磁碟(iscsi)、 LVM档案系统、档案系统对照服务(multipath) 等等,也会在这里被侦测与使用到!
  3. 开机过程的讯息传递与动画执行:使用plymouthd 服务搭配plymouth指令来传递动画与讯息
  4. 日志式登录档的使用:就是systemd- journald这个服务的启用啊!
  5. 载入额外的核心模块:透过/etc/modules -load . d/*.conf档案的设定,让核心额外载入管理员所需要的核心模块!
  6. 载入额外的核心参数设定:包括/etc/sysctl.conf以及/etc/sysctl.d/*.conf内部设定!
  7. 启动系统的随机数产生器:随机数产生器可以帮助系统进行一些密码加密演算的功能
  8. 设定终端机(console) 字形
  9. 启动动态装置管理员:就是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
  1. 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