成都创新互联网站制作重庆分公司

linux中systemd命令的运行级别与其常见应用-创新互联

本篇内容主要讲解“linux中systemd命令的运行级别与其常见应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中systemd命令的运行级别与其常见应用”吧!

成都创新互联是一家集网站建设,桑日企业网站建设,桑日品牌网站建设,网站定制,桑日网站建设报价,网络营销,网络优化,桑日网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

运行级别 vs. 状态

SysVInit使用静态的运行级别来构建不同的启动状态,大部分发布版本中提供了以下5个运行级别:

  •     单用户模式(Single-user mode)
        多用户模式,不启动网络服务(Multi-user mode without network services started)
        多用户模式,启动网络服务(Multi-user mode with network services started)
        系统关机(System shutdown)
        系统重启(System reboot)

对于我来说,使用多个运行级别并没有太大的好处,但它们却一直在系统中存在着。 不同于运行级别,systemd可以创建不同的状态,状态提供了灵活的机制来设置启动时的配置项。这些状态是由多个unit文件组成的,状态又叫做启动目标(target)。启动目标有一个清晰的描述性命名,而不是像运行级别那样使用数字。unit文件可以控制服务、设备、套接字和挂载点。参考下/usr/lib/systemd/system/graphical.target,这是CentOS 7默认的启动目标:


代码如下:

[Unit]
   Description=Graphical Interface
   Documentation=man:systemd.special(7)
   Requires=multi-user.target
   After=multi-user.target
   Conflicts=rescue.target
   Wants=display-manager.service
   AllowIsolate=yes
   [Install]
   Alias=default.target

现在再看看unit文件长什么样? 我来给大家找个例子。 unit文件存放在下面的两个目录下:


代码如下:

/etc/systemd/system/
   /usr/lib/systemd/system/

我们可以修改第一个目录中的文件来进行自定义配置,而第二个目录中的文件是包安装时保存的备份。/etc/systemd/system/的优先级高于/usr/lib/systemd/system/。不错,用户优先级高于机器。下面是Apache Web server的unit文件:


代码如下:

[Unit]
   Description=The Apache HTTP Server
   After=network.target remote-fs.target nss-lookup.target
   [Service]
   Type=notify
   EnvironmentFile=/etc/sysconfig/httpd
   ExecStart=/usr/sbin/httpd/ $OPTIONS -DFOREGROUND
   ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
   ExecStop=/bin/kill -WINCH ${MAINPID}
   KillSignal=SIGCONT
   PrivateTmp=true
   [Install]
   WantedBy=multi.user.target

就算是对于新手而言,上面的文件也是非常简单易懂的。这可比SysVInit的init文件要简单多了,为了便于比较,下面截取了/etc/init.d/apache2的一个片段:


代码如下:

SCRIPTNAME="${0##*/}"
   SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
   if [ -n "$APACHE_CONFDIR" ] ; then
       if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
               DIR_SUFFIX="${APACHE_CONFDIR##/etc/apache2-}"
       else
               DIR_SUFFIX=

整个文件一共有410行。

你可以检查unit文件的依赖关系,我常常被这些复杂的依赖关系给吓到:


代码如下:

$ systemctl list-dependencies httpd.service

cgroups

cgroups,或者叫控制组,在Linux内核里已经出现好几年了,但直到systemd的出现才被真正使用起来。The kernel documentation中是这样描述cgroups的:“控制组提供层次化的机制来管理任务组,使用它可以聚合和拆分任务组,并管理任务组后续产生的子任务。”换句话说,它提供了多种有效的方式来控制、限制和分配资源。systemd使用了cgroups,你可以便捷的查看它,使用下面的命令可以展示你系统中的整个cgroup树:


代码如下:

$ systemd-cgls

你可以使用ps命令来进行查看cgroup树:


代码如下:

$ ps xawf -eo pid,user,cgroup,args

常用命令集

下面的命令行展示了如何为守护进程重新装载配置文件,注意不是systemd服务文件。 使用这个命令能够激活新的配置项,且尽可能少的打断业务进程,下面以Apache为例:


代码如下:

# systemctl reload httpd.service

重新装载服务文件(service file)需要完全停止和重新启动服务。如果服务挂死了,用下面的命令行可以恢复它:


代码如下:

# systemctl restart httpd.service

你还可以用一个命令重启所有的守护进程。这个命令会重新装载所有守护进程的unit文件,然后重新生成依赖关系树:


代码如下:

# systemctl daemon-reload

在非特权模式下,你也可以进行重启、挂起、关机操作:


代码如下:

$ systemctl reboot
   $ systemctl suspend
   $ systemctl poweroff

到此,相信大家对“linux中systemd命令的运行级别与其常见应用”有了更深的了解,不妨来实际操作一番吧!这里是创新互联建站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网站标题:linux中systemd命令的运行级别与其常见应用-创新互联
当前路径:http://cxhlcq.com/article/cegdhc.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部