文章目录
1. Linux知识
1.1. linux基础
-
操作系统的作用:
- 现代计算机中最基本和最重要的系统软件
- 配置在计算机硬件上的第一层软件,是对硬件系统的首次扩展
- 主要作用是管理好硬件设备,并为用户和应用程序提供一个简单的接口,以便于使用
- 其他的编译程序、数据库管理系统、大量应用软件等,都直接依赖于操作系统的支持
1.2. 不同应用领域的主流操作系统
-
桌面操作系统
- Windows系列
- 用户群体大
- macOS
- 适用于开发人员
- Linux
- 应用软件少
- Windows系列
-
服务器操作系统
- Linux
- 安全、稳定、免费
- 占有率高
- Windows Server
- 付费
- 占有率低
- Linux
-
嵌入式操作系统
- 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. 查看或配置网卡信息
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. 远程登录和复制文件
(1) ssh 基础
在Linux中SSH是非常常用的工具,通过SSH客户端可以连接到运行了SSH服务器的远程机器上
- SSH客户端是一种使用Secure Shell(SSH)协议连接到远程计算机的软件程序
- SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议
- 利用SSH协议,可以有效防止远程管理过程中的信息泄露
- 通过SSH协议,可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗
- SSH的另一个优点是传输的数据可以是经过压缩的,所以可以加快传输的速度
(2) 域名和端口号
-
域名
由一串用点分隔的名字组成,例如:www.itcast.cn
是IP地址的别名,方便用户记忆
-
端口号
IP地址:通过IP地址找到网络上的计算机
端口号:通过端口号可以找到计算机上运行的应用程序
-
SSH服务的默认端口号是22,如果是默认端口号,在连接的时候,可以省略
-
常见的端口号列表
(3) SSH客户端的简单使用
ssh [-p port] user@remote
user
: 远程主机上的用户名,如果不指定的话默认为当前用户
remote
:是远程机器的地址,可以是IP/域名,或者是别名
port
:是SSH Sever监听的端口,如果不指定,就默认值 22提示:1. 使用exit退出当前用户的登录 2. 工作中,SSH服务器的端口号很有可能不是22,如果遇到这种情况就需要使用-p选项,指定正确的端口号,否则无法正常连接到服务器
(4) scp 服务
# 本地电脑 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
注意:scp这个终端命令只能在linux或者UNIX系统下使用
如果在Windows系统中,可以安装PuTTY,使用pscp命令工具或者安装FileZilla进行文件传输
(5) ssh高级
-
免密码登录
步骤:
-
配置公钥
执行 ssh-keygen 即可生成SSH钥匙,一路回车即可
-
上传公钥到服务器
执行 ssh-copy-id -p port user@remote ,可以让远程服务器记住我们的公钥
示意图
-
-
配置别名
Host mac HostName ip地址 User itheima Port 22
1.11. 用户权限相关命令
1.11.1. 用户和权限的基本概念
(1) 基本概念
- 用户是Linux系统工作中重要的一环,用户管理包括用户和组管理。在Linux系统中,不论是由本机或是远程登录系统,每个系统必须拥有一个账号,并且对于不同的系统资源拥有不同的使用权限。可以指定每一个用户针对不同的文件或者目录的不同权限。
- 对文件/目录的权限包括:
(2) 组
- 将不同用户添加到对应的组,即可拥有组对应的权限
(3) ls-l 拓展
-
ls-l 可以查看文件夹下文件的详细信息
- 权限,第1个字符如果是d表示目录
- 硬链接数,有多少种方式可以访问到当前目录/文件
- 拥有者,家目录下文件/目录的拥有者通常都是当前用户
- 组,用户所在的位置
- 大小
- 时间
- 名称
(4) chmod 简单使用
- chmod 可以修改用户/组对文件/目录的权限
- 格式 : chmod +/-rwx 文件名|目录名
(5) 超级用户
- Linux 系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限
- 在大多数版本的Linux中,都不推荐直接使用root账号登录系统
- 在Linux安装的过程中,系统会自动创建一个用户账户,而这个默认的账户就称为"标准用户"
(6) sudo
-
su
表示使用另一个用户的身份 -
sudo
用来以其他身份来执行命令,预设的身份为root
-
用户在使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码
-
若未经授权的用户企图使用sudo,则会发出警告邮件给管理员
1.11.2. 组管理 终端命令
- 注意:
- 创建组/删除组的终端命令都需要通过sudo执行
- 组信息保存在/etc/group 文件中
- /etc 目录是专门用来保存系统配置信息的目录
- 在实际开发中,可以预先针对组设置好权限,然后将不同的用户添加到对应的组中,从而不用依次为每一个用户设置权限
1.11.3. 用户管理 终端命令
-
创建用户/设置密码/删除用户
-
查看用户信息
-
passwd文件
/etc/passwd 文件存放的是用户的信息,由6个分号组成的7个信息,分别是
- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名或本地账号
- 家目录
- 登录使用的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. 切换用户
1.11.5. 修改文件权限
# 修改文件|目录的拥有者
chown 用户名 文件名|目录名
#递归修改文件|目录的组
chgrp -R 组名 文件名|目录名
# 递归修改文件权限
chmod -R 755 文件名|目录名
755分别对应拥有者、组、其他用户
直接修改文件|目录的 读|写|执行 权限,但是不能精确到拥有者|组|其他
chmod +/-rwx 文件名|目录名
1.12. 系统信息相关命令
- 目的:远程进行信息维护时,查看服务器上当前系统日期和时间/磁盘空间占有情况/程序执行情况
时间和日期
磁盘信息
进程信息
1.13. 其他命令
查找文件find
- 注意:
- find功能强大通常用来在特定的目录下搜索符合条件的文件
- 如果省略路径,表示在当前文件夹下查找
- 配合通配符使用
软链接
注意:
- 没有-s选项建立的是一个硬链接文件,两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
- 源文件要使用绝对路径,不能使用相对路径,这样方便移动链接文件后,仍然能够正常使用
文件的硬链接与软链接
在Linux中,文件名和文件的数据是分开存储的
在Linux中,只有文件的硬链接数==0才会被删除
使用ls -l 可以查看一个文件的硬链接数量
在日常工作中,几乎不会建立文件的硬链接
打包压缩
-
打包/解包
# 打包文件 tar -cvf 打包文件.tar 被打包的文件/路径… # 解包文件 tar -xvf 打包文件.tar
注意: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