热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

真的超赞!用systemd命令来管理linux系统!

Systemd是一种新的linux系统服务管理器。它替换了init系统,能够管理系统的启动过程和一些系统服务,一旦启动起来,就将监管整个系统。在本文中,我们用的是安装有system

Systemd是一种新的linux系统服务管理器。

它替换了init系统,能够管理系统的启动过程和一些系统服务,一旦启动起来,就将监管整个系统。在本文中,我们用的是安装有 systemd 216 版本的centos 7.0,其最新版本可以从 freedesktop.org 下载得到。

真的超赞!用systemd命令来管理linux系统!

因为linux操作系统里出现的这一个新人,PID 1被“systemd”占据了,这能通过pstree命令看到。

[root@linoxide ~]# pstree

真的超赞!用systemd命令来管理linux系统!

那么现在让我们来探索systemd擅长什么,它又有多大的可能性成为sysVinit的新的替代品。

1. 更快启动

sysvinit一次一个串行地启动进程。

而Systemd则并行地启动系统服务进程,并且最初仅启动确实被依赖的那些服务,极大地减少了系统引导的时间。

你可以用下面的命令看到系统引导用时:

[root@linoxide ~]# systemd-analyze

真的超赞!用systemd命令来管理linux系统!

使用 time 参数也能够显示同样的内容。

[root@linoxide ~]# systemd-analyze time

真的超赞!用systemd命令来管理linux系统!

如果你想以进程初始化所占用时间排序打印出所有正在运行的单元列表,那么systemd-analyze命令可以帮助你完成这个任务。

[root@linoxide ~]# systemd-analyze blame

真的超赞!用systemd命令来管理linux系统!

上面的截屏只显示了小部分进程,你可以就像less分页器那样用箭头滚动列表。

2. systemctl 命令

systemctl命令是自systemd出现以来被广泛讨论的命令。你可以通过这个命令管理你的整个系统,让我们通过探究这个命令来更进一步。

2.1 列出单元

systemctl命令可以带上list-units,也可以什么选项都不带来列出所有正在运行的单元。

[root@linoxide ~]# systemctl

[root@linoxide ~]# systemctl list-units

真的超赞!用systemd命令来管理linux系统!

2.2 列出失败的单元

运行失败的单元可以用带--failed选项的命令显示出来。

[root@linoxide ~]# systemctl --failed

真的超赞!用systemd命令来管理linux系统!

你可以在这篇文章很多地方看到systemctl的用法。

3. 管理服务

让我们来看看systemd是怎么管理系统服务的。

3.1 激活的服务

所有被激活的服务可以同下面这条命令来查看。

[root@linoxide ~]# systemctl list-units -t service

真的超赞!用systemd命令来管理linux系统!

3.2 服务状态

在sysvinit中,我们可以用“service”命令来管理服务,但在systemd中,我们用systemctl这个命令。 我们可以用下面这个命令来查看服务是否在运行。

[root@linoxide ~]# systemctl status dnsmasq

真的超赞!用systemd命令来管理linux系统!

3.3 启动一个服务

用下面这条命令来启动服务。

[root@linoxide ~]# systemctl start dnsmasq

对应于service命令,这个命令不进行输出。但是毋庸置疑,我们可以通过再次查看这个刚刚被启动的服务的status(状态)来确认他是否被成功地启动了。

真的超赞!用systemd命令来管理linux系统!

3.4 停止一个服务

现在聪明的你一定知道怎么在systemd下用命令来关闭服务了吧。

[root@linoxide ~]# systemctl stop dnsmasq

真的超赞!用systemd命令来管理linux系统!

3.5 重启一个服务

类似的,重启系统服务是用‘systemctl restart’来管理的。

[root@linoxide ~]# systemctl restart dnsmasq

真的超赞!用systemd命令来管理linux系统!

3.6 重新加载一个服务

在我们需要重新加载服务的配置文件又不想重启这个服务(例如ssh)时,我们可以用这个命令。

[root@linoxide ~]# systemctl reload sshd

真的超赞!用systemd命令来管理linux系统!

虽然上述几个命令的语法是可以工作的,但是官方文档建议我们用下面这种语法形式来运行命令(LCTT 译注,即使用在服务名后面跟上“.service”的完整名称):

[root@linoxide ~]# systemctl status dnsmasq.service

真的超赞!用systemd命令来管理linux系统!

4. 管理引导时的服务

chkconfig命令被用来管理系统引导时的服务。同样用systemd也可以管理引导时的系统服务。

4.1 检查服务引导时是否运行

这条命令用来确定服务是否是引导时启动的。

[root@linoxide ~]# systemctl is-enabled dnsmasq.service

真的超赞!用systemd命令来管理linux系统!

4.2 让服务在引导时运行

systemctl命令是这样来enable(使之在引导时启动)一个服务的。(这相当于sysvinit中的‘chkconfig on’)

[root@linoxide ~]# systemctl enable dnsmasq.service

真的超赞!用systemd命令来管理linux系统!

4.3 取消服务在引导时运行

类似的,使服务不在引导时启动用这个命令。

[root@linoxide ~]# systemctl disable dnsmasq.service

