一系统服务的控制
1.systemd
系统初始化程序,系统开始的第一个进程,pid为1
2.systemctl 命令
systemctl list-units ##列出当前系统服务的状态
systemctl list-unit-files ##列出服务的开机状态
systemctl status sshd ##查看指定服务的状态
systemctl stop sshd ##关闭指定服务
systemctl start sshd ##开启指定服务
systemctl restart sshd ##从新启动服务
systemctl enable sshd ##设定指定服务开机开启
systemctl disable sshd ##设定指定服务开机关闭
systemctl reload sshd ##使指定服务从新加载配置
systemctl list-dependencies sshd ##查看指定服务的倚赖关系
systemctl mask sshd ##冻结指定服务
systemctl unmask sshd ##启用服务
systemctl set-default multi-user.target ##开机不开启图形
systemctl set-default graphical.target ##开机启动图形
setterm ##文本界面设定color
实验
systemctl list-units ##列出当前系统服务的状态
systemctl list-unit-files 列出服务的开机状态
systemctl status [sshd] ##查看指服务(sshd)的状态
systemctl stop|start|restart sshd ##关闭|开启|重新开启某个指定服务(sshd)
systemctl enable|dasable sshd ##设定指定服务开机启动|开机关闭sshd
systemctl reload sshd ##设定sshd服务重新加载配置
systemctl mask|unmask sshd ##冻结sshd服务|解冻sshd服务
syetemctl list-dependencies sshd ##查看sshd服务的依懒关系
systemctl set-default multi-user.target ##开机不开启图形界面,reboot开启重启进入字符界面
systemctl set-default graphical.target ##开机启动图形界面
setterm ##文本界面设置colo(u)r,查看帮助获取setterm的用法
3.服务状态
查看命令:systemctl status 服务名称
loaded ##系统服务已经初始化完成,加载过配置
active(running) ##正有一个或多个程序正在系统中执行,
atcive(exited) ##仅执行一次就正常結束的服务,
# 目前并没有任何程序在系統中执行
atcive(waiting) ##正在执行当中,
# 不过还再等待其他的事件才能继续处理
inactive ##服务关闭
enbaled ##服务开机启动
disabled ##服务开机不自启
static ##服务开机启动项不可被管理
failed ##系统配置错误1.文件的上传与下载
比如:
二系统文件的传输
1.传输
scp file username@ip:/dir ##上传文件file
scp username@ip:/dir/file /dir ##下载文件/dir/file
实验:把server上/mnt下的文件file传到desktop的桌面
把server桌面上的文件file传到desktop的桌面
2.rsync
rsync [参数] file username@ip:/dir
-r ##同步目录
-l ##不忽略链接文件
-p ##不忽略文件权限
-D ##不忽略设备文件
-t ##不忽略时间戳
-g ##不忽略所有组
-o ##不忽略所有人
实验:实验前在desktop主机上清空mnt下的文件,新建目录test,切换目录test,新建文件file1~9,ln -s file0 westos 制作file0的链接文件,复制/dev/pts/*的文件到test中,ls -l查看test中文件内容。返回上一级目录
将desktop中/mnt下的目录test上传到server主机的/mnt下 ,在mnt工作目录台上执行命令:rsync -r test root@172.25.254.21:/mnt,发现连接文件及设备文件被跳过没有上传成功
删除servermnt下的所有文件,再次重新执行命令:rsync -rl test root@172.25.254.21:/mnt
发现链接文件上传成功,但设备文件依旧没上传
删除server主机mnt下的所有文件,重新执行命令:rsync -lrD test root@172.25.254.21:/mnt,设备文件及连接都上传成功
Server主机下,需要下载desktop主机上mnt下的test中所有文件并保持时间戳不变。执行命令:rsync -lrDt root2172.25.254.66:/mnt/test
Desktop主机上,需要上传mnt下的test中所有文件到Server主机上,并保持时间戳不变,所有人所有组不变,新改权限777不变,执行命令:rsync -lrDt ogp test root2172.25.254.21:/mnt
三文件归管理
1.文件的归档--打包
文件的归档就是把多个文件变成一个归档文件,就是一个打包的过程
tar 参数 新名 原名
c ##创建
f ##指定归档文件名称
t ##显示归当中的内容
r ##向归档中添加文件
--get ##取出归档中的单个文件
--delete ##删除归档中单铬文件
x ##取出归档文件中所有内容
-C ##指定解档目录
-z ##归档的基础上进行gz格式压缩
-j ##归档的基础上进行bz2格式压缩
-J ##归档的基础上进行xz格式压缩
实验:
将/etc打包归档到桌面,并命名为etc.tar
tar ft etc.tar ##显示归当etc.tar中的内容(截取部分)
新建的文件file将其添加到etc.tar中,并显示etc.tar中的file
将归档etc.tar中的file取出来
将file添加到etc.tar中,并删除file
把file添加到etc.tar中,并取出etc.tar中所有内容
解档etc.tar 到mnt
将/etc目录进行gz格式压缩;命令:tar -zcf etc.tar.gz /etc
将/etc目录进行bz2格式压缩;执行命令:tar -cfj etc.tar.bz2 /etc
将etc进行xz格式压缩;命令:tar -cfJ etc.tar.xz /etc
2.压缩
z j J前边的-符号可有可无
(1)gz
gzip etc.tar ##把归档文件etc.tar压缩成gz格式的压缩包
gunzip etc.tar.gz ##将gz格式压缩包etc.tar.gz解压为etc.tar归档文件包
--------
tar zcf etc.tar.gz /etc ##先把etc归档etc.tar在进行gz格式压缩
tar zxf etc.tar.gz ##对gz格式压缩包etc.tar.gz进行解压为etc目录
实验:
gzip etc.tar 执行命令前要保证当前工作目录存在etc.tar归档包
gunzip etc.tar.gz 解压etc.tar.gz压缩包
归档的基础上进行
tar zcf etc.tar.gz /etc 先把etc归档etc.tar在进行gz格式压缩
tar zxf etc.tar.gz 解压并解档gz格式压缩包
(2)bz2
bzip2 etc.tar ##将etc.tar压缩成bz2格式的压缩包etc.tar.bz2
bunzip2 etc.tar.bz2 ##解压bz2格式压缩包为归档文件etc.tar
tar jcf etc.tar.bz2 /etc ##把文件归档为tar并压缩成bz2
tar jxf etc.tar.bz2 ##解压并解档bz2格式压缩包
实验:
(3)xz
xz etc.tar ##压缩成xz格式
unxz etc.tar.xz ##解压xz格式压缩包
tar Jcf etc.tar.xz /etc ##把文件归档为tar并压缩成zx
tar Jxf etc.tar.xz ##解压并解档xz格式压缩包
实验:
(4)zip
zip -r etc.tar.zip etc.tar ##把归档文件etc.tar压缩成zip格式
unzip etc.tar.zip ##解压zip格式压缩包
实验:
四系统日志
进程和操作系统内核需要能够为发生的事件记录日志,这些日志可用于系统审核和问题的故障排除,一般这些日志永久保存在/var/log目录中,系统文件记录信息有以下。
1.系统日志的默认分类
/var/log/messages ##系统服务日志,包括服务的信息,报错等
/var/log/secure ##系统认证信息日志
/var/log/maillog ##系统邮件服务信息日志
/var/log/cron ##系统定时任务信息日志
/var/log/boot.log ##姿态启动信息日志
2.日志管理服务
(1)rsyslog 负责采集日志和分类存放日志
(2)主配置文件/etc/rsyslog.conf
(3)日志设备(可以理解为日志类型)
auth ##pam产生的日志
authpriv ##ssh,ftp等登录信息的验证信息
cron ##时间任务相关
kern ##内核
lpr ##打印
mail ##邮件
mark(syslog)–rsyslog ##服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp ##unix to unix copy, unix主机之间相关的通讯
local 1~7 ##自定义的日志设备
(4)日志级别
debug ##有调式信息的,日志信息最多
info ##一般信息的日志,最常用
notice ##最具有重要性的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit ##严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert ##需要立刻修改的信息
Emerge ##内核崩溃等严重信息
none ##什么都不记录
##注意:从上到下,级别从低到高,记录的信息越来越少
##详细的可以查看手册: man 3 syslog
3.日志同步
第一步:systemctl stop firewalld.service ##关闭两台主机的防火墙
第二步进入配置文件:/etc/rsyslog.conf,编辑发送方就是接收日志的主机ip,
第三步日志接收主机进入/etc/rsyslog.conf进行文件配置
第四步测试
4.日志的采集格式
配置文件:/etc/rsyslog.conf
格式:$template action, “%timegenerated% %FROMHOST-IP% %syslogtag% %msg%\n”
其中:%timegenerated% ##显示日志时间
%FROMHOST-IP% ##显示主机ip
%syslogtag% ##日志记录目标
%msg% ##日志内容
\n ##换行
实验:
5.日志的同步管理
第一步:systemctl stop firewalld ##关闭两台主机的火墙
第二步:配置日志发送方
*.* @172.25.254.51 ##通过udp协议把日志发送到51主机
说明:1配置格式中“*.*”第一个星号表示日志分类,来源,比如关于内核knel,邮件mail的,第二个星号表示优先级别的,比如emerge,alert,erro等
说明:2 @ip表示使用udp传输协议,特点不是很可靠但效率高,@@ip,表示使用TCP协议传输,安全可靠
第三步配置日志接受方
15 $ModLoad imudp ##日志接收插件
16 $UDPServerRun 514 ##日志接收插件使用端口
**netstat -anulpe | grep rsyslog
udp 0 0 0.0.0.0:514 0.0.0.0:* 0 122073 32654/rsyslogd
udp6 0 0 :::514 :::* 0 122074 32654/rsyslogd
-a ##all
-n ##不做解析
-t ##tcp
-u ##udp
-p ##进程名称
-e ##扩展信息
第四步测试
> /var/log/messages ##两边都作
logger test message ##日志发送方
tail -f /var/log/message ##日志接收方
实验:
把localhost主机的日志村到student主机的的/var/log/messages下
*关闭两台主机的防火墙
systemctl stop firewalld.service
**配置发送方主机/etc/rsyslog.conf文件
vim /etc/rsyslog.conf
两台主机
完成配置后wq退出保存记得重启rsyslog.service日志服务:systemctl restart rsyslog.service
***配置接收方rsyslog配置文件:vim /etc/rsyslog.conf
同样配置完成后wq退出保存,重启rsyslog日志服务:systemctl restart rsyslog.service
****进行实验前可以在虚拟机中选择清空两台主机日志:> /var/log/messages
在接收方主机使用日志实时监控命令:tail -f /var/log/messgaes
如下图,右边localhost主机通过logger进行实验测试,左边student主机会显示
6.时间的同步
主配置文件:/etc/chrony.conf
@服务端
vim /etv/chrony.conf
文件内容:
21 # Allow NTP client access from local network.
22 allow 172.25.254.51/24 ##允许谁去同步我的时间
27 # Serve time even if not synchronized to any NTP server.
28 local stratum 10 ##不去同步任何人的时间,时间同步服务器级别
systemctl restart chronyd.service
systemctl stop firewalld.service
客户端
配置文件vim /etc/chrony.conf
vim /etc/ssh/sshd_conf
文件内容:
3 server 0.rhel.pool.ntp.org iburst
4 server 1.rhel.pool.ntp.org iburst====> server ntpserverip iburst
5 server 2.rhel.pool.ntp.org iburst====>
6 server 3.rhel.pool.ntp.org iburst
systemctl restart chronyd.service
systemctl restart ssh.conf
测试:
chronyc sources -v
实验:(实验前关闭两台主机的防火墙)
服务端配置/etc/chrony.conf文件
22和29行
22行表示允许172.25.254.51这台主机同步我的时间
29行表示不去同步任何人的时间,除了我这台主机
重启该机的chrony服务,
@客户端配置
关闭防火墙,同样vim /etc/chrony.conf
3 ,4 ,5,6,7行内容进行修改配置
修改后内容
重启chrony.conf服务,配置/etc/ssh/ssh_config ,完成后systemctl restart sshd.service
Wq退出保存重启chrony服务;systenctl chronyd.service进行测试:chronyc sources -v
7.日志分析工具journal
systemd-journald 服务
journalctl ##直接执行,浏览系统日志
-n 3 ##显示最新3条
-p err ##显示报错
-f ##监控日志
--since --until ## --since "[YYYY-MM-DD] [hh:mm:ss]"从什么时间到什么时间的日志
-o verbose ##显示日志能够使用的详细进程参数
_UID= // 进程 uid
_PID= // 进程 id
_GID= // 进程 gid
_HOSTNAME= // 进程所在主机
_SYSTEMD_UNIT= // 服务名称
_COMM= // 命令名称
查看systemd-journald服务状态
journalctl 浏览系统日志
journalcl -n 3
浏览最新三条
journalctl -p err 显示报错
journalctl -f
监控日志
journal --since --until 查看特定时间段的日志信息since/until【hh-mm-ss】
查看2018年1月10日09时45分00秒开始的日志
查看今天(1月10号)截至9点点48分之前的日志
Journalctl -o verbose显示日志能够显示的详细参数
journalctl _PIG=2612
**对systemd-journald管理
默认情况下,systemd 日志保存在 /run/log/journal 中 , 这意味着系统重启时会被清除,那如果将日志保存在/var/log/journal目录,这样做的优点是启动后就可以利用历史数据,形成永久日志
实现步骤 :
mkdir /var/log/journal ##新建/var/log下的目录journal
chown root.systemd-journal /var/log/journal/ ##该目录所有人为所有组
chmod 2755 /var/log/journal/ ##设定权限2755,
killall -1 systemd-journald ##重新加载systemd-journald服务配置
实验:
reboot 重启后会出现一个文件 user-42.journal
journalctl浏览日志,reboot前的日志写进去了
8.timedatectl命令
timedatectl status ##显示当前时间信息
set-time ##设定当前时间
set-timezone ##设定当前时区
set-local-rtc 0|1 ##设定是否使用utc时间
实验:timedatectl
timedatectl status显示当前时间
Local time当地时间;universal time世界时;rtc time:实时时钟
timedatectl set-time “yyyy-mm-dd hh:mm:ss”
timedatectl list-timezones 显示时区
时区设定
timedatectl set-timezone Asia/Shanghai
timedatectl set-local-rtc 0/1 配置文件/etc/sdjtime ##设置是否使用utc时间也就是东经0度(东一区)时间 ,0为否,1为是