中山学校网站建设,上海型录设计,关键词长尾词优化,湛江市企业网站seo点击软件Systemd#xff1a;Systemd的新特性#xff1a;1.在系统引导的时候可以实现服务的并行启动#xff1b;2.能够实现按需激活进程#xff1b;在系统启动时#xff0c;需要随系统启动服务#xff0c;其服务进程并没有启动#xff0c;但是Systemd为每一个此类服务进程都注册了… Systemd Systemd的新特性 1.在系统引导的时候可以实现服务的并行启动 2.能够实现按需激活进程 在系统启动时需要随系统启动服务其服务进程并没有启动但是Systemd为每一个此类服务进程都注册了对应的套接字我们成这种服务处理方式为半激活状态 3.能够对当前系统的用户空间的每个进程进行状态快照以后如果进程出现问题或故障可以迅速恢复进程状态至过去的某一时刻 4.systemd内部有一种基于依赖关系来定义的服务控制逻辑 核心管理概念unit文件 由systemd相关的配置文件进行标识、识别和配置功能的实现的基础 unit的文件分类 系统服务类 socket 目标类 快照类 ... 这些配置文件主要保存在: /usr/lib/systemd/system/* /etc/systemd/system/* 符号链接 /run/systemd/system/* 非配置关键项 Unit文件的常见类型 Service unit文件的扩展名为.service用于定义系统服务一般.service扩展名可以省略 Target unit文件的扩展名为.target用于模拟实现init程序的运行级别 Device unit文件的扩展名为.device用于定义内核识别出来的各设备 Mount unit文件的扩展名为.mount用于定义可以被systemd管理的文件系统的挂载点 Automount unit文件的扩展名为.automount用于定义文件系统的自动挂载点的位置 Socket unit文件的扩展名为.socket用于标识进程间通信所用到的socket文件 Swap unit文件的扩展名为.swap用于标识swap设备 Path unit文件的扩展名为.path用于监控指定目录中的一个文件或一个子目录如果被监控的文件或目录不存在则systemd可以自动创建之 systemd特性的实现方式 1.基于socket unit的方式实现进程激活机制 2.基于device unit的方式实现设备的自动识别挂载 3.基于bus的激活机制 4.基于path的激活机制 systemd的兼容和不兼容 兼容SysV init的脚本 不兼容必须使用systemctl命令来管理系统systemctl命令的格式是固定不变的所有不经由systemd启动的系统服务或系统功能systemctl命令无法与之直接通信也就意味着此类服务或功能无法通过systemctl来控制 systemctl命令 systemctl - Control the systemd system and service manager systemctl [OPTIONS...] COMMAND [NAME...] 管理服务类的操作 启动service NAME start systemctl start NAME[.service] 停止service NAME stop systemctl stop NAME.service 重启service NAME restart systemctl restart NAME.service 状态service NAME status systemctl status NAME.service 设置服务的开机自启chkconfig --level runlevels NAME on systemctl enable NAME.service 禁止服务的开机自启chkconfig --level runlevels NAME off systemctl disable NAME.service 查看某服务是否开机自启chkconfig --list NAME systemctl is-enabled NAME.service 条件式重启service NAME condrestart systemctl try-restart NAME.service 重载配置文件service NAME reload systemctl reload NAME.service 重载或重启systemctl reload-or-restart NAME.service 重载或条件式重启systemctl reload-or-try-restart NAME.service 查看某服务当前是否处于激活状态systemctl is-active NAME.service 查看所有已处于激活状态的服务systemctl list-units --typeUNIT_TYPE查看指定unit类型的处于活跃状态的服务 --all显示所有包括处于活跃状态和处于非活跃状态的各服务 查看依赖指定服务的其他服务systemctl list-dependencies NAME.service 禁止某服务被设定为开机自启systemctl mask NAME.service 取消禁止某服务被设定为开机自启systemctl unmask NAME.service 管理target unit 模拟运行级别 0 runlevel0.target, poweroff.target 1 runlevel1.target, rescue.target 2 runlevel2.target, multi-user.target 3 runlevel3.target, multi-user.target 4 runlevel4.target, multi-user.target 5 runlevel5.target, graphical.target 6 runlevel6.target, shutdown.target 运行级别间切换init # systemctl isolate NAME.target 注意不是所有的target都能使用上述命令进行级别切换的只有那些在对应的unit文件中包含了AllowIsolateyes的语法的target才能用于切换 修改了unit文件之后需要通过命令才能使之生效 # systemctl daemon-reload 查看运行级别runlevel systemctl list-units --typetarget --all 查看默认运行级别/etc/inittab(id:3:initdefault:) systemctl get-default 修改默认运行级别/etc/inittab(id:3:initdefault:) systemctl set-default NAME.target rescue.target紧急救援模式 systemctl isolate rescue.target systemctl rescue emergency.target紧急调试模式 systemctl emergency rescue模式相当于安全模式在切换到此模式时操作系统会运行最底层的驱动程序以保证服务器可以运行起来 emergency模式一般来说通常是硬件故障或者硬件不可识别或者硬件可识别但不可用等关乎于计算机硬件设施的问题通常系统会启动emergency模式 除上述模式之外传统的init命令shutdown命令poweroff命令halt命令reboot命令其实都是systemctl的符号链接 可以使用systemctl命令来直接实现上述功能 关机systemctl haltsystemctl poweroff 重启systemctl reboot 挂起systemctl suspend 休眠(进程快照)systemctl hibernate 挂起并休眠systemctl hybrid-sleep Service unit file的基本文件格式 /etc/systemd/system存放的都是各个unit file的符号链接 /usr/lib/systemd/system 如果自行编写unit file可以直接将文件放置于/etc/systemd/system目录中也可以将其放在/usr/lib/systemd/system目录中但是需要为其提供一个符号链接文件放置于/etc/systemd/system目录中 Service unit file文件的基本格式 此类unit file通常分为三段 [Unit]定义与Unit类型无关的通用选项用于提供当前unit的描述信息unit的行为信息unit的依赖关系unit相关帮助文档信息等 常用的选项语句 Description定义相关服务的描述信息意义性的介绍性的描述 After定义了此服务在启动前必须依赖的其他服务 Before定义了依赖此服务启动的其他服务 Wants指明依赖关系说明该服务依赖于哪些其他的unit弱依赖即使被依赖的服务并没有被正确激活也不会影响当前服务是否可以被激活 Requires指明依赖关系说明该服务依赖于哪些其他的unit强依赖只要被依赖的unit无法被正确激活则当前服务一定无法激活 Conflict定义了各unit之间可能存在冲突 Documentation定义了跟当前unit相关的管理命令的文档所在 [Service]定义与系统服务相关的专用的选项语句 常用的选项语句 Type用于定义影响ExecStart即相关参数的功能的unit进程的启动类型 simple默认值表示由ExecStart语句指明的应用程序启动的进程就是主进程 forking复制自身表示有ExecStart语句指明的应用程序所启动的进程中众多的子进程中一个将成为主进程而一旦启动完成父进程会退出 oneshot一次性进程功能类似与simple在启动后续的unit之前主进程会退出 notify功能类似于simple但是其后续的unit仅在通过sd_notify()函数发送通知之后才能运行ExecStart所指明的应用程序 EnvironmentFile环境配置文件此文件一般用于在ExecStart之前被读取并为ExecStart执行后面的应用程序提供必要的变量以及其他自定义功能等 ExecStart指明启动此服务所需要运行的命令或脚本 ExecReload指明重载配置文件所需要运行的命令或脚本 ExecStop指明停止服务所需要运行的命令或脚本 ExecStartPre指明在执行ExecStart指明的命令之前需要运行的命令或脚本 ExecStartPost指明在执行ExecStart指明的命令之后需要运行的命令或脚本 Restart表示如果服务遭遇有意外而终止则会自动重启该服务 [Install]定义由systemctl enable和systemctl disable命令在实现服务启动或禁用时用到的专用选项语句 WantedBy弱依赖关系指的是该服务被哪些其他units所依赖 RequiredBy强依赖关系指的是该服务被哪些其他units所依赖CentOS 7系统引导过程 1.POST 2.选择启动设备读取引导程序 3.装载引导程序(CentOS 7使用的grub2) 4.装载引导程序的配置文件: /etc/grub.d/, /etc/default/grub , /boot/grub2/grub.cfg 5.加载initramfs驱动模块 6.加载内核 7.内核以只读方式挂载rootfs启动systemd进程 8.执行initrd-*.target所有的unit包括挂载/etc/fstab文件中所有有效的文件系统 9.根切换 10.systemd执行默认的targetLinux Kernel 内核设计流派 单内核设计但是充分借鉴了微内核体系设计的优点为内核引入了模块化机制内核高度模块化 内核被模块化之后一些最为基本最为重要的内容被编译到内核核心而其他更多的功能则以模块的方式来提供而且支持动态装载和卸载各内核模块 内核的组成部分 kernel内核核心文件一般为bzImage经过压缩处理的镜像文件通常内核核心文件保存在/boot目录下名称为vmlinuz-VERSION-release kernel object(ko)内核对象内核额外功能模块一般该类文件放置于/lib/modules/VERSION-release 注意内核模块与内核核心版本号必须严格匹配 内核模块其实就是内核源代码的一部分只是在编译内核的过程中由于其功能可能并非内核核心所必需所以以模块的方式被编译 在编译内核时内核的功能通常有如下几种选择方式 [ ] kernel FunctionNo不选择编译此功能 [M] kernel FunctionModules将此功能编译为内核模块使用此功能不占据内核空间只占用磁盘空间 [*] kernel FunctionYes将此功能直接编译进内核核心 ramdisk内核补充文件辅助文件对于内核核心来说此文件非必须是否使用此文件取决于内核能否直接驱动rootfs所在的存储设备 设备的驱动程序SCSI设备的驱动 逻辑设备驱动程序LVM的驱动程序软RAID驱动程序等 文件系统 cpio -i -F initramfs-2.6.32-573.el6.x86_64.img 简化的rootfs 注意一般来讲kernel核心文件和ramdisk文件必须具有完全相同的版本号内核管理的相关命令 uname命令 uname - print system information uname [OPTION]... 常用选项 -n显示节点名称 -r显示内核版本号包括VERSION和release -a显示所有信息 lsmod命令 lsmod - program to show the status of modules in the Linux Kernel 显示有Linux内核核心已经装载的内核模块 lsmod显示的内容分为三个字段 模块名称 模块大小 被引用次数及被谁所引用 modinfo命令 modinfo - program to show information about a Linux Kernel module modinfo [ -k kernel ] [ modulename|filename... ] 常用选项 -F field仅显示指定字段的信息通常只能指定一个字段 -n只显示模块文件的绝对路径 (最常用) -a只显示模块的作者信息 -d只显示模块的描述 -l只显示许可证信息 -p只显示模块参数信息 depmod命令 depmod - program to generate modules.dep and map files 内核模块依赖关系文件及系统信息映射文件的生成工具 实现内核模块的动态装载和卸载的命令 insmod命令装载指定的内核模块文件但无法自动解决模块间的依赖关系 insmod - simple program to insert a module into the Linux Kernel insmod [ filename ] [ module options... ] 注意filename模块文件的绝对路径 ]# insmod modinfo -n btrfs rmmod命令 rmmod - simple program to remove a module from the Linux Kernel # rmmod module_name modprobe命令 modprobe - program to add and remove modules from the Linux Kernel 从内核中移除模块或者向内核中插入模块 modprobe [ -C config-file ] [ modulename ] [ module parameters... ] 默认的配置文件/etc/modprobe.conf , /etc/modprobe.d/* modprobe module_name装载模块自动识别和解决依赖关系 modprobe -r module_name卸载模块 转载于:https://blog.51cto.com/12453570/1975820