linux基础

文章目录

    • 1. Linux知识
      • 1.1. linux基础
      • 1.2. 不同应用领域的主流操作系统
      • 1.3. 虚拟机
      • 1.4. Linux发行版本
      • 1.5. Linux的应用领域
      • 1.6. 文件和目录
      • 1.7. 常用Linux命令
      • 1.8. 帮助手册
        • 1.8.1. --help
        • 1.8.2. man
      • 1.9. 目录操作
        • 1.9.1. 查看目录内容
        • 1.9.2. 切换目录
        • 1.9.3. 创建和删除操作
        • 1.9.4. 拷贝和移动文件
        • 1.9.5. 查看文件内容
        • 1.9.6. 其他
      • 1.10. 远程控制及网卡操作
        • 1.10.1. 远程管理常用命令
        • 1.10.2. 查看或配置网卡信息
        • 1.10.3. 网卡和IP地址
        • 1.10.4. ping
        • 1.10.5. 远程登录和复制文件
          • (1) ssh 基础
          • (2) 域名和端口号
          • (3) SSH客户端的简单使用
          • (4) scp 服务
          • (5) ssh高级
      • 1.11. 用户权限相关命令
        • 1.11.1. 用户和权限的基本概念
          • (1) 基本概念
          • (2) 组
          • (3) ls-l 拓展
          • (4) chmod 简单使用
          • (5) 超级用户
          • (6) sudo
        • 1.11.2. 组管理 终端命令
        • 1.11.3. 用户管理 终端命令
        • 1.11.4. 切换用户
        • 1.11.5. 修改文件权限
      • 1.12. 系统信息相关命令
        • 时间和日期
        • 磁盘信息
        • 进程信息
      • 1.13. 其他命令
        • 查找文件find
        • 软链接
        • 打包压缩
        • 压缩/解压缩
        • 软件安装
      • 1.14. 编辑器vim介绍
      • 1.15. [重、难点]编辑器vim操作
      • 1.16. 实战:《系统性能定时监控》-介绍
      • 1.17. 实战:《系统性能定时监控》-基础
      • 1.18. 实战:《系统性能定时监控》-升级版

1. Linux知识

1.1. linux基础

  • 操作系统的作用

    1. 现代计算机中最基本和最重要的系统软件
    2. 配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展
    3. 主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,以便于使用
    4. 其他的编译程序、数据库管理系统、大量应用软件等,都直接依赖于操作系统的支持

1.2. 不同应用领域的主流操作系统

  • 桌面操作系统

    • Windows系列
      • 用户群体大
    • macOS
      • 适用于开发人员
    • Linux
      • 应用软件少
  • 服务器操作系统

    • Linux
      • 安全、稳定、免费
      • 占有率高
    • Windows Server
      • 付费
      • 占有率低
  • 嵌入式操作系统

    • Linux
  • 移动设备操作系统

    • IOS
    • Android(基于Linux)

1.3. 虚拟机

  • 虚拟机的定义:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整性系统。虚拟系统通过生成现有操作系统的全新虚拟镜像,具有真实操作系统完全一样的功能。进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响。而且能够在现有操作系统与虚拟镜像之间灵活切换的一类操作系统。

1.4. Linux发行版本

  • 常见的发行版
    • Ubuntu
    • Redhat
    • Fedora
    • openSUSE
    • Linux Mint
    • Debian
    • Manjaro
    • Mageia
    • CentOS

1.5. Linux的应用领域

  • 服务器领域
    • Linux在服务器领域的应用是其重要分支
    • Linux免费、稳定、高效等特点在这里得到了很好的体现
      • 早期因为维护、运行等特点在这里得到了很好地体现
      • 近些年来Linux服务器市场得到飞速的提升,尤其在一些高端领域尤为广泛
  • 嵌入式领域
    • Linux运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百kb等特点,使其近些年来在嵌入式领域的应用得到非常大的提高
    • 主要应用:机顶盒、数字电视、网络电话、程控交换机、手机、PDA等都是其应用领域,得到Google、三星、摩托罗拉、NEC等公司的大力推广
  • 个人桌面领域
    • 传统Linux由于界面简单、操作复杂、应用软件少的缺点,一直被Windows所压制
    • 近些年来随着Ubuntu、Fedora等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,Linux在个人桌面领域的占有率在逐渐的提高