真的超赞!用systemd命令来管理linux系统!

5. 管理远程系统

所有刚才提到的systemctl命令通常都能被用来管理远程主机,完成这个任务将用到ssh来进行通讯。你只需要像这样将远程主机和用户名添加到systemctl命令后。

[root@linoxide ~]# systemctl status sshd -H root@1.2.3.4

真的超赞!用systemd命令来管理linux系统!

6. 管理目标

Systemd有一个完成与sysVinit的runlevels相似任务的构想。

sysVinit的runlevels大多是以数字分级的。这里是runlevers在systemd中的对应元素。

0 runlevel0.target, poweroff.target

1, s, single runlevel1.target, rescue.target

2, 4 runlevel2.target, runlevel4.target, multi-user.target

3 runlevel3.target, multi-user.target

5 runlevel5.target, graphical.target

6 runlevel6.target, reboot.target

emergency emergency.target

6.1 改变当前目标

当前target可以用这个命令切换。

[root@linoxide ~]# systemctl isolate graphical.target

真的超赞!用systemd命令来管理linux系统!

6.2 列出当前目标

如果你想查看你正处于哪个target中,你需要列出相应的单元。虽然这样操作可能让你不太爽,但是这就是systemd工作的方式。

[root@linoxide ~]# systemctl list-units --type=target

真的超赞!用systemd命令来管理linux系统!

你可以看到“graphical.target”列在此处,这就是我们刚才切换到的目标。现在,让我们切换runlevel到multi-user.target,然后分析下列命令的输出。

[root@linoxide ~]# systemctl isolate multi-user.target
[root@linoxide ~]# systemctl list-units --type=target

真的超赞!用systemd命令来管理linux系统!

6.3 列出默认目标

用这个systemctl命令来查看默认目标。

[root@linoxide ~]# systemctl get-default

真的超赞!用systemd命令来管理linux系统!

6.4 改变默认目标

通过systemctl的set-default命令可以将某个目标设置成默认目标。

[root@linoxide ~]# systemctl set-default graphical.target

真的超赞!用systemd命令来管理linux系统!

7. 记录 systemd 的日志

journald是systemd独有的日志系统,替换了sysVinit中的syslog守护进程。命令journalctl用来读取日志。

[root@linoxide ~]# journalctl

真的超赞!用systemd命令来管理linux系统!

7.1 查看引导信息

运行journalctl -b命令来查看所有引导日志。

[root@linoxide ~]# journalctl -b

真的超赞!用systemd命令来管理linux系统!

7.2 即时显示引导日志

下面这个命令可以实时显示系统日志(类似tail -f)。

[root@linoxide ~]# journalctl -f

真的超赞!用systemd命令来管理linux系统!

7.3 查看特定服务的日志

你可以像这样运用journalctl来查看你只想看到的服务或可执行程序的日志。

[root@linoxide ~]# journalctl /usr/sbin/dnsmasq

真的超赞!用systemd命令来管理linux系统!

8. 电源管理

systemctl命令也可以用来关机,重启或者休眠。

要关机、重启、挂起和休眠,分别使用如下命令:

[root@linoxide ~]# systemctl poweroff
[root@linoxide ~]# systemctl reboot
[root@linoxide ~]# systemctl suspend
[root@linoxide ~]# systemctl hibernate

9. 又及

systemd带来了一整套与操作系统交互的新途径,并且极具特色。举个栗子,你可以用hostnamectl命令来获得你的linux机器的hostname和其它有用的独特信息。

[root@linoxide ~]# hostnamectl

真的超赞!用systemd命令来管理linux系统!


via: http://linoxide.com/linux-command/linux-systemd-commands/

作者:Raghu 译者:szrlee 校对: wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

真的超赞!用systemd命令来管理linux系统!

推荐阅读
  • 本文详细介绍了在 Oracle 数据库中使用 MyBatis 实现增删改查操作的方法。针对查询操作,文章解释了如何通过创建字段映射来处理数据库字段风格与 Java 对象之间的差异,确保查询结果能够正确映射到持久层对象。此外,还探讨了插入、更新和删除操作的具体实现及其最佳实践,帮助开发者高效地管理和操作 Oracle 数据库中的数据。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
    在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
  • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 如何在任意浏览器中轻松安装并使用VSCode——Codeserver简易指南
    code-server 是一款强大的工具,允许用户在任何服务器上部署 VSCode,并通过浏览器进行访问和使用。这一解决方案不仅简化了开发环境的搭建过程,还提供了高度灵活的工作方式。用户只需访问 GitHub 上的官方仓库(GitHub-coder/code-server),即可获取详细的安装和配置指南,快速启动并运行 code-server。无论是个人开发者还是团队协作,code-server 都能提供高效、便捷的代码编辑体验。 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 清华大学出版社 | 杨丹:基于MATLAB机器视觉的黑色素瘤皮肤癌检测技术及源代码分析(第1689期)
    清华大学出版社 | 杨丹:基于MATLAB机器视觉的黑色素瘤皮肤癌检测技术及源代码分析(第1689期) ... [详细]
author-avatar
志薇俊元4565
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有