系统管理简介

系统管理

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提示符

    • [root@nginx ~]#

      • root - 当前所登陆的用户名,在Linux系统中,root用户为超管理员
      • @- 同 at
      • nginx - 所登陆主机的主机名
      • ~- 当前所在的目录。~ 表示用户的家目录,是用户登录到系统后的默认位置
      • - 身份提示符 #:超级管理员; $:普通用户

  • 常用快捷键

    • 清屏: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: 通用

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 #仓库开关
          • 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 #仓库开关
          • 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
        • 自己配置

          • 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
          • 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
        • 检验: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): 总量, 空闲的, 使用中的, 缓冲的
        • 进程信息区

          • 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接管,将不受终端影响
  • 终止进程

    • 方法

        1. 前台正在执行的命令: ctrl+c
        1. 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
      • 远程收集服务器日志

        • 产生端

          • 关闭防火墙
          • vim /etc/rsyslog.conf

. @收集端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
  • 参数

    • -p

      • 显示机器正常运行的时间
    • -s

      • 系统自开始运行时间,格式为yyyy-mm-dd hh:mm:ss

查看登录服务器终端

  • w

  • who

  • last

    • 历史记录

你可能感兴趣的:(linux,服务器,网络)