1.6. 文件和目录

  • /home/user~:用户工作目录或家目录

  • /:根目录,一般根目录只存放目录,在linux下有且只有一个根目录,所有东西从这开始

  • /bin、/usr/bin:可执行二进制文件的目录,如常用的命令:ls,tar,mv,cat

  • /boot:放置linux系统启动时用到的一些文件,如linux内核文件:/boot/vmlinuz,系统引导管理器:/boot/grup

  • /dev:存放linux系统下的设备文件,访问文件相当于访问设备,挂载光驱:mount/dev/cdrom/mnt

  • etc:系统配置文件存放的目录

  • /home:系统默认的用户家目录,新增用户账号时,用户的家目录存放在此目录下

    • ~表示当前用户的家目录
    • ~edu表示用户edu的家目录
  • /lib、/usr/lib、/usr/local/lib:系统使用的函数库的目录,程序在执行的过程中,需要调用一些额外的参数时需要函数库协助

  • lost+fount:系统异常产生错误时会将一些遗失的片段放置于此目录下

  • mnt/media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也可以选择任意位置进行挂载

  • /opt:给主机额外安装软件所摆放的目录

  • /pro:此目录的数据都在内存中,如系统核心、外部设备,不占用磁盘空间

  • /root:系统管理员root的家目录

  • /sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令

  • tmp:一般用户和正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不存放此处

  • /srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内

  • /usr:应用程序存放目录

    • /usr/bin:存放应用程序
    • /usr/share:存放共享数据
    • /usr/lib:存放不能直接运行的,却是许多程序运行所必需的一些函数库文件
    • /usr/local:存放软件升级包
    • /usr/share/doc:系统说明文件存放目录
    • /usr/share/man:程序说明文件存放目录
  • /var:放置系统执行过程中经常变化的文件

    • /var/log:随时更改的日志文件
    • /var/spool/mail:邮件存放的目录
    • /var/run:程序或服务启动后,其PID存放在该目录下

1.7. 常用Linux命令

序号 命令 对应英文 作用
01 ls list 查看当前文件夹下的内容
02 pwd print work directory 查看当前所在文件夹
03 cd[目录名] change directory 切换文件夹
04 touch[文件名] touch 如果文件不存在,新建文件
05 mkdir[目录名] make directory 创建目录
06 rm[文件名] remove 删除指定的文件名
07 clear clear 清屏
  • 终端命令格式

    command [-options] [parameter]
    

    command:命令名,相应功能的英文单词或单词的缩写

    [-options]:选项,可用来对命令进行控制,也可以省略

    parameter:传给命令的参数,可以是零个,一个或者多个

    []:代表可选


1.8. 帮助手册

1.8.1. --help

command  --help

显示 command 命令的帮助信息

1.8.2. man

man  command
操作键 功能
空格键 显示手册的下一页
Enter键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出
/word 搜索word字符串

1.9. 目录操作

1.9.1. 查看目录内容

  • Linux 下文件和目录的特点

    linux 文件或者目录名称最长可以有256个字符

    .开头的文件为隐藏文件,需要用-a参数才能显示

    .表示当前目录

    ..代表上一级目录

  • ls 常用选项

    -a :显示指定目录下所有子目录与文件,包括隐藏文件

    -l :以列表方式显示文件的详细信息

    -h :配合-l 以人性化的方式显示文件大小

  • ls 通配符的使用

    通配符 含义
    * 代表任意个数字符
    代表任意一个字符,至少1个
    [] 表示可以匹配字符组中的任何一个
    [abc] 匹配a、b、c中的任意一个
    abc 匹配从a到f范围内的任意一个字符

