Linux基础:systemctl和journalctl常用命令

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Linux基础:systemctl和journalctl常用命令

systemctl 介绍

Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。

重要:Systemctl接受服务(.service),挂载点(.mount),套接字(.socket)和设备(.device)作为单位。


systemctl 常用 命令

Systemd的版本

systemd --version


systemd和systemctl的二进制文件和库的安装位置

# whereis systemd 
systemd: /usr/lib/systemd /etc/systemd /usr/share/systemd /usr/share/man/man1/systemd.1.gz
# whereis systemctl
systemctl: /usr/bin/systemctl /usr/share/man/man1/systemctl.1.gz


列出所有可用的单位

# systemctl list-unit-files
UNIT FILE                                   STATE   
proc-sys-fs-binfmt_misc.automount           static  
dev-hugepages.mount                         static  
dev-mqueue.mount                            static  
proc-sys-fs-binfmt_misc.mount               static  
sys-fs-fuse-connections.mount               static  
sys-kernel-config.mount                     static  
sys-kernel-debug.mount                      static  
tmp.mount                                   disabled
brandbot.path                               disabled
.....


列出所有运行单元

# systemctl list-units
UNIT                                        LOAD   ACTIVE SUB       DESCRIPTION
proc-sys-fs-binfmt_misc.automount           loaded active waiting   Arbitrary Executable File Formats File Syste
sys-devices-pc...0-1:0:0:0-block-sr0.device loaded active plugged   VBOX_CD-ROM
sys-devices-pc...:00:03.0-net-enp0s3.device loaded active plugged   PRO/1000 MT Desktop Adapter
sys-devices-pc...00:05.0-sound-card0.device loaded active plugged   82801AA AC'97 Audio Controller
sys-devices-pc...:0:0-block-sda-sda1.device loaded active plugged   VBOX_HARDDISK
sys-devices-pc...:0:0-block-sda-sda2.device loaded active plugged   LVM PV Qzyo3l-qYaL-uRUa-Cjuk-pljo-qKtX-VgBQ8
sys-devices-pc...0-2:0:0:0-block-sda.device loaded active plugged   VBOX_HARDDISK
sys-devices-pl...erial8250-tty-ttyS0.device loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS0
sys-devices-pl...erial8250-tty-ttyS1.device loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS1
sys-devices-pl...erial8250-tty-ttyS2.device loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS2
sys-devices-pl...erial8250-tty-ttyS3.device loaded active plugged   /sys/devices/platform/serial8250/tty/ttyS3
sys-devices-virtual-block-dm\x2d0.device    loaded active plugged   /sys/devices/virtual/block/dm-0
sys-devices-virtual-block-dm\x2d1.device    loaded active plugged   /sys/devices/virtual/block/dm-1
sys-module-configfs.device                  loaded active plugged   /sys/module/configfs
...


检查单元是否启用?

1. [root@10 ~]# systemctl is-enabled kubelet
2. enabled


检查单元或服务是否正在运行?

[root@10 ~]# systemctl status kubelet -l
● kubelet.service - kubelet: The Kubernetes Node Agent
   Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: active (running) since Sat 2019-11-16 02:33:56 CST; 1 weeks 1 days ago
     Docs: https://kubernetes.io/docs/
 Main PID: 566971 (kubelet)
   Memory: 90.4M
   CGroup: /system.slice/kubelet.service
           └─566971 /usr/bin/kubelet 
--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf 
--kubeconfig=/etc/kubernetes/kubelet.conf 
--config=/var/lib/kubelet/config.yaml 
--cgroup-driver=cgroupfs 
--network-plugin=cni 
--pod-infra-container-image=10.10.101.175/k8s-deploy/pause:3.1 
--system-reserved=memory=782Mi 
--system-reserved-cgroup=/system.slice


如何在Linux中启动,重新启动,停止,重新加载和检查服务(httpd.service)的状态

# systemctl start httpd.service
# systemctl restart httpd.service
# systemctl stop httpd.service
# systemctl reload httpd.service
# systemctl status httpd.service


如何在引导时激活服务并启用或禁用服务(系统引导时自动启动服务)

# systemctl is-active httpd.service
# systemctl enable httpd.service
# systemctl disable httpd.service


journalctl

Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)。日志的配置文件是/etc/systemd/journald.conf。

journalctl功能强大,用法非常多。


journalctl 常用命令

# 查看所有日志(默认情况下 ,只保存本次启动的日志)

$ journalctl

# 查看内核日志(不显示应用日志)

$ journalctl -k

# 查看系统本次启动的日志

$ journalctl -b

$ journalctl -b -0

# 查看上一次启动的日志(需更改设置)

$ journalctl -b -1

# 查看指定时间的日志

$ journalctl --since="2012-10-30 18:17:16"

$ journalctl --since "20 min ago"

$ journalctl --since yesterday

$ journalctl --since "2015-01-10" --until "2015-01-11 03:00"

$ journalctl --since 09:00 --until "1 hour ago"

# 显示尾部的最新10行日志

$ journalctl -n

# 显示尾部指定行数的日志

$ journalctl -n 20

# 实时滚动显示最新日志

$ journalctl -f

# 查看指定服务的日志

$ journalctl /usr/lib/systemd/systemd

# 比如查看docker服务的日志

$ systemctl status docker

# 查看指定进程的日志

$ journalctl _PID=1

# 查看某个路径的脚本的日志

$ journalctl /usr/bin/bash

# 查看指定用户的日志

$ journalctl _UID=33 --since today

# 查看某个 Unit 的日志

$ journalctl -u nginx.service

$ journalctl -u nginx.service --since today

# 实时滚动显示某个 Unit 的最新日志

$ journalctl -u nginx.service -f

# 合并显示多个 Unit 的日志

$ journalctl -u nginx.service -u php-fpm.service --since today

# 查看指定优先级(及其以上级别)的日志,共有8级

# 0: emerg

# 1: alert

# 2: crit

# 3: err

# 4: warning

# 5: notice

# 6: info

# 7: debug

$ journalctl -p err -b

# 日志默认分页输出,--no-pager 改为正常的标准输出

$ journalctl --no-pager

# 以 JSON 格式(单行)输出

$ journalctl -b -u nginx.service -o json

# 以 JSON 格式(多行)输出,可读性更好

$ journalctl -b -u nginx.serviceqq  -o json-pretty

# 显示日志占据的硬盘空间

$ journalctl --disk-usage

# 指定日志文件占据的最大空间

$ journalctl --vacuum-size=1G

# 指定日志文件保存多久

$ journalctl --vacuum-time=1years

 


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
28天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
53 14
Linux 10 个“who”命令示例
|
7天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
30 8
|
16天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
103 20
|
17天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
44 7
|
2月前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
36 9
|
2月前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
2月前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
159 3
|
Shell Linux 数据安全/隐私保护
97条 Linux 常用命令总结,速速收藏!(四)
Linux在我们学习和工作中都会遇到,了解一点常用命令让你不再是Linux小白。跟我一起来学习这些常用命令吧~
|
移动开发 Linux 数据库
97条 Linux 常用命令总结,速速收藏!(二)
Linux在我们学习和工作中都会遇到,了解一点常用命令让你不再是Linux小白。跟我一起来学习这些常用命令吧~
|
安全 Java Linux
linux应急常用命令+技巧总结
不输的办法只有一个,就是不上场
852 0