热门标签 | 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系统!

推荐阅读
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 本文详细介绍了如何在CentOS 7操作系统上安装和配置Grafana,包括必要的依赖项安装、插件管理以及服务启动等步骤。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
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社区 版权所有