1.9.2. 切换目录

  • cd

    命令 含义
    cd 切换到当前用户的主目录(/home/用户目录)
    cd ~ 切换到当前用户的主目录(/home/用户目录)
    cd . 保持在当目录不变
    cd … 切换到上级目录
    cd - 可以在最近两次工作目录之间来回切换
  • 相对路径和绝对路径

    相对路径:在输入路径时,最前面的不是/或者~,表示相对当前目录所在的目录位置

    绝对路径:在输入路径时,最前面的是/或者~,表示从根目录/家目录开始的具体目录位置

1.9.3. 创建和删除操作

  • touch:创建文件或修改文件时间

    • 如果文件不存在,可以创建一个空白文件
    • 如果文件已经存在,可以修改文件的末次修改时间
  • mkdir:创建一个新的目录

    • -p :可以递归创建目录

    • 不能创建与当前目录中同名的文件

  • rm:删除文件或目录(删除后无法恢复)

    • -f : 强制删除,忽略不存在的文件,无需提示
    • -r : 递归删除目录下的内容,删除文件夹时必须加此参数

1.9.4. 拷贝和移动文件

序号 命令 对应英文 作用
01 tree [目录名] tree 以树状图列出文件目录结构
02 cp 源文件 目标文件 copy 复制文件或者目录
03 mv 源文件 目标文件 move 移动文件或者目录/文件或者目录重命名
# 01.只显示目录
tree -d

# 02.覆盖文件前提示
cp -i
# 02.若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
cp -r

# 03.覆盖文件前提示
mv -i

1.9.5. 查看文件内容

序号 命令 对应英文 作用
01 cat 文件名 concatnate 查看文件内容、创建文件、合并文件、追加文件内容等功能
02 more 文件名 more 分屏显示文件内容
03 grep 搜索文本 文本名 grep 搜索文本文件内容
  • cat:查看文件内容、创建文件、文件合并、追加文件内容等功能。会一次显示所有的内容,适合查看内容较少的文本文件

    • -b : 对非空输出行编号

    • -n : 对输出的所有行编号

  • more:用于分屏显示文件内容,每次只显示一页,适合查看内容较多的文本文件

    操作键:

    操作键 功能
    空格键 显示手册页的下一屏
    Enter键 一次滚动手册页的一行
    b 回滚一屏
    f 前滚一屏
    q 退出
    /word 搜索word字符串
  • grep: 强大的文本搜索工具,对文本进行模式查找,即正则表达式查找

    选项 含义
    -n 显示匹配行及行号
    -v 显示不包括匹配文本的所有行(相当于求反)
    -i 忽略大小写
    • 常用的模式查找
      • ^a :行首,搜索以a开头的行
      • ke$:行尾,搜索以ke结束的行

1.9.6. 其他

  • echo 文字内容

    echo会在终端显示参数指定的文字,通常会和重定向联合使用

  • 重定向 >>>

    linux 允许将命令执行结果重定向到一个文件

    将本应显示在终端上的内容输出/追加到指定文件中

    其中

    >表示输出,会覆盖文件原有的内容

    >>表示追加,会将内容追加到已有文件的末尾

  • 管道 |

    Linux 允许将一个命令的输出可以通过管道做为另一个命令的输入

    常用的管道命令:

    more :分屏显示内容

    grep :在命令执行结果的基础上查询指定的文本


1.10. 远程控制及网卡操作

1.10.1. 远程管理常用命令

  • 关机/重启
序号 命令 对应英文 作用
01 shutdown选项 时间 shutdown 关机/重新启动

