Linux

Linux课堂笔记(4)

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服务器地址不需要重启