位置: 编程技术 - 正文

详解linux中systemd命令的运行级别与其常见应用

编辑:rootadmin

推荐整理分享详解linux中systemd命令的运行级别与其常见应用,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

从很久很久以前我们就在使用静态运行级别。而systemd提供了更为动态灵活的机制,来管控你的系统。

在开始介绍systemd命令前,让我们先简单的回顾一下历史。在Linux世界里,有一个很奇怪的现象,一方面Linux和自由软件(FOSS)在不断的向前推进,另一方面人们对这些变化却不断的抱怨。这就是为什么我要在此稍稍提及那些反对systemd所引起的争论的原因,因为我依然记得历史上有不少类似的争论:

软件包(Pacakge)是邪恶的,因为真正的Linux用户会从源码构建他所想要的的一切,并严格的管理系统中安装的软件。 解析依赖关系的包管理器是邪恶的,真正的Linux用户会手动解决这些该死的依赖关系。 apt-get总能把事情干好,所以只有Yum是邪恶的。 Red Hat简直就是Linux中的微软。

诸如此类...就像我之前常常说的一样,变化总是让人沮丧。这些该死的变化搅乱了我的工作流程,这可不是一件小事情,任何业务流程的中断,都会直接影响到生产力。但是,我们现在还处于计算机发展的婴儿期,在未来的很长的一段时间内将会持续有快速的变化和发展。想必大家应该都认识一些因循守旧的人,在他们的心里,商品一旦买回家以后就是恒久不变的,就像是买了一把扳手、一套家具或是一个粉红色的火烈鸟草坪装饰品。就是这些人,仍然在坚持使用Windows Vista,甚至还有人在使用运行Windows 的老破烂机器和CRT显示器。他们不能理解为什么要去换一台新机器。老的还能用啊,不是么?

这让我回忆起了我在维护老电脑上的一项伟大的成就,那台破电脑真的早就该淘汰掉。从前我有个朋友有一台的老机器,安装了一个极其老的MS-DOS版本。她使用这台电脑来处理一些简单的任务,比如说约会、日记、记账等,我还用BASIC给她写了一个简单的记账软件。她不用关注任何安全更新,是这样么?因为它压根都没有联网。所以我会时不时给她维修一下电脑,更换电阻、电容、电源或者是CMOS电池什么的。它竟然还一直能用。它那袖珍的琥珀CRT显示器变得越来越暗,在使用了多年后,终于退出了历史舞台。现在我的这位朋友,换了一台运行Linux的老Thinkpad,来干同样的活。

前面的话题有点偏题了,下面抓紧时间开始介绍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=

整个文件一共有行。

详解linux中systemd命令的运行级别与其常见应用

你可以检查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常用网络工具之批量主机服务扫描工具netcat使用介绍 netcat又叫做瑞士军刀,是黑客和系统管理员常用的网络工具,最初开发的目的是文件传输,后来发展出很多强大的功能,比如也可以完成批量主机服务

Linux iptables基础知识和规则原理讲解 什么是iptables?iptables是Linux下功能强大的应用层防火墙工具,但了解其规则原理和基础后,配置起来也非常简单。什么是Netfilter?说到iptables必然提到Net

Linux iptables的规则组成介绍 《Linuxiptables:规则原理和基础》介绍了iptables的四表五链,简单说就是不同的网络层数据包会经过哪几个挂载点,在每个挂载点可以在哪张表进行规则

标签: 详解linux中systemd命令的运行级别与其常见应用

本文链接地址:https://www.jiuchutong.com/biancheng/366849.html 转载请保留说明!

上一篇:在Linux下使用rsync对比和同步文件的方法(linux rsyslogd)

下一篇:Linux常用网络工具之批量主机服务扫描工具netcat使用介绍(linux网络设备有哪些)

  • 建安增值税怎么计算
  • 实收资本印花税如何申报
  • 预算收入包括增值税吗
  • 车辆保险车船税怎么做会计分录
  • 居民企业参股外国企业信息报告表怎么删除
  • 公司兼职的工资怎么发
  • 已缴企业所得税公司账户的钱怎么办
  • 房地产企业可以抵扣进项税额的范围
  • 增值税专用发票怎么开
  • 无形资产应当按照公允价值进行初始计量吗
  • 个人设备卖给公司
  • 汇款后又退回来是什么原因
  • 承租方收到融资租赁款会计处理
  • 应交税金的期末余额怎么算
  • 存款利率怎么算存一年后的金额
  • ppp项目是否纳入政府债务
  • 不是企业性质的民办学校要交什么税
  • 未缴纳个人所得税承诺书模板
  • 加油票可以抵扣几个点的增值税
  • 最新土地增值税实施细则
  • 法人借款可以做到短期借款吗
  • 科技型企业科研项目申报
  • 出口退税率为0%退税收入怎么算
  • 如何断开微软账户与电脑的链接
  • 没有权限使用网络资源,请与这台服务器的管理员联系
  • 合同结算账务处理分录
  • 支付离退休人员退休金可以用现金结算吗
  • 工程款清欠管理办法
  • 计提未支付的费用
  • 企业所得税如何计算应纳税所得额
  • gridview用法
  • js删除对象的方法
  • 参加《2022 中国开发者影响力盛典》我的 4 重收获!
  • 微信php源码
  • PHP中set_include_path()函数相关用法分析
  • 购进原材料款项未付应编制什么凭证
  • 帝国cms怎么用
  • 小微企业能申请留抵退税吗?
  • 个税累积税阶
  • 研发费用范围归集不正确
  • 帝国cms功能
  • python命令行进度条
  • 预收账款什么时候确认增值税
  • 进项税为什么记在贷方
  • 租赁吊车服务的利润大概有多少
  • 公司帐户转到法人帐户用途写备用金行吗
  • 现代服务业进项抵扣新政策
  • 成立业主委员会申请书
  • 金融资产是分为哪三分类?
  • 商贸公司用购进产品吗
  • 职工基本医疗保险怎么用
  • 捐赠人赞助属于什么会计科目
  • 专项应付款科目编码是多少
  • 财政总预算会计的主体是
  • 关于小规模纳税人2023年的政策
  • 实收资本实际缴纳要去税务局备案吗
  • 组织机构代码证图片
  • 如何建立一个新的群
  • redis 和 mysql 的数据不一致怎么办
  • xampp网页服务器配置文件名
  • win2000安全模式怎么进
  • win10设置怎么开
  • 让64位的Windows Server 2008支持蓝牙的方法
  • linux远程界面
  • 去掉快捷功能
  • win8怎样关闭系统更新
  • macos手势
  • ubuntu系统键盘无用
  • scheduler.exe - scheduler是什么进程 有何作用
  • linux删错文件
  • 新装win8系统卡顿严重,虚拟内存为0
  • js date()
  • 处理判断字符串是否相等
  • python winreg
  • android动态添加view
  • 在文件中偏移量为
  • 湖北农信换手机登录不了
  • 机票的抵扣率是多少
  • 小孩一卡通丢了去哪里补办,需要什么证件
  • 沈阳税务机关地区编号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设