在这里插入代码片 shutdown命令可以安全关闭或者重新启动系统:shutdown -r

  • 不指定选项和参数,默认表示1分钟之后关闭电脑

  • 远程维护服务器时,最好不要关闭系统,而应该重新启动系统

  • 常用命令实例:

    # 重新启动操作系统,其中now表示现在
    shutdown -r now
    
    # 立即关机,其中now表示现在
    shutdown now
    
    # 系统在今天的20:25会关机
    shutdown 20:25
    
    # 系统再过十分钟后关机
    shutdown +10
    
    # 取消之前指定的关机计划
    shutdown -c
    

1.10.2. 查看或配置网卡信息

linux基础_第1张图片

1.10.3. 网卡和IP地址

  • 网卡

    • 网卡是一个专门负责网络通讯的硬件设备
    • IP地址是设置在网卡上的地址信息
  • IP地址

    • 每台联网的电脑上都有IP地址,是保证电脑之间正常通讯的重要设置
    • 注意:每台IP地址不能相同,否则会出现IP地址冲突,并且没有办法正常通讯
  • ifconfig

    • ifconfig 可以查看/配置计算机当前的网卡配置信息

      # 查看网卡配置信息
      ifconfig
      
      # 查看网卡对应的IP地址
      ifconfig | grep inet
      

    一台计算机中可能会有一个物理网卡和多个虚拟网卡,在Linux中物理网卡的名字通常以ensXX表示

    • 127.0.0.1被称为本地回环/环回地址,一般用来测试本机网卡是否正常

1.10.4. ping

# 检测到目标主机是否连接正常
ping ip地址

# 检测本地网卡工作正常
ping 127.0.0.1
  • ping 一般用于检测当前计算机到目标计算机之间的网络是否畅通,数值越大,速度越慢
  • 原理:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在

1.10.5. 远程登录和复制文件

linux基础_第2张图片

(1) ssh 基础

在Linux中SSH是非常常用的工具,通过SSH客户端可以连接到运行了SSH服务器的远程机器上
linux基础_第3张图片

  • SSH客户端是一种使用Secure Shell(SSH)协议连接到远程计算机的软件程序
  • SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议
    • 利用SSH协议,可以有效防止远程管理过程中的信息泄露
    • 通过SSH协议,可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗
  • SSH的另一个优点是传输的数据可以是经过压缩的,所以可以加快传输的速度
(2) 域名和端口号
  • 域名

    由一串用点分隔的名字组成,例如:www.itcast.cn

    是IP地址的别名,方便用户记忆

  • 端口号

    IP地址:通过IP地址找到网络上的计算机

    端口号:通过端口号可以找到计算机上运行的应用程序

  • SSH服务的默认端口号是22,如果是默认端口号,在连接的时候,可以省略

  • 常见的端口号列表
    linux基础_第4张图片

(3) SSH客户端的简单使用
ssh [-p port] user@remote

user : 远程主机上的用户名,如果不指定的话默认为当前用户

remote:是远程机器的地址,可以是IP/域名,或者是别名

port :是SSH Sever监听的端口,如果不指定,就默认值 22

提示:1. 使用exit退出当前用户的登录 2. 工作中,SSH服务器的端口号很有可能不是22,如果遇到这种情况就需要使用-p选项,指定正确的端口号,否则无法正常连接到服务器

(4) scp 服务

linux基础_第5张图片

# 本地电脑 windows --> ubuntu 
①ssh jq@192.168.70.128
②把本地数据发送到远程主机上
scp d:\Users\Jq\Desktop\课表.png jq@192.168.70.128:Desktop/python20
③把远程主机上的数据拷贝到本地
scp jq@192.168.70.128:/home/jq/python20/123.txt d:\Users\Jq\Desktop\test
    
# 加上 -r 选项可以传送文件夹
把本地文件夹test上传到远程主机
scp -r d:\Users\Jq\Desktop\test jq@192.168.70.128:/home/jq/python20

# 把远程家目录下的Desktop复制到当前目录下的demo文件夹
scp -r user@remote:Desktop demo

linux基础_第6张图片

注意:scp这个终端命令只能在linux或者UNIX系统下使用

​ 如果在Windows系统中,可以安装PuTTY,使用pscp命令工具或者安装FileZilla进行文件传输

