当前位置: 首页 > 后端技术 > PHP

Centos7大管家systemctl

时间:2023-03-29 22:19:27 PHP

博客参考http://www.178linux.com/48343http://www.178linux.com/48674http://www.178linux.com/48563http://www.jinbuguo.com/systemd/index.htmlSystemd简介Systemd是由RedHat的一名员工LennartPoettering开发的。systemd是Linux系统中最新的初始化系统(init)。其主要设计目的是为了克服SysV固有的缺点,提高系统的性能。启动速度,systemd和upstart是竞争对手,ubantu上用upstart,centos7上用systemd替代SysV,systemd目录是替代Unix时代一直用的init系统,兼容SysV和LSB启动脚本,以及在进程启动时更有效地引导服务。system:系统启动和服务器守护进程管理器,负责在系统启动或运行时激活系统资源、服务器进程和其他进程。据管理层介绍,字母d是daemon的缩写,systemd这个名字的意思是它守卫着整个系统。systemd的新特性在系统启动时实现服务的并行启动按需启动守护进程自动化服务依赖管理同时使用socket和D-Bus总线激活服务系统状态快照和恢复使用Linuxcgroups监控进程维护挂载点并自动每个挂载点的服务是根据依赖关系精确控制的。systemd的核心概念是unit代表不同类型的systemd对象,通过配置文件来识别和配置。文件主要包括系统服务,监听套接字,保存的系统快照,以及其他与init相关的信息配置文件:/usr/lib/systemd/system:每个服务最重要的启动脚本设置,和前面的/etc/initd类似.d/run/system/system:系统执行时产生的服务脚本,优先于上述目录运行/etc/system/system:管理员创建的执行脚本,功能类似/etc/rc.d/rcN.d/Sxx,优先运行于上述目录,在三个目录中,该目录优先级最高Unittypesystemctl-thelp查看单元类型服务单元:文件扩展名为.service,用于定义系统servicestargetunit:文件扩展名为.target,用于模拟“运行级”的实现deviceunit:.device,用于定义内核所识别的设备挂载单元.mount,定义文件系统挂载点套接字单元。插座,用于识别用于进程间通信的socket文件,也可以在系统启动时延迟启动服务,实现按需启动快照单元:.snapshot,关系系统快照交换单元:.swap,用于表示swap设备automountunit:.automount,文件系统的自动挂载点如:/miscdirectorypathunit:.path,use用于定义文件系统中的一个文件或目录。它常用于在文件系统发生变化时延迟激活服务,例如假脱机目录。名称,包括扩展名,但有些单位可以在systemctl中使用简写。如果没有扩展名,systemctl将默认使用扩展名作为.service。例如netcfg和netcfg.service是等价的挂载点,会自动转换成对应的.mount单元。比如/home相当于home.mount设备会自动转换成对应的.device单元,所以/dev/sd2相当于dev-sda2.device关键特性基于Socket的激活机制:socket与服务进程分离D-Bus-basedactivationmechanismdevice-basedactivationmechanismpath-basedactivationmechanismSystemsnapshot:将每个单元的当前状态信息保存在一个持久化存储设备中兼容sysvinit脚本,不兼容systemctl命令,固定不可扩展,服务未启动通过systemd,systemctl与它们没有任何联系和控制,例如:之前由sysv风格管理的进程不能被systemd控制和systemd基本工具监控,而控制systemd的主要命令是systemctl。此命令可用于查看系统状态和管理系统和服务。管理服务命令:systemctlcommandname.servicestart:服务名start-->systemctlstartname.servicestop:服务名stop-->systemctlstopname.servicerestart:服务名restart-->systemctlrestartname.servicestatus:服务名状态-->systemctlstatusname.service只有在有条件重启已经启动的情况下才重启,否则什么都不做etc/systemd/system/sshd.service'Unbansystemctlunmaskname.service删除之前创建的链接服务,检查服务当前是否激活。systemctlis-activename.service如果启动会显示active,否则显示unknown。查看所有激活的服务systemctllist-units–t|–typeservice查看所有服务设置启动某项服务chkconfignameon–>systemctlenablename.service设置某项服务禁用启动chkconfignameoff–>systemctldisablename.service查看自动启动的所有服务的状态chkconfig–list–>systemctllist-unit-files-tservice用于列出那些运行级别下启用或禁用的服务chkconfigsshd–list–>ls/etc/system/system/*.wants/sshd.service[root@www~]#ls/etc/systemd/system/*.wants/sshd.service/etc/systemd/system/multi-user.target.wants/sshd.service查看服务是否开机自动启动systemctlis-enabledname.servcice查看依赖servicesystemctllist-dependencies查看启动失败的服务systemctl-failed-tservice查看服务单元的启用和禁用状态systemctllist-unit-files–t=servicekill进程systemctlkill进程名服务状态systemctllist-units-tservice-a显示状态loaded:单元配置文件已处理active(running):一个或多个连续处理运行active(exited):成功完成一次性配置active(waiting):正在运行,等待事件inactive:未运行enabled:bootingdisabled:不在boot时启动static:不在boot时启动,但可以被另一个启用的服务runlevel激活targetunits:unitconfigurationfile:.targetfilesendingwithtargetls/usr/lib/系统/系统/*.targetsystemctllist-unit-files-typetarget-all0–>runlevel0.target,poweroff.target1–>runlevel1.target,rescue.target2–>runlevel2.target,muti-user.target3–>runlevel3.target,mutil-user.target4–>runlevel4.target,multi-user.target5–>runlevel5.target,graphical.target6–>runlevel6.target,reboot.target查看依赖systemctllist-dependenciesgraphical.target查看默认运行级别systemctlget-default在SysV风格的系统上,检查/etc/inittab文件,它有一个id:5:initdefault:levelswitchingsystemctlisolatemuti-user.target注意:只有当AllowIsolate=在/lib/system/system/*.targetfile只有当yes(需要执行systemctldaemon-reload修改文件生效)设置默认运行级别–l/etc/system/system/default.target进入紧急救援模式systemctlrescue切换到紧急模式systemctlemergency也可以在systemd风格的系统上使用sysv风格系统的关机、重启等命令,表示命令链接到systemctl的一个软链接关机:systemctlhaltsystemctlpoweroffrestart:systemctlrebootsuspend:systemctlsuspendhibernate:systemctlhibernatehibernateandsuspend:systemctlhybrid-sleepCentOS7启动顺序1、CentOS启动过程:POST–>BootSequence–>引导程序–>内核l+initramfs(initrd)–>rootfs–>/sbin/initUEFi或者BIOS初始化,运行POST选择bootdevicebootloader,centos7是grub2loader的配置文件:/etc/grub.d//etc/default/grub/boot/grub2在使用systemctl控制单元时,通常需要使用单元文件的全名,包括扩展名,但有些单元可以在systemctl中使用简写,如果没有扩展名,systemCtl默认将扩展名视为.service例如netcfg和netcfg.service是等价的挂载点,会自动转换成对应的.mount单元。比如/home相当于home.mount设备会自动转换成对应的.device单元,所以/dev/sd2相当于dev-sda2.device加载initramfs驱动模块加载内核选项内核初始化,centos7使用systemd代替init执行initrd.target的所有单元,包括挂载/etc/fstab从initramfs根文件系统切换到磁盘根目录systemd执行默认target配置,配置文件/etc/systemd/default.target/etc/systemd/system/systemd执行sysinit.target初始化系统和basic.target准备操作系统.target下的rc.localsystemd执行multi-user.target下的getty.target登录服务systemd执行图形所需的服务(这是图形界面拥有的)单元文件格式遵循以#Th开头的行内容会被认为是评论相关的布尔值,1、yes、on、true全部打开,0、no、off、false全部关闭。时间单位默认为秒。通用选项,用于提供单元扫描信息、单元行为和依赖关系等。[服务]:与特定类型相关的特殊选项;这里是Servicetype[Install]:在实现中由“systemctlenable和systemctldisable”命令定义的服务启用或禁用时使用的一些选项。单元部分的常用选项。Description:描述性信息After:定义单元的启动顺序,表示当前单元应该在后面启动那些单元,其作用与before相反。要求:依赖的其他单位,依赖性强,当前一个单位无法激活时,当前单位也无法激活。Wants:依赖其他单元,弱依赖Conflicts:定义单元之间的冲突关系。ServicesectionType中的常用选项:DefinerigidExecStart函数的单元进程启动类型及相关参数simple:默认值;该守护进程主要由连接到ExecStart的命令字符串启动,启动forking后驻留在内存中:ExecStart启动的程序通过spawns扩展其他子程序作为该守护进程的主要服务,原生父程序启动后将终止。onshot:用于执行任务后立即退出的服务,不会留在内存中。notify:和simple一样,但是约定的服务会在准备好的时候发送信号,需要配合NotifyAccess让Systemd收到消息idle:和simple类似,执行这个daemon,它必须在所有任务成功执行后执行。这种守护进程通常是一种服务,只能在启动结束时进行。EnvironmentFile:环境配置文件ExeStart:指定启动单元时运行的命令或脚本的绝对路径ExeStartPre:在ExecStart之前运行ExeStartPost:在ExecStart之后运行ExecStop:指定停止单元运行的命令或脚本Restart:当Restart=设置了1,当daemon服务意外终止时会在这里自动启动服务Dependsonunits,stronglydependsonWantedBy:依赖那些单位,weaklydependsAlso:在安装这个服务的时候安装其他相关服务注:对于新创建的单位filesormodifiedunitfiles,youmustnotifysystemdreinstall加载配置文件,然后可以选择重启systemctldaemon-reloadcasevim/etc/systemd/system/bak.service[Unit]Description=backupmyetcRequires=atd.service[Service]Type=simpleExecStart=/bin/bash-c"echo/testdir/bak.sh|atnow"[Install]WantedBy=multi-user.targetsystemctldaemon-reloadsystemctlstartbak设置内核参数eters系统启动时,进入内核参数修改,修改只影响当前启动,在linux16行后加上systemd.unit=desired.targetatstartupsystemd.unit=emergency.targetentersrescuemodesystem.unit=recure。target进入紧急救援模式,功能比emergency多修改后使用ctrl+x启动进入相应模式启动故障排除。如果文件系统损坏,请尝试自动修复。如果失败,需要进入紧急模式,在/et中提示用户修复c/fstab没有对应的device和UUID,稍等一下,如果没有,进入emergencyshell,注释哪一行,则/etc/fstab中没有对应的挂载点Systemd尝试创建挂载点,否则提示进入emergencyshellincorrectmountoptionpromptin/etc/fstab输入emergencyshell破解root密码按任意键暂停启动按e键进入编辑模式将光标移动到linux16开头的行,添加内核参数rd.break按ctrl-x启动mount-oremount,rw/sysrootchroot/sysrootpasswdroottouch/.autorelabelexitreboot等待系统重新标号进入系统。这时候root密码已经改了。修复grub2GRUB“theGrandUnifiedBootloader”引导提示。您可以使用命令行界面从文件系统引导主配置文件/boot/grub2/grub.cfg修复配置文件grub2-mkconfig>/boot/grub2/grub.cfg修复grubgrub2-install/dev/sdaBIOS环境grub2-安装UEFI环境grub2-mkconfig-ogrub。配置重新启动