systemd的基本使用

systemctl命令

  • 格式:systemctl

    • .service 可以省略不写,系统会自动补全
  • 配置文件

    • 每一个Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit
    • 配置文件主要放在/usr/lib/systemd/system目录,也可能在/etc/systemd/system目录

系统管理

# 检查系统上是否安装了systemd
systemd --version

# 重启系统
systemctl reboot

# 显示主机信息
hostnamectl

#显示主机时区
timedatectl

管理服务

  • systemctl命令在enabledisablemask子命令中增加了--now选项,可以实现激活的同时启动服务,取消激活的同时停止服务

  • 启动

    • systemctl start name.service
  • 停止

    • systemctl stop name.service
  • 重启

    • systemctl restart name.service
  • 状态

    • systemctl status name.service
  • 重新加载配置文件

    • 这里的配置文件指的是/usr/lib/systemd/system目录中的文件
      • 不是程序本身的配置文件
    • systemctl reload name.service
  • 设定某服务开机自启

    • 相当于在/etc/systemd/system目录添加一个符号链接,指向/usr/lib/systemd/system里面的name.service文件
      • 开机时,Systemd只执行/etc/systemd/system目录里面的配置文件
    • 设置开机启动以后,软件并不会立即启动
    • systemctl enable name.service
  • 取消开机自启

    • systemctl disable name.service
  • 禁用服务

    • 防止服务被其他服务间接启动,也无法通过 start 或 restart 命令来启动服务
    • systemctl mask name.service
  • 启用服务

    • 仅针对于已禁用的服务
    • systemctl unmask name.service
  • 杀死服务及其子进程

    • systemctl kill name.service
  • 列出服务所有依赖

    • systemctl list-dependencies name.service

服务查看

#查看服务激活与否
systemctl is-active name.service

#查看服务的开机自启状态
systemctl is-enabled name.service

#查看系统所有运行的服务项
systemctl list-units --type=service

journalctl命令

  • systemd日志的配置文件是/etc/systemd/journald.conf
# 需要root权限

# 查看所有日志(默认情况下 ,只保存本次启动的日志)
journalctl
# 查看系统本次启动的日志
journalctl -b
# 显示尾部的最新n行日志;默认为10
journalctl -n 20
# 滚动显示
journalctl -f

# 查看指定服务(unit)的日志
journalctl -u <service name> 
# 根据pid查看服务日志
journalctl -b _PID=xxx

# 查看指定时间的日志
journalctl --since="2012-10-30 18:17:16"
journalctl --since "20 min ago"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"

守护进程概念

  • 守护进程就是Daemon程序,是一种在系统后台执行的程序,它独立于控制终端并且执行一些周期任务或触发事件
    • 通常被命名为"d"字母结尾,如httpdsyslogdsystemddockerd
  • 通过&符号,可以把命令放到后台执行,但它与守护进程是不同的
    • 守护进程与终端无关,是被init进程收养的孤儿进程;而后台进程的父进程是终端,仍然可以在终端打印
    • 守护进程在关闭终端时依然坚挺;而后台进程会随用户退出而停止,除非加上nohup
    • 守护进程改变了会话、进程组、工作目录和文件描述符,后台进程直接继承父进程(shell)的

service与systenctl

  • service命令实质是去执行/etc/init.d/目录下的脚本
  • systemctl命令兼容了service
  • 命令替换
    • 启动service name start ==> systemctl start name.service
    • 停止:service name stop ==> systemctl stop name.service
    • 重启:service name restart ==> systemctl restart name.service
    • 状态:service name status ==> systemctl status name.service

syslog与systemd-journal

  • syslog 是一个协议,它定义了消息的格式
    • 真正运行在系统里的是 syslogd,一个守护程序
    • 它监听socket /dev/log 并来自这个 socket 的信息写入日志文件
    • /var/log/messages/var/log/syslog
  • systemd-journald 是 syslog 的补充
    • systemd 的日志保存在 /run/log/journal 中,系统重启就会清除
    • 通过新建 /var/log/journal 目录,日志会自动记录到这个目录中,并永久存

systemd架构图

systemd的基本使用_第1张图片

参考

  • Systemd (简体中文) - ArchWiki

    • 下半部分介绍了启动错误排查过程
  • Systemd 入门教程:命令篇

  • Systemd 入门教程:实战篇

你可能感兴趣的:(Linux)