(5) ssh高级
  • 免密码登录

    步骤

    • 配置公钥

      执行 ssh-keygen 即可生成SSH钥匙,一路回车即可

    • 上传公钥到服务器

      执行 ssh-copy-id -p port user@remote ,可以让远程服务器记住我们的公钥

    示意图
    linux基础_第7张图片

  • 配置别名

    Host mac
    	HostName ip地址
    	User itheima
    	Port 22
    

1.11. 用户权限相关命令

1.11.1. 用户和权限的基本概念

(1) 基本概念
  • 用户是Linux系统工作中重要的一环,用户管理包括用户和组管理。在Linux系统中,不论是由本机或是远程登录系统,每个系统必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限。可以指定每一个用户针对不同的文件或者目录的不同权限。
  • 对文件/目录的权限包括:
    linux基础_第8张图片
(2) 组
  • 将不同用户添加到对应的组,即可拥有组对应的权限
(3) ls-l 拓展
  • ls-l 可以查看文件夹下文件的详细信息

    • 权限,第1个字符如果是d表示目录
    • 硬链接数,有多少种方式可以访问到当前目录/文件
    • 拥有者,家目录下文件/目录的拥有者通常都是当前用户
    • 组,用户所在的位置
    • 大小
    • 时间
    • 名称
      linux基础_第9张图片
(4) chmod 简单使用
  • chmod 可以修改用户/组对文件/目录的权限
  • 格式 : chmod +/-rwx 文件名|目录名
(5) 超级用户
  • Linux 系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限
  • 在大多数版本的Linux中,都不推荐直接使用root账号登录系统
  • 在Linux安装的过程中,系统会自动创建一个用户账户,而这个默认的账户就称为"标准用户"
(6) sudo
  • su 表示使用另一个用户的身份

  • sudo 用来以其他身份来执行命令,预设的身份为root

  • 用户在使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码

  • 若未经授权的用户企图使用sudo,则会发出警告邮件给管理员

1.11.2. 组管理 终端命令

linux基础_第10张图片

  • 注意
    1. 创建组/删除组的终端命令都需要通过sudo执行
    2. 组信息保存在/etc/group 文件中
    3. /etc 目录是专门用来保存系统配置信息的目录
    4. 在实际开发中,可以预先针对组设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限

1.11.3. 用户管理 终端命令

  • 创建用户/设置密码/删除用户
    linux基础_第11张图片

  • 查看用户信息
    linux基础_第12张图片

  • passwd文件

    /etc/passwd 文件存放的是用户的信息,由6个分号组成的7个信息,分别是

    1. 用户名
    2. 密码(x,表示加密的密码)
    3. UID(用户标识)
    4. GID(组标识)
    5. 用户全名或本地账号
    6. 家目录
    7. 登录使用的shell ,就是登录之后,使用的终端命令,ubuntu默认是dash
  • usermod

    usermod 可以用来设置用户的主组/附加组和登录Shell,命令格式如下:
    主组:通常在新建用户时指定,在etc/passwd的第4列GID对应的组
    附加组:在etc/goup中最后一列表示该组的用户列表,用于指定用户的附加权限
    提示:设置了用户的附加组之后,需要重新登录才能生效!

#修改用户的主组(passwd中的GID)
usermod -g 组 用户名

# 修改用户的附加组
usermod -G 组 用户名

# 修改用户登录 shell
usermod -s /bin/bash 用户名
  • which

    可以查看执行命令所在的位置

1.11.4. 切换用户

linux基础_第13张图片

1.11.5. 修改文件权限

linux基础_第14张图片

# 修改文件|目录的拥有者
chown 用户名 文件名|目录名

#递归修改文件|目录的组
chgrp -R 组名 文件名|目录名

# 递归修改文件权限
chmod -R 755 文件名|目录名
755分别对应拥有者、组、其他用户
直接修改文件|目录的 读||执行 权限,但是不能精确到拥有者||其他
chmod +/-rwx 文件名|目录名

