系统管理简介
系统管理
Linux基础
走进Linux
-
Linux历史
- Linux之父:Linus Torvalds林纳斯.托瓦兹
- 1994 年,Torvalds 发布 Linux-v1.0
- 1996 年,Torvalds 发布 Linux-v2.0,确定了 Linux 的吉祥物:企鹅
-
常见Linux发行版
- Linux Mint、Ubuntu 乌班图、Debian GNU、openSUSE、CentOS、Redhat
-
CentOS
- 最新版本:centos stream 9;使用版本:centos linux 7
- 红帽 red-hat IBM (红帽认证:RHCSA>RHCE>RHCA 使用红帽收费版rhel)
- https: #www.centos.org/download/
-
服务器简介
IDC:互联网数据中心
机柜:用来存放计算机和相关控制设备的物件
物理服务器:机架式服务器、塔式服务器、刀片式服务器、机柜式服务器
云服务器:公有云、私有云、混合云、容器云
企业通道机(堡垒机、跳板机):登录功能、账号管理、身份认证、资源授权、访问控制-
华为云服务器
www.huaweicloud.com 注册 -> 登录 -> 实名认证 -> 绑定邮箱 -> 开发者免费试用专区
创建实例(实例==云服务器ECS)
控制台 -> 选择服务器位置 -> 服务列表 -> 弹性云服务器ECS -> 更多
云服务器-ECS;公网IP-EIP;私网IP-VPC
-
系统安装
-
VMware使用
-
创建虚拟机
文件 -> 新建虚拟机 -> 自定义-> 兼容性与版本匹配 -> 稍后安装 -> Linux cenos 7 -> 自定义名称位置 -> 处理器数量不超过电脑本身 -> 内存不超过电脑本身 -> 网络地址转换 -> lsi logic-scsi -> 创建新虚拟磁盘 -> 拆分成多个文件 -> 自定义文件位置 -> 确认完成
-
虚拟机使用
启动、关闭、挂起、重启
快照(备份还原点) -> 拍摄、恢复
管理 -> 克隆、从磁盘中删除
设置 -> 添加、修改 -
虚拟机网络类型
-
网络地址转换(NAT)
可以跟宿主机互相通信,及访问宿主机同一网段的所有服务器,只能被宿主机访问
-
桥接:虚拟机IP与宿主机本身处于同一网段
-
仅主机:虚拟机只能跟宿主机通信
-
-
-
安装centos操作系统
我的计算机 -> CD/DVD配置IOS镜像文件 -> 开启此虚拟机 -> 选择系统install centos 7 -> 选择语言 -> 设置时区(亚洲上海) -> 软件选择安装环境 -> 安装位置自定义分配分区/boot / -> 关闭KDUMP -> 打开网络、自定义主机名 -> 关闭SECURITY -> 开始安装 -> 设置用户密码 -> 重启
-
mobaxterm使用
- 远程连接工具,连接虚拟机(xshell:免费版本 不能用于商业;finalshell)
- ssh 远程连接协议 端口号:22
- 使用:session -> ssh -> 填ip 用户名root 端口号22 -> ok -> 输密码
基本操作
-
shell介绍
用户登录到系统就会被分配一个shell。shell是命令解释器,是人与计算机交互的接口。CentOS系统默认的shell是bash
-
打开终端
-
远程连接创建会话
-
桌面版
- 右键打开终端
- 活动终端上ctrl+shift+t
- alt+F2输入gnome-terminal
- 系统右键在终端打开
-
退出
- exit命令/鼠标关闭
-
-
-
bash提示符
-
常用快捷键
- 清屏:ctrl+l / clear
- 命令执行:ctrl+c–中断 ; ctrl+z–挂起
- 调用上一条命令的最后一个参数:alt+. / esc+. / !$
- 移动光标:ctrl+a / Home–移到行首;ctrl+e / End–移到行尾
- 删除字符:ctrl+u–删除光标(不包含)前所有字符;ctrl+k–删除光标(包含)后所有字符
- Tab:命令或文件名自动补全
基本命令
-
命令格式
-
命令名 [选项]… [参数]…
- 命令名:一般由多个小写字母组成,大小写敏感
- 选项:一般用于修饰命令,改变命令的执行效果
- 参数:指命令的作用对象
-
选项的格式
- 以-开头的,后面一般跟一个字母或数字,多数情况下多个选项可以合并
- 以–开头的,后面一般跟单词,不能合并
- 没有-或–,直接是小写字母,多个选项可以合并(较少)
-
-
基本命令
-
关机
- init 0 / shutdown -h now / shutdown -h 10
- shutdown -c 取消
-
重启
- init 6 / shutdown -r now / shutdown -r 10 / reboot
-
nit 5 从最小化切换到图形化;init 3 从图形化切换成最小化
-
history:查看执行过的历史命令
-
who:查看当前所登录用户
-
tty
- 本机登录用户
-
pts
- 远程登录用户
-
-
ip a 查看IP
-
which 文件 :查看文件绝对路径
-
pwd:查看当前所在目录的绝对路径
-
echo 打印
-
-
帮助信息
-
help
- 用法:命令 --help
- [ ]表示可选项;{ } 表示必选项;|表示或者;…表示多个;<> 有些命令中是必选,但是有些命令中是可选
-
man
-
用法:man 命令
-
分类:1.一般命令;2.系统调用库;3.c标准库;4.设备文件;5.配置文件;6.游戏相关;7.杂项;8.系统管理相关命令;9.内核(rhel5)。重点158
-
man -f passwd #查看命令在第几类
-
man手册快捷键
空格翻页、回车翻行、g定位到手册顶部、G定位到手册底部、/关键字 查找关键字、n 按关键字往下翻、N 按关键字往上翻、q 退出
-
-
-
特殊符号
- |:管道符,把前面命令执行结果交给后面命令执行 cat passwd |grep root
-
追加 >覆盖 eg:echo “zhangqingsheng” >> /opt/passwd
- $():把()里面的命令执行结果交给外面的命令去执行。等同于
- &&连接两条命令,前面执行成功后才会继续执行后面;& 表示任务后台执行
- . :当前目录;… :上一级目录;~ :家目录
- #:超级管理员; $:普通用户
软件安装
介绍
-
软件管理方式
-
dpkg
- 包类型:.deb
- 命令:apt-get,dpkg
- 代表发行版:Ubuntu,Debian,MInt
-
rpm
- 包类型:.rpm
- 命令:rpm,yum
- 代表发行版:Redhat,Centos,Fedora
-
-
CentOS系统软件安装方式
- rpm: 安装简单,可定制性差,一台机器上不能装多个相同的软件,稳定性高
- 源码包: 编译安装,安装复杂,可定制性好,一台机器上可安装多个相同的软件
- 二进制包: 安装简单,可定制性差,一台机器可安装多个相同的软件,稳定性较高
-
获取rpm包
- http://rpmfind.net/
- 网络yum源中获取 #epel,CentOS
- 镜像中获取: 在光盘镜像中的Packages目录下
- 相应软件官网,红帽官方ftp: //ftp.redhat.com
-
rpm包介绍
- zsh-5.0.2-25.el7.x86_64.rpm 包全名
zsh: 软件名
5.0.2: 主版本号.次版本号.源程序的发行号
25: rpm发行号
el7: 平台 一般来说,不同平台的包不兼容
x86_64: 架构
x86_64: 64位
i686: 32位
noarch: 通用
- zsh-5.0.2-25.el7.x86_64.rpm 包全名
rpm包管理
-
rpm工具
-
安装
-
-i:install安装
- rpm -ivh 包全名 #安装软件包
-
-U:upgrade升级
- rpm -Uvh 包全名 #升级软件包,如果本来没有安装,则安装
-
-vh:显示安装过程
-
–force 强制安装
-
-
卸载
-
-e:erase擦除
- rpm -e 软件名
-
–nodeps 只卸载当前软件,不检查依赖关系
-
-
查询
-
-q:query查询
- rpm -q 软件名 #查询指定软件包有没有安装
-
-a:all全部
- rpm -qa #查询所有已安装的软件包
-
-l:list列出包中文件
- rpm -ql 软件名 #查询已安装的软件包安装的所有文件
-
-f:file文件
- rpm -qf 文件的绝对路径 #通过文件名反查文件是由哪个包安装的
-
-c:configfiles配置文件
- rpm -qc 软件名 #查询已安装的软件包安装的配置文件
-
-i:info信息
- rpm -qi 软件名 #查询已安装的软件包详细信息
-
-p:pachage软件包
- rpm -qpl 包全名 #查询未安装的软件包将会安装的所有文件
- rpm -qpc 包全名 #查询未安装的软件包将会安装的配置文件
-
-
注意
-
包全名可使用下载链接代替
-
rpm包无法自动解决依赖性问题,需要手动解决
- 解决依赖关系:执行安装命令–yum provides 查询报错信息中所需要的软件对应安装包名称–逐个使用rpm安装
-
-
-
yum工具
-
yum仓库
-
存放rpm包:Packages
- cachedir=/var/cache/yum/ b a s e a r c h / basearch/ basearch/releasever
-
记录rpm包之间的依赖关系:repodata
-
createrepo:创建repodata
-
yum配置文件:/etc/yum.conf
-
仓库配置文件:/etc/yum.repos.d/目录下以.repo结尾
- CentOS-Base.repo-主仓库
- epel.repo-扩展仓库
-
仓库类型
-
本地源
-
网络源
-
阿里
- https://developer.aliyun.com/mirror/
-
网易
- http://mirrors.163.com/
-
清华
- https://mirrors.tuna.tsinghua.edu.cn/
-
中科大
- https://mirrors.ustc.edu.cn/
-
搜狐
- http://mirrors.sohu.com/
-
北京外国语
- https://mirrors.bfsu.edu.cn/
-
-
-
获取方式
- 直接下载仓库repo文件
- 自己创建编辑.repo文件
- 下载安装对应的rpm仓库包
-
-
yum源
-
自制本地yum源
-
镜像包
-
1.将镜像挂载到/mnt(默认挂载目录,只读方式)
mount CentOS-7-x86_64-Minimal-1708.iso /mnt -
2.创建仓库配置文件
vim /etc/yum.repos.d/myyum.repo- [my yum] #仓库ID
name=xingdian yum #仓库名称(描述)
baseurl=file:///mnt #仓库的地址
gpgcheck=0 #校验开关
enabled=1 #仓库开关
- [my yum] #仓库ID
-
3.检验:yum repolist(可用数量不为0)
-
-
缓存包
-
1.在服务器上创建目录用来存放rpm包
mkdir /packages -
2.打开缓存开关(后续安装的rpm包会保存到缓存目录中)
vim /etc/yum.conf ->keepcache=1 -
3.将缓存目录中的rpm包拷贝到/packages
cp /var/cache/yum/x86_64/7/base/packages/*.rpm /packages/ -
4.创建依赖关系:createrepo /packages/
-
5.创建仓库配置文件
vim /etc/yum.repos.d/myyum.repo- [my yum] #仓库ID
name=xingdian yum #仓库名称(描述)
baseurl=file:///pachages #仓库的地址
gpgcheck=0 #校验开关
enabled=1 #仓库开关
- [my yum] #仓库ID
-
6.检验:yum repolist
-
-
-
网络源
-
删除原有仓库(系统默认国外官方源,下载速度慢)
rm -rfv /etc/yum.repos.d/* -
访问国内镜像站
-
直接下载
- base仓库:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
或curl -o /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo - epel仓库:
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- base仓库:
-
自己配置
-
vim /etc/yum.repos.d/base-ali.repo
- [base]
name=base-ali
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
enabled=1
- [base]
-
vim /etc/yum.repos.d/epel-ali.repo
- [epel]
name=epel-ali
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-7
enabled=1
- [epel]
-
-
检验:yum repolist
-
-
-
yum命令
-
缓存
- yum makecache fast #创建yum缓存
- yum clean all #清空yum缓存
-
rpm包
-
查询
-
yum list #列出所有软件包(最后一列@表示已安装)
- yum list xxx #查询具体软件包
- yum list installed #查询已安装的软件包
-
yum repolist #查看可用的仓库(id前带!表示已失效,需重建缓存)
-
yum info httpd #查询安装包详细信息
-
查询文件是由什么包安装的
- yum provides passwd
- yum provides /usr/bin/passwd
- yum provides */passwd
-
yum search 关键字 #搜索名称或描述中含关键字的包
-
-
安装
-
yum install xxx xxx… #安装软件包
- -y #确认安装(不交互)
- –downloadonly #仅下载不安装,默认到缓存目录
- –downloaddir=DIR #指定下载的目录
-
yum -y install /root/xxx.rpm #从本地安装
-
yum -y install 包链接 #从网页安装
-
yum -y reinstall xxx #重新安装(某个配置文件损坏,删除后重装)
-
-
升级
- yum -y update httpd #更新httpd
- yum -y update #更新系统中全部
-
卸载
- yum remove/erase httpd #会卸载本软件及所有依赖本软件的软件
-
-
组包
- yum group list #列出组包信息
- yum groupinfo mariadb #查组包详细信息
- yum -y groupinstall mariadb #安装组包
- groupremove 卸载组包
-
-
装机必备
-
文本编辑
-
vim
-
vim /etc/vimrc
-
mouse
-
添加set mouse=ni #打开鼠标
-
生效模式
- n 普通模式
- v 可视模式
- i 插入模式
- c 命令行模式
- a 以上所有的模式
-
-
tab缩进
- 添加set ts=4 #缩进4个字符,默认8个
-
粘贴模式
-
set paste
- 粘贴不会改变格式
-
-
-
-
-
文件传输
-
lrzsz(xshell)
-
rz
- receive,从Windows传到Linux
-
sz 文件名
- send,从Linux传到Windows
-
-
-
网络工具
- net-tools
-
命令补全工具
- bash-completion
开机启动
启动流程
-
引导阶段
-
目的
- 引导内核装载到内存中运行起来
-
引导过程
- POST - BIOS - MBR(BOOTLOADER) - 装载位于MBR和第一个分区中间的通用文件系统驱动 - 挂载第一个分区(/boot)- 读取grub文件(内核文件的名称及启动参数)- 找到并运行内核 - 挂载临时文件系统initramfs(驱动rootfs) - 挂载rootfs
-
步骤
-
POST:硬件自检,选择驱动器
- 打开电源
- 初始化硬件设备,检查系统外围主要设备(CPU,内存,硬盘等)
- 根据BIOS设置的启动顺寻,检测驱动器(硬盘,光盘,U盘,网络)
- 如果硬盘是启动项,读取硬盘第一个扇区(MBR)到内存
-
Bootloader:引导装载内核
-
Stage1
- 加载MBR中的引导记录bootloader,定位并加载阶段 1.5 的代码
-
Stage1.5
- 识别stage2所在的分区(/boot)上的文件系统
-
Stage2
-
EL6
- 解析grub配置文件/boot/grub/grub.conf
-
EL7
- 解析grub2配置文件/boot/grub2/grub.cfg
-
定位并加载Linux内核到内存中,并转移控制权到内核
-
-
-
KERNEL + INITRD—>ROOTFS 内核引导
- 通过内存中的虚拟根文件系统,加载驱动,然后切换到真正的根文件系统,并执行/sbin/init程序
- initrd是一个临时的根文件系统rootfs,在安装系统时产生,装载了必要的驱动模块。在stage2被拷贝到了内存中
- kernel内核为了精简只保留了基本模块,没有硬件驱动程序,无法识别rootfs所在的设备
- kernel启动时,可以从initrd文件中装载驱动模块,直到挂载真正的rootfs,然后将initrd从内存中移除
-
运行第一个用户进程
- EL6:init
- EL7:systemd
-
-
-
启动阶段
-
EL6
- /etc/inittab 确定运行级别
- /etc/rc.d/rc.sysinit 系统初始化
- /etc/rc#.d/S* 启动开机启动的服务
- /etc/rc.d/rc.local 执行用户自定义脚本
- /bin/login 用户登录
-
EL7
- 1.执行initrd.target 包括挂载/etc/fstab文件中的系统,挂载后,切换到根目录(chroot)
- 2.执行默认target配置(运行级别)
- 3.执行sysinit.target
- 4.启动multi-user.target下的本机与服务器服务
- 5.执行multi-user.target下的/etc/rc.d/rc.local
- 6.执行multi-user.target下的getty.target及登录服务
- 7.执行graphical需要的服务(如果默认target是图形的话)
-
-
注释
-
内核
- 是一个操作系统的核心
- 负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性
- 指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件
- 一个内核不是一套完整的操作系统
-
运行级别
-
0 -关机
- init 0
-
1 -单用户模式(只有root用户,不需要输入密码)
- init 1
-
2 -无网络的多用户模式
- init 2
-
3 -多用户模式(正常的文本模式),使用最多的模式
- init 3
-
4 -保留(未使用)
- init 4
-
5 -桌面模式
- init 5
-
6 -重启
- init 6
-
-
破解root密码
-
EL6
- 启动系统,倒计时的时候按任意键,进入内核选择界面
- 按"a"
- 在quiet后面加上空格 1 回车
- 直接passwd修改
-
EL7
-
方法一
-
启动系统,倒计时时按"e"进入编辑模式
-
将光标定位到linux16这一行,在行尾添加:init=/bin/sh,然后按ctrl+x
-
以读写方式重挂根:mount -o remount,rw /
-
passwd修改密码
-
如果开启了selinux,执行touch /.autorelabel(没有则跳过)
-
exec /sbin/init
- 执行/sbin/init
-
-
方法二
- 启动系统,倒计时时按"e"进入编辑模式
- 修改内核参数:linux16这一行,ro改成rw,行尾加上 init=/bin/sh selinux=0
- ctrl+x启动
- 修改密码
- 执行 exec /sbin/init
-
救援模式
-
打开救援模式界面
-
物理服务器
- ctrl+alt+del
-
虚拟机
- 启动时按 c ,输入exit
-
-
进入
- 选择Troubleshooting进入
- 选择Rescue a CentOS system进入
- 输入 1 回车
- 回车
-
执行操作(真正的根挂载在 /mnt/sysimage 目录)
进程管理
进程介绍
-
相关定义
- 程序:完成某些功能的代码的集合。磁盘上的文件
- 进程:程序运行之后,在内存中的状态,运行的程序会产生一个或多个进程。内存中
- 线程:进程内独立运行的一个单元(操作系统的调度单元,进程至少包括一个线程)
- 父进程:程序运行时产生的第一个进程
- 子进程:由父进程创建出来的新进程(继承)
-
产生进程
- 执行程序或命令
- 计划任务
-
生命周期
-
就绪
-
当进程运行所需要的资源及环境加载完成后,即进入就绪状态,等待CPU执行
-
就绪->运行
- 当就绪的进程占用CPU,并在CPU上运行时,进入运行状态
-
-
运行
-
运行->就绪
- CPU时间片运行完而进程尚未执行完成
- 有更高优先级的进程要运行时被迫让出CPU
- 因中断被迫让出CPU
-
运行->阻塞
- 正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求
-
运行->结束
-
-
阻塞
-
阻塞->就绪
- 进程所等待的事件已经完成,进入就绪队列
-
-
-
进程状态
-
常见
-
R
- 该进程正在运行或就绪
-
S
- 休眠进程
-
s
- 父进程
-
l
- 以线程的方式运行
-
<
- 较高优先级
-
-
其他
-
Z
- 僵尸进程,实际上该进程已经终止,但是它的父进程却无法正常终止它,造成僵尸进程的状态
-
T
- 该进程正在跟踪或者已经停止
-
X
- 死亡进程
-
- 在前台运行的进程组
-
N
- 较低优先级
-
D
- 不可中断的睡眠状态
-
-
说明
- 每个CPU在一个时间点只能处理一个进程
-
-
进程文件
- /proc/pid #以pid命名
查看
进程
-
静态
查看-
ps
-
用法
-
ps -ef
-
ps aux
-
排序
- ps aux --sort %cpu 按cpu从小到大排序
- ps aux --sort -%cpu 按cpu从大到小排序
-
-
ps -axo
- ps axo user,pid,ppid,%cpu,%mem,command
-
-
选项
- -e:显示所有进程
- -f:全格式显示
- a:显示所有进程(包含其他用户的进程)
- u:显示进程的拥有者
- x:和a一起使用,显示所有进程(包含无控制终端的进程-TTY为?的进程)
- o:指定显示字段
-
字段
-
USER PID PPID %CPU %MEM VSZ RSS
用户 进程ID 父进程ID CPU占用率 内存占用率 占用虚拟内存 占用实际内存 -
TTY STAT START TIME COMMAND
运行的终端 状态 启动时间 占用CPU总时间 进程名称(命令) -
TTY
- tty 查看当前终端
- pts:伪终端、虚拟终端
- tty1–tty6: 字符终端
-
-
-
pstree
- yum -y install psmisc
- 以树形显示正在运行的进程
- -p 打印pid
-
-
查看PID
-
cat /run/sshd.pid(/run下的.pid文件-默认的服务)
-
ps aux |grep sshd
-
pstree -p |grep sshd
-
pgrep sshd
- -l 显示进程名称
-
pidof sshd
-
lsof
-
lsof -i:22(端口号)
- 查看端口对应服务的pid
-
lsof -p pid
- 查看进程打开的文件
-
利用进程打开的文件找回误删除文件
- lsof |grep /var/log/messages
- cat /proc/657/fd/6 > /var/log/messages;systemctl restart rsyslog
-
-
$$:当前shell的pid
-
-
动态查看
-
top
-
top选项
- top -d 1 #刷新频率1秒
- top -u user #查看指定用户的进程
- top -p pid1,pid2 #查看指定pid进程
- top -n 1 #刷新1次后退出
- top -b -n 2 > top.txt#打印2次结果到top.txt中-b全局
-
top内容
-
统计信息区
- top - 05:44:00 up 10 min, 1 user, load average: 0.27, 1.14, 1.00
当前系统时间 系统运行时间 , 当前登录用户数, 系统平均负载: 1分钟,5分钟,15分钟 - Tasks: 155 total, 2 running, 153 sleeping, 0 stopped, 0 zombie
任务(进程): 总数, 正在运行的, 休眠的, 停止的, 僵尸 - %Cpu(s): 7.0 us , 1.3 sy , 0.0 ni , 91.6 id , 0.0 wa , 0.0 hi , 0.0 si , 0.0 st
cpu状态(%): 用户空间, 内核空间, 改变过优先级的, 空闲的, IO等待的, 硬中断, 软中断, 虚拟机 - KiB Mem : 4030144 total, 140068 free, 2078828 used, 1811248 buff/cache
内存状态(K): 总量, 空闲的, 使用中的, 缓存的 - KiB Swap: 2097148 total, 2097148 free, 0 used. 1560872 avail Mem
swap状态(K): 总量, 空闲的, 使用中的, 缓冲的
- top - 05:44:00 up 10 min, 1 user, load average: 0.27, 1.14, 1.00
-
进程信息区
- PR:进程优先级
- NI:nice值。负值表示高优先级,正值表示低优先级
- VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
- RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
- SHR:共享内存大小,单位kb
-
-
top操作
-
h/? 帮助
-
1 展开cpu信息(多核)
-
f 更改显示内容
- 空格选择
- w保存
- esc退出
-
M 按mem排序
-
P 按cpu排序
-
N 按PID排序
-
R 将排序反转
-
K 杀死,默认占用最高的
-
q 退出
-
-
-
htop
- yum -y install htop
- F3进程搜索、F4进程过滤、F6排序、F9杀掉指定进程
-
watch
-
用法
-
watch [选项] ‘命令’
- watch -n1 ‘ps aux’
-
每多少秒(默认为2秒)执行一次后面的命令
-
ctrl c 退出
-
-
选项
- -n 指定命令执行间隔时间(秒)
-
-
-
网络进程
-
ss -anutpl
- -a所有进程
- -n 以数字的形式显示地址
- -u udp进程
- -t tcp进程
- -p显示pid和名称
- -l 显示监听状态的进程
-
netstat -anutpl
- 选项与ss一致
-
进程控制
-
前后台调度
-
前台运行
- 该程序一直占用终端,其他命令不能够再在这个终端运行
-
后台运行
- 不会占用执行命令的终端,用户仍然可以使用这个终端做操作
-
调度
-
&
- 命令后面接 & 表示放到后台运行(从后台启动),如:sh test.sh &
-
ctrl +z
- 将已经运行的命令放置于后台并停止
-
jobs
- 查看后台进程运行状态
-
bg n
- 激活后台进程,n为进程工作号
-
fg n
- 将后台运行的命令变成前台运行(仅针对R进程)
-
-
终端进程
-
无论前后台运行,终端关闭即终止。父进程结束子进程也终止
-
脱离终端
- nohup sh /test.sh &
- 当其父进程结束后,该进程将被systemd接管,将不受终端影响
-
-
-
终止进程
-
方法
-
- 前台正在执行的命令: ctrl+c
-
- kill,pkill,killall等命令
-
-
kill
-
用法
- kill -信号 pid
- kill -1 PID 或者kill -HUP PID
-
信号
-
kill -l #查看信号的列表
-
1 HUP
- 重置进程的配置,即不停止服务的情况下,重新读取配置文件
-
2 INT
- 中断(interrupt),ctrl+c
-
3 QUIT
- 退出quit
-
9 KILL
- 强制杀死进程(不保存数据,非必要不要使用)
-
10 USR1
- 重新打开log日志文件
-
15 TERM
- 正常终止进程,此信号为kill默认(推荐使用)
-
18 CONT
- 继续,bg
-
19 STOP
- 挂起,ctrl+z
-
-
-
pkill
- 按照进程的属性结束进程
- pkill test.sh #按照进程名关键字杀死进程
- pkill -U 用户名 #杀死指定用户的进程
- pkill -9 -t 终端名称 #杀死指定终端(不加-9只杀进程)
-
killall
- killall 进程名称 #杀死全部的同名进程
-
-
谦让值nice
-
作用
- 指定或者调整用户进程的nice值
- nice值越高,优先级越低
- 范围:-20~19
-
命令
-
运行时直接设置
- nice -n 数字 command
-
已经运行的调整nice值
- renice 数字 PID
-
-
日志管理
日志介绍
-
定义
- 将系统中发生的事情,按照发生时间的先后顺序,分门别类的记载到不同的文件中称为记录日志,其文件就是日志文件
-
用途
- 1)解决系统方面错误
- 2)解决应用的错误
- 3)记录重要的历史事件,便于数据统计汇总
- 4)解决安全方面的问题
-
分类
-
系统日志
- /var/log/messages /var/log/secure
-
应用日志
- ssh、http等服务都有相应的日志
-
-
分析工具
- 少量:vim cat tail grep awk
- 大量:splunk、elk
系统日志
-
默认存放位置
- /var/log
-
常见系统日志
-
/var/log/messages
- 最重要的系统日志,几乎所有的系统信息都会记录在此
-
/var/log/secure
- 安全相关的日志(需要输入用户名密码的软件,比如ssh、su等)
-
/var/log/dmesg
- 内核检测过程中产生的各种信息,硬件检测信息
-
/var/log/lastlog
- 所有账户最近一次登录系统的相关信息, 使用 lastlog 命令查看
-
/var/log/boot.log
- 记录系统启动信息
-
/var/log/wtmp
- 记录的是正确登录的人的信息,可以用 last 命令来查看
-
/var/log/btmp
- 登录失败日志 可以使用 lastb 命令查看
-
/var/log/cron
- 计划任务相关的日志
-
日志服务
-
服务名称
- rsyslog
-
配置文件
- /etc/rsyslog.conf
-
日志配置
-
配置格式
- 服务名称+分隔符+日志级别 动作
-
服务名称
-
authpriv(auth)
- 用户授权相关的,认证等 ssh、login、su等
-
cron
- 和计划任务相关的服务
-
mail
- 和邮件相关的
-
news
- 新闻相关的 uucp
-
kern
- 和内核相关的
-
lpr
- 打印机相关的
-
syslog
- 和rsyslogd进程相关的
-
local0~local7
- 自定义服务名称,需要同步在对应服务配置文件中使用
-
-
日志的级别
-
级别越低越详细,低级别包含其及以上级别的信息
-
debug
- 调试信息
-
info
- 一般的通知信息
-
notice
- 提醒信息,比info稍微重要点
-
warn/warning
- 警告信息,可能有问题
-
error
- 错误信息
-
critical/crit
- 比较严重的错误
-
alert
- 警报信息,需要立即行动
-
emerg/panic
- 紧急(恐慌),系统可能已经不可用了
-
-
分隔符
-
.
- mail.warning 表示记录mail服务,warning及其以上级别的日志
-
.=
- mail.=warning 表示记录mail服务warning级别日志
-
.!
- mail.!warning 表示除了warning级别以外的,其他级别的所有日志都记录
-
.none
- 表示不记录
-
-
动作
-
/file
- 将日志同步记录到某文件
-
-/file
- 异步记录
-
- 通知所有在线用户 ,也可以写具体的用户名
-
@@remote_host:port
- 通过TCP发送到远程服务器。一个@:UDP
-
-
示例
-
*.info;mail.none;authpriv.none;cron.none /var/log/messages
所有服务的info及以上级别;mail、authpriv、cron不记录 同步记录到/var/log/messages -
authpriv.* /var/log/secure
授权相关的所有级别 同步记录到/var/log/secure -
自定义ssh日志
- 1)vim /etc/ssh/sshd_config 将SyslogFacility值改为local2;
- 2)vim /etc/rsyslog.conf 添加local2.* /var/log/ssh.log
- 3)重启服务systemctl restart rsyslog sshd
-
远程收集服务器日志
-
-
. @收集端IP
- systemctl restart rsyslog
- 收集端
- 关闭防火墙
- #vim /etc/rsyslog.conf(打开注释)
$ModLoad imtcp
$UDPServerRun 514
- systemctl restart rsyslog
- 查看:cat /var/log/messages
日志轮转logrotate
-
配置文件
- /etc/logrotate.conf
- /etc/logrotate.d/*
-
轮转规则
-
weekly 每周轮转
-
rotate 4 保留4份旧文件
-
create 轮转后创建新文件
-
dateext 用日期作为日志文件后缀
-
compress 通过gzip压缩转储以后的日志
-
minsize 1M 最小达到1M才轮转,未达到等下一个周期
-
create 0644 root root 轮转后创建指定属性文件
-
missingok 错过不轮转
-
notifempty 为空不轮转
-
特殊指定某个服务的轮转规则
- /var/log/btmp { … }
-
-
轮转过程
- 读取配置文件,判断是否需要轮转
- 如果需要,先将旧文件重命名
- 创建新日志文件
- 如果有配置postrotate/endscript,执行其脚本
- 重启rsyslog服务
-
手动轮转
- logrotate -vf /etc/logrotate.d/secure
- systemctl restart rsyslog
-
注意
- rpm包安装的服务自带轮转规则,编译安装或自定义服务日志需要手动编写轮转规则
- 系统日志(配置在rsyslog.conf中)在轮转后会自动重启rsyslog服务,保证新的日志记录到新文件中
- 如果配置的日志不是由rsyslog记录(如应用日志),需要在轮转规则中配置postrotate/endscript来重启服务
- postrotate
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
endscript
系统信息
cpu信息
- lscpu
- cat /proc/cpuinfo
cpu使用
- top、htop、mpstat、sar
系统负载
- top、htop、uptime
内存信息
- cat /proc/meminfo
- free、sar
系统版本
- uname -a
- cat /etc/redhat-release
运行级别
- runlevel
free
-
用法
-
free [选项]…
- 显示系统内存的使用情况
-
-
选项
-
-h
-
人性化显示
- free -h
-
-
-s N
-
每隔N秒打印一次
- free -h -s 3
-
-
单位
- -b(默认):比特;-k:Kb;-m:Mb;-g:Gb
-
-
显示内容
-
Mem
- 内存的使用情况
-
Swap
- 交换空间的使用情况
-
total used free shared
总可用空间 已使用空间 空闲物理内存 被共享的物理内存 -
buff(缓冲)
- 把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能
-
cache(缓存)
- 操作系统为了更高的读取效率,使用更多的内存来缓存可能被再次访问的数据
-
available
- 从应用程序的角度看到的可用内存数量:free + buffer/cache
-
-
释放buff/cache
- echo 3 > /proc/sys/vm/drop_caches
df
-
用法
- 显示指定磁盘文件的可用空间,默认已挂载的文件系统
- df [选项]… [文件]…
-
选项
- -a 全部文件系统
- -h 人性化显示
- -i 显示inode信息
- -T 显示文件系统类型
- -t 指定文件系统类型
sar
-
用法
- 系统运行状态统计
- sar [ options ] [ [ ] ]
-
参数
-
-R 显示内存状态
-
-b 显示I/O速率
-
-d 显示每个块设备的状态
-
-i 状态信息刷新的间隔时间
-
-u 显示CPU利用率
-
-n { [,…] | ALL }
- sar -n DEV 1 5 #实时查看网卡流量,每秒刷新1次,共5次
- sar -n DEV -f /var/log/sa/sa02 #查看网卡历史流量
-
mpstat
-
显示变化的CPU数据
-
监控第一个CPU
- mpstat -P 1
-
监控全部CPU
- mpstat -P ALL
-
每隔1个时间单位采样5次
- mpstat 1 5
uptime
-
查看系统负载
-
显示内容
- 06:28:19 up 54 min, 2 users, load average: 0.32, 0.43, 0.58
当前时间 运行时长 当前登录用户数 系统平均负载 最近1m 5m 15m
- 06:28:19 up 54 min, 2 users, load average: 0.32, 0.43, 0.58
-
参数
-
-p
- 显示机器正常运行的时间
-
-s
- 系统自开始运行时间,格式为yyyy-mm-dd hh:mm:ss
-
查看登录服务器终端
-
w
-
who
-
last
- 历史记录