systemd简介
Systemd是Linux系统工具也是系统基础组件的集合用来启动守护进程。提供了一个系统和服务管理器,是系统启动的启动第一个程序、运行为 PID 1,并负责启动其它程序其中systemctl是systemd的管理控制工具
Systemd守护进程管理linux的启动,包括服务启动和服务管理;它可以在系统引导时以及运行中的系统上激活系统资源,服务器守护进程和其它进程
守护进程概念:在执行各种任务的后台等待或运行的进程,在系统引导时自动启动并持续运行至关机或被手动停止,通常守护进程的名称以字母d结尾
红帽中Linux的systemd 守护进程功能(PID=1)
- 同时启动多个服务,提高系统的启动速度
- 按需启动守护进程,不需要单独的服务
- 自动服务依赖关系管理。例如:只有网络可用时,依赖网络的服务才会尝试启动
systemd 使用单元管理不同类型的对象
- 服务单元(.service):代表系统服务,用于启动经常访问的守护进程,如web服务器
- 举例: systemctl status sshd.service
systemctl输出的服务状态
控制服务命令
systemctl status sshd.service systemctl is-active sshd.service systemctl is-enabled sshd.service systemctl enable sshd.service systemctl disable sshd.service systemctl stop sshd.service systemctl start sshd.service systemctl restart sshd.service systemctl reload sshd.service systemctl reload-or-restart sshd.service: systemctl is-failed sshd.service systemctl mask UNIT systemctl unmask UNIT
SSH
OpenSSH:Secure Shell 协议使系统能够以加密的方式进行通信
SSH登录方式
- 交互式shell会话方式:ssh username@IP address
- 非交互式shell会话方式:ssh user@IP address hostname
SSH服务器配置文件位置:/etc/ssh/sshd_config
客户端首次登录服务器过程
- 服务器开启SSH服务时自动创建3组6个key文件,作为未来服务器指纹信息,位置/etc/ssh/
- 客户端首次登录服务器时,服务器将公钥副本发送给客户端,客户端存储服务器公钥副本的默认位置:
~/.ssh/known_hosts,作为之后登录服务器的指纹信息
- 客户端存储的主机公钥信息字段含义
第一个字段:共享该公钥的主机名和IP地址列表 第二个字段:公钥加密算法 第三个字段:公钥本身
- 基于SSH密钥的身份验证概念:在不使用密码的情况下进行身份验证,身份验证基于1对秘钥(公钥和私钥)
客户端
a. ssh-keygen:生成密钥文件,一把公钥,一把私钥 b. 公钥和私钥位置:~/.ssh/ c. ssh-copy-id username@IP address:将公钥副本发送给服务器,用于验证私钥
- 服务器存放客户端公钥副本位置:~/.ssh/authorized_keys
ssh-keygen -f :指定保存公钥和私钥的新目录位置 ssh-copy-id -i:指定复制的公钥的文件位置
- 自定义OPENSSH服务配置:/etc/ssh/sshd_config
1) 禁止root用户远程登录:PermitRootLogin no 2) 只允许root用户基于密钥登录:PermitRootLogin without-password 3) 禁止使用密码登录:PasswordAuthentication no
RHEL8:systemd-journald服务和rsyslog服务处理RHEL8的日志消息
- systemd-journald服务:是操作系统事件日志架构的核心。收集的事件消息包括:内核,引导过程早期阶段的输出,守护进程,运行时的标准输出以及标准错误,以及syslog事件,将收到的消息写进带有索引的结构化系统日志中,默认该日志存储在系统重启后不保留的文件系统上
- rsyslog服务:从日志中读取systemd-journald收到的syslog消息,对syslog消息进行排序,将它们写入到在系统重启后不保留的日志文件中,或者根据配置将它们转发给其它服务
- syslog优先级
- rsyslog 配置规则位于:/etc/rsyslog.conf和/etc/rsyslog.d目录中扩展名为.conf的任何文件。左侧表示与规则匹配的syslog消息的类型和严重性;右侧表示要将日志消息保存到的文件或者消息要发送到的其它位置;*表示匹配所有值
1) 记录该日志条目的时间戳 2) 发送该日志消息的主机 3) 发送该日志消息的程序或进程名称和PID编号 4) 发送的实际消息
- 手动发送syslog消息:logger命令默认将优先级为notice(user.notice)消息发送到rsyslog服务,-p 选项指定其它级别
- 举例:向rsyslog服务发送消息并记录在/var/log/boot.log日志文件中
logger -p local7.notice “Log entry create on host” cat /var/log/boot.log
课堂练习
1) 添加配置文件/etc/rsyslog.d/debug.conf vim /etc/rsyslog.d/debug.conf 2) 将任何服务的优先级为debug或以上的所有消息记录到新的/var/log/message-debug日志文件中 *.debug /var/log/messages-debug systemctl restart rsyslog.service 3) logger测试:使用-p指定user.debug,显示的消息是debug message test 123456 logger -p user.debug "debug message test 123456“
日志检索:journalctl
1) -n:设置显示日志最后的条数,默认显示最后10条日志 2) -f: 动态输出系统日志最后10行,新日志条目写入到日志中时,继续输出它们 3) -p:接受优先级的名称或编号作为参数,显示该优先级别以上的日志条目 4) 举例:journalct -p err 5) --since和--until选项:限制特定时间段。格式”YYYY-MM-DD hh:mm:ss”,必须使用双引号,以保留选项中的空格,也可以使用yesterday,today,tomorrow 6) journalctl --since today;journalctl --since "2020-12-12 12:12:00" --until "2021-1-1 12:12:00" 7) journalctl --since “-1 hour” 上一小时的所有条目
- 系统日志常用字段用于搜索与特定进程或事件相关的行
1) COMM:命令的名称 2) _PID:进程的PID 3) _UID:运行该进程的用户的UID 4) _SYSTEMD_UNIT:启动该进程的systemd单元 5) 举例:journalctl _SYSTEMD_UNIT=sshd.service
- 永久存储系统日志
1) 系统日志默认保存位置:/run/log/journal目录中,系统重启日志会被清除 2) 配置文件 :/etc/systemd/journal.conf 3) storage 参数决定系统日志存储方式(默认方式auto) a. persistent:系统重启后持久保留,日志存储位置/var/log/journal目录中 b. volatile:系统重启后不保留,日志存储位置/run/log/journal目录中 c. auto:由rsyslog决定是否持久保留。如果/var/log/journal目录存在,那么rsyslog会使用持久保留;否则使用易失性存储。 d. systemctl restart systemd-journald.service
设置本地时钟和时区
1) timedatectl:显示当前的时间相关系统设置(当地时间;伦敦时间;硬件时间) 2) timedatectl list-timezones:显示时区 3) timedatectl set-ntp:设置启动或禁用NTP同步(true;false)
配置和监控Chronyd服务
Chronyd服务通过与配置的NTP服务器进行同步,调整本地硬件时钟(RTC)
server和peer:在配置文件/etc/chrony.conf中配置
chronyd指向本地时间源:server classroom.example.com iburst
systemctl restart chronyd.service
- 举例:配置系统,使其成为vvv.zzz.example.com的NTP客户端
1) systemctl status chronyd.service 2) vim /etc/chrony.conf server vvv.zzz.example.com iburst systemctl restart chronyd.service
网络概念
- TCP/IP网络模型
- IPv4地址和掩码
- 网关和路由
- 子网划分
- 网络配置基础命令
ip [-s ] link show 网卡名:显示指定网卡链路层信息(-s表示统计信息) ip [-s ] address show 网卡名:显示指定网卡网络层信息(-s表示统计信息) ping:检测主机之间的连通性 ip route:路由信息 route -n:显示内核路由表
- 从命令行配置网络
1) NetworkManager.service监控和管理网络设置的守护进程。命令行和图形工具与NetworkManager通信,将配置文件保存在/etc/sysconfig/network-scripts目录中 2) nmcli基础命令 nmcli device status:显示所有网络设备的状态 nmcli connection show:显示所有连接的列表 nmcli connection add con-name shida type ethernet:添加一个名为shida的连接 nmcli connection up shida:激活shida连接 nmcli connection down shida:关闭shida连接 nmcli connection delete shida:删除shida连接及其配置文件 nmcli device disconnect ens160(网络接口名称):关闭网络接口 nmcli connection add con-name shida ifname ens160 type ethernet ipv4.addresses 1.1.1.1/24 ipv4.gateway 1.1.1.2 nmcli connection modify ens160 con-name abc:修改网络连的名字 nmcli connection reload:重新读取网络连接配置文件,使其生效
- 图形化桌面配置网络
- nmtui配置网络
- 配置文件编辑网络
配置主机名和名称解析
- 置系统主机名
hostname xxxx:立刻生效(重新开启下终端),重启失效 配置文件/etc/hostname:当前不生效,重启生效 hostnamectl set-hostname xxxx:立刻生效(重新开启下终端),重启仍有效
- 配置名称解析
1) 默认查找文件/etc/hosts;如果没有,那么使用DNS域名服务器查询 2) /etc/nsswitch.conf:存储名称切换文件 hosts: dns files:当/etc/hosts和DNS发生冲突时候,DNS优先! hosts: files dns:当/etc/hosts和DNS发生冲突时候,hosts文件优先(默认)
- 配置本地DNS
1) 配置文件位置:/etc/resolv.conf 2) nameserver:查询的名称服务器IP地址,最多指定3个;修改dns服务器地址不需要重启