linux基础_第15张图片
linux基础_第16张图片


1.12. 系统信息相关命令

  • 目的:远程进行信息维护时,查看服务器上当前系统日期和时间/磁盘空间占有情况/程序执行情况

时间和日期

linux基础_第17张图片

磁盘信息

linux基础_第18张图片

进程信息

linux基础_第19张图片

linux基础_第20张图片


1.13. 其他命令

查找文件find

请添加图片描述

  • 注意:
    1. find功能强大通常用来在特定的目录下搜索符合条件的文件
    2. 如果省略路径,表示在当前文件夹下查找
    3. 配合通配符使用

软链接

linux基础_第21张图片

注意:

  1. 没有-s选项建立的是一个硬链接文件,两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
  2. 源文件要使用绝对路径,不能使用相对路径,这样方便移动链接文件后,仍然能够正常使用

文件的硬链接与软链接
linux基础_第22张图片

在Linux中,文件名和文件的数据是分开存储的

在Linux中,只有文件的硬链接数==0才会被删除

使用ls -l 可以查看一个文件的硬链接数量

在日常工作中,几乎不会建立文件的硬链接

打包压缩

  • 打包/解包

    # 打包文件
    tar -cvf 打包文件.tar 被打包的文件/路径…
    
    # 解包文件
    tar -xvf 打包文件.tar
    

linux基础_第23张图片

注意:f 必须放在最后面,其他选项顺序可以随意

压缩/解压缩

  • gzip
    • tar和gzip命令结合可以实现文件打包和压缩
    • tar 只负责打包文件,但不压缩
    • 用gzip压缩tar打包后的文件,其拓展名一般用xxx.tar.gz
    • 在tar命令中有一个选项-z可以调用gzip,从而可以方便的实现压缩和解压缩的功能
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径

# 解压缩文件
tar -zxvf 打包文件.tar.gz

# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
  • bzip2(two)

    • tar和bzip2命令结合可以实现文件打包和压缩
    • tar 只负责打包文件,但不压缩
    • 用bzip2压缩tar打包后的文件,其拓展名一般用xxx.tar.bz
    # 压缩文件
    tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径
    
    # 解压缩文件
    tar -jxvf 打包文件.tar.bz2
    

软件安装

  • 安装软件

     sudo apt install 软件包
    
  • 卸载软件

    sudo apt remove 软件名
    
  • 更新已安装的包

    sudo apt upgrade
    

1.14. 编辑器vim介绍

  • 三种模式:命令模式(移动光标、复制、删除) 输入模式(编辑文件) 末行模式(保存文件、查找替换)
  • 三种模式转换:打开文件默认是命令模式 ——a\i\o—>输入模式—>esc—命令模式—:–> 末行模式

1.15. [重、难点]编辑器vim操作

  • 创建文件: vi 文件名 ——> i 进入编辑模式–>编辑文件—>esc 到命令模式—>:进入末行模式–>wq保存并退出
  • vi编辑器进入输入模式
    • i 光标前插入 I 行首插入
    • a光标后, A行尾
    • o 光标下一行产生新行 O 光标上一行产生新行

1.16. 实战:《系统性能定时监控》-介绍

  • psutil 获取服务器的硬件信息

    • cpu的核心数 psutil.cpu_count()

    • cpu物理核心数 psutil.cpu_count(logical=False)

    • cpu的使用率 psutil.cpu_percent(interval=0.5)

    • 内存信息 psutil.virtual_memory()

    • 内存的使用率 psutil.virtual_memory().percent

    • 硬盘的分区信息:psutil.disk_partitions()

    • 硬盘的指定路径的硬盘信息:psutil.disk_usage(“/”)

    • 硬盘的使用率:psutil.disk_usage(“/”).percent

    • 网络数据信息

      收到的字节数:psutil.net_io_counters().bytes_recv

      发送的字节数:psutil.net_io_counters().bytes_sent

    • 获取开机时间:psutil.boot_time()

1.17. 实战:《系统性能定时监控》-基础

思路:

1、导入模块

2、定义变量保存cpu信息、内存信息、硬盘信息、网络信息

3、拼接要显示的字符串(格式化的字符串拼接)

4、保存信息到文件中

# 1、导入模块
import psutil
import datetime
# 2、定义变量保存CPU的使用率
cpu_per = psutil.cpu_percent(interval=0.5)

# 3、定义变量保存内存信息
memory_info = psutil.virtual_memory()

# 4、定义变量保存硬盘的信息
disk_info = psutil.disk_usage("/")

# 5、定义变量保存网络的信息
net_info = psutil.net_io_counters()

# 获取系统当前时间
current_time = datetime.datetime.now().strftime("%F %T")

# 6、拼接字符串显示
log_str = "|-------------------|------------|-------------|-------------|----------------------------|\n"
log_str += "|      监控时间      |  CPU使用率  |   内存使用率  |   硬盘使用率  |          网络收发量          |\n"
log_str += "|                   | (共%d核CPU)  |  (总计%dG内存) | (总计%dG硬盘)|                            |\n" % (psutil.cpu_count(logical=False), memory_info.total/1024/1024/1024, disk_info.total/1024/1024/1024)
log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
log_str += "|%s|    %s%%   |    %s%%    |    %s%%    |   收:%s/发:%s  |\n" % (current_time, cpu_per, memory_info.percent, disk_info.percent, net_info.bytes_recv, net_info.bytes_sent)
log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
print(log_str)

# 7、保存监控信息到日志文件
f = open("log.txt", "a")
f.write(log_str + "\n\n")
f.close()
  • 获取当前时间:current_time = datetime.datetime.now().strftime("%F %T")

1.18. 实战:《系统性能定时监控》-升级版

  • 定义了linux_monitor() 实现监控
def linux_monitor(time):
    """定义函数,实现硬件信息的获取"""
    # 2、定义变量保存CPU的使用率
    cpu_per = psutil.cpu_percent(interval=time)

    # 3、定义变量保存内存信息
    memory_info = psutil.virtual_memory()

    # 4、定义变量保存硬盘的信息
    disk_info = psutil.disk_usage("/")

    # 5、定义变量保存网络的信息
    net_info = psutil.net_io_counters()

    # 获取系统当前时间
    current_time = datetime.datetime.now().strftime("%F %T")

    # 6、拼接字符串显示
    log_str = "|-------------------|------------|-------------|-------------|----------------------------|\n"
    log_str += "|      监控时间      |  CPU使用率  |   内存使用率  |   硬盘使用率  |          网络收发量          |\n"
    log_str += "|                   | (共%d核CPU)  |  (总计%dG内存) | (总计%dG硬盘)|                            |\n" % (
    psutil.cpu_count(logical=False), memory_info.total / 1024 / 1024 / 1024, disk_info.total / 1024 / 1024 / 1024)
    log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
    log_str += "|%s|    %s%%   |    %s%%    |    %s%%    |   收:%s/发:%s  |\n" % (
    current_time, cpu_per, memory_info.percent, disk_info.percent, net_info.bytes_recv, net_info.bytes_sent)
    log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
    print(log_str)

    # 7、保存监控信息到日志文件
    f = open("log.txt", "a")
    f.write(log_str + "\n\n")
    f.close()
  • main() 启动定时监控
def main():
    """程序的入口"""
    while True:
        linux_monitor(5)

终端方式运行

  • 第一步,文件增加 可执行权限 chmod u+x xxxx.py

  • 第二步,告诉终端代码使用 python解释器执行

    #!/home/demo/.Envs/1-basics-python3/bin/python3

  • 第三步, 进入虚拟环境运行

    workon 1-basics-python3

  • 第四步,./xxxx.py

你可能感兴趣的:(Python基础,python)