1. Linux的内核版本
目录
一、Linux内核版本
2.6.20
2 主版本(第几个大版)
6 次版本(第几次补丁)奇数:开发中的版本(不稳定版) 偶数:稳定版()
20 末版本(修补的次数)
二、linux版本
RedHat linux
企业版:3.0、4.0、5.0、6.0(三年前)7.0(2015年 比之前的版本变化比较大)
个人版:已停用9.X
三、安装前的准备
1、分区命名 hda1 sdb2
hd IDE(并口盘)
s 串口盘(SCSI SAS SATA USB)
a b c d 表示磁盘编号 a 第一块盘 b第二块盘 c第三块盘 以此类推
1 2 3 表示磁盘内的编号 1 表示第一个分区 2 表示第二个分区 以此类推
2、分区使用
Linux是一款树形文件系统
Linux中所有的文件夹都在总文件夹下存放("/"跟目录下存放)
Linux把所有的硬件资源当成文件管理
一个分区不能直接使用,必须要和某个文件夹建立关联关系
向文件夹存入文件,实质存入分区,建立关联关系,称为“挂载”
挂载时使用的文件夹称为“挂载点”
Linux中文件夹改称为“目录”
四、安装
建议双网卡的桥接模式
1、开机后 选择第一项 直接安装
第二项 检测后安装
2、安装过程中语言
3、检查键盘鼠标,地区,时间
4、软件选择 基础设施服务器(纯字符界面)-- 文件及存储服务器
带GUI服务器(图形界面 & 字符界面) --文件及存储服务器
5、安装位置
自动分配 所有的内存都分给 “/”服务
手动 → 完成 → 标准分区 → 新建分区“+”
/ 5G ext4格式
/boot 1G 开机程序存放位置(通常都很小,几兆)
/home 2G 每个用户的家目录,除Root外,root的目录存放在/root
/usr 8G 系统程序,帮助文件存放位置
swap 物理内存的2倍 交换分区(即虚拟内存)
完整磁盘摘要及引导盘 → 选中本机磁盘为引导盘
6、网络主机名
开启一块网卡,配置IP参数
主机名,不要用默认
7、安装
设置root密码 暂时不创建用户
注:安装完毕后,自动重启,略过看kdump配置,新建用户
3. 基本命令
命令提示符 --输入命令前的提示文字
[root @localhost ~]#
[当前登录的用户@主机名 当前所在目录]用户身份符
# 管理员
$ 普通用户
所在文件 ~ 当前用户的家目录,仅有root的家目录在“/root”,其他用户在“/home”下
基础命令:
用户:
useradd "用户名" --新建用户
passwd "用户名" --设置密码,不加用户名,给当前用户设置密码
vi /etc/passwd --用户的配置文件,显示七列信息,用:分隔
root:X:0:0:: /root /set/hash
用户名:
密码列: --有专用于记录密码的配置文件,所以用X填充
用户ID: --UID,用户在系统中的唯一编号
--7.0之后版本,0-99 系统用户,100-999 软件用户, 1000-65535 自定义用户
--7.0之前版本,100-499 软件用户,500-65535 自定义用户
私有组ID: --GID,用于记录用户的所属的私有ID
用户属性: --用户的附加信息,如电话,邮箱,地址等(一般为空)
用户家目录: --指定用户家目录的位置
shell --用户登录后使用的shell
vi /etc/shadow --用户的密码配置文件,记录密码,密码有效期
(1970.01.01开始计时),改密码时隔
用户禁用 --锁用户
passwd -l aaa --通过锁密码,禁用用户aaa
passwd -u aaa --解锁密码
usermod -L pp --通过锁用户名,禁用用户
usermod -U pp --解锁用户名
取消密码验证
passwd -d pp --取消用户密码,即登录时无需密码登录
passwd pp --重新设置密码,恢复验证
组织用户登录系统
vi /etc/passwd --在shell列改为:/sbin/nologin,实现在未禁用用户的情况下,拒绝用户登录系统,但是可以登录服务
实现未禁用用户的情况下,拒绝用户登录系统,但是可以登录服务
改名:
usermod -l oo pp -- -l 改用户名,格式:先写新名,后写旧名
usermod -d /mnt/ccc ccc --更改用户的家目录,为:/mnt/ccc
删除用户:
userdel aa --删除用户,会保留用户相关文件,如:家目录等
userdel -r aa --删除用户,同时删除用户所有相关文件
组管理:
私有组 --属组
Linux中规定:每个用户必须属于一个,且只能属于一个私有组;
一个组可以是多个用户的私有组。
标准组 --
正常使用的用于管理用户的组,用户可有可无,可多个标准组。
vi /etc/group --查看组的配置文件,四列信息
组名:组密码:组ID(UID):组中的标准组成员
groupadd 组1 --新建组
gpasswd -a qq zu1 --把qq加入到zu1中
gpasswd -a 11 zu1 --给组添加成员
gpasswd -d pp zu1 --组中提出成员
gpasswd -A root,pp zu1 --把zu1组的权限给pp,管理组员,允许添加删除组中的用户。
gpasswd -A root zu1 --仅root为管理员
id pp --查看用户的相关信息
usermod -G zu2 pp --替换用户的标准组;注:用usermod -G 替换标准组后,原有的所有标准组全部退出
删除组:
groupdel zu1 --删除组
参数:
usermod useradd 参数:
-d --家目录
-g --私有组
-G --替换标准组
-u --指定UID
用户替换:
su pp --切换到pp身份下,exit退出;无 - 表示用户的环境变量设置
su - qq --使用目标用户的环境变量设置
sudo --给普通用户授权某些命令的使用权限
visudo --打开编辑sudo配置文件,绝对路径:/etc/sudoers
(约98行写下:用户名 主机名=(以某个用户身份) 命令程序的绝对路径)
列:
pp localhost=(root) /usr/bin/mount,/usr/bin/umount
说明:给pp授权,允许在localhost主机上以root身份使用mount,umount命令
以pp身份登录
sudo mount /dev/sr0 /media --用户验证sudo可用
———————————————————————————————————————————
ls --显示当前目录下的内容
ls /var --显示指定目录下的内容
ls -l --查看目录下详细信息(等同于 “ll”)
权限 硬链接数 属主 属组 大小 修改日期 文件名
属主:文件的所属者,默认文件的创建者即是文件的属主
属组:属主所在的私有组,即是属组
ls -a --显示目录下的所有文件,包括隐藏文件,以“.”开头的文件为Linux里的隐藏文件
ls -i --查看文件/目录,编号
注:里面的选择可以一起使用
文件权限:
权限区域,共十个字符
- rwx rwx rwx
文件类型 属主权限 属组权限 其他用户权限
u g o
注:表示三类对象用 a
文件类型:
- --表示二进制文件,即文本文档
d --目录
l --软链接
b --块设备
r --字符设备
权限:
r --读取 4
w --写入 2
x --执行 1
更改权限:
chomd u+x,g+w,o-r f1 --增减方式权限
chmod a+x f1 --给三类用户同时增减权限
chmod u=rw,g=r,o= f1 --赋值的方式设置权限
chmod a=rw f1 --同时给三个用户赋值权限
数字方式:
rwx 三个权限,当作2bit的二进制数字来计算,有对应权限设置设置1,无权限设置0
rw ---> 110 ---> 6
rwx ---> 111 ---> 777
r-x ---> 101 ---> 5
r-- ---> 100 ---> 4
chmod 644 --数字方式设置权限
注:提供数字不足时,左侧补零。chmod 66 f1 --即066权限
对于目录,rwx意义
r --显示目录的内容,即ls功能
w --在目录下创建、删除、改名功能
x --进入目录,即cd功能
默认权限有umask 变量值辅助计算,管理员umask=022,普通用户umask=002
文件 满权限 666 --umask = 默认权限 即644 664
目录 满权限 777 --umask = 默认权限 即755 775
更改文件/目录所属
chown pp f1 --更改文件的所属主
chown .pp f1 --更改文件的所属组
chown pp.pp f1 --更改文件的所属主和属组
chown -R pp.pp f1 -- -R 表示更改目录,并集成给目录中的所有文件,称为:递归
ACL --- 访问控制列表
功能:给指定用户特殊权限,即设定权限用户
getfacl f1 --查看文件ACL设置
setfacl -m u:pp:rw f1 --针对符f1文件,设置用户的ACL,允许pp具备rw权限;(g 表示组)
setfacl -x u:pp f1 --删除某项ACL设置
setfacl -b f1 --设置文件上所有ACL设置(恢复默认)
说明:
cp -p f1 /var --- -p 表示按原有的权限和所属信息不变,复制文件
————————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————————
打包
tar -cvf back.tar f1 f2 f3 --打包多个文件到back.tar中
-- -c 创建包文件 -v 显示所有过程 -f 指定打包文件名
tar -tf back.tar --查看包文件中的内容
tar -xvf back.tar --在当前目录下解压包。注:解包后,若当前已有同名文件,则覆盖。
tar -vxf back.tar -C /mnt/b1 --把解压的文件放到指定目录下
tar -vxf back.tar -C /mnt/b1 f1 f3 --- 仅提取制定文件
tar -Af back.tar back2.tar --把第二个包追加到第一个包中,合并。
tar -uf back.tar f4 f5 --更新包中的文件,也可以加入文件
tar -rf rf back.tar *.txt --把所有以.txt结尾的文件加入到back.tar里
tar -cvf back.tar f1 f2 f3 --remove-files --打包后删除原文件
3
tar -f back.tar -delete f4 --删除包中的文件
注:后缀名不能决定文件的存储编码格式,仅起到帮助识别的作用,建议加后缀
压缩
gzip back.tar --压缩文件,后缀.gz
gunzip back.tar.gz --解压文件
tar -zcvf back.tar f1 f2 f3 --打包的同时并压缩
tar -zxvf back.tgz -C /mnt/d1 --解压打包文件
.tgz = .tar.gz
————————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————————
Alt + F2 --切换终端,即切换登录界面
Alt + F1 - F6 --共6个终端界面可用,用户ttyx(数字)表示,可重复登录
exit --注销
w --查看当前登录的用户,可以查看远程登录的用户
who --查看当前登录的用户,可以查看登录的具体日期
clear --清屏 快捷键(Ctrl + L)
pwd --查看当前目录的绝对路径
↑↓ --翻看历史命令
history --查看历史命令
<Tab>键 --命令补齐 单击 显示到多个命令 或者文件的共有部分
双击 显示出所有的可能性
光标在字符后闪,说明还有其他文件的可能性
光标在字符空格后闪,说明无其他文件
unset LANG --清空语言,让语言恢复 到英文状态,因为字符界面不支持中文
vi "文件名" --vi编辑器,编辑文件,查看文件
→ 查看模式 → i → 编辑模式 → 编辑文字 → 退出 “ESC键” 返回查看模式
→ 按大写“ZZ”保存退出 → 按大写“ZQ”不保存退出
linux 运行级别 --系统的多多种运行模式或状态
0 关机模式
1 单用户模式,仅管理员可以登录,做系统修复或杀毒,相当于windows安全模式(F8)
2 多用户模式,单不支持网络通讯
3 完全模式,多用户,和上网,字符界面
4 自定义模式,一般不用,主要用于开发
5 图形界面模式
6 重启级别
init 0 - 6 --切换用户级别
设置开机级别:
版本7.0
systemctl get-default ---查看用户级别
systemctl set-default multi-user.target --设置开机级别为字符界面
systemctl set-default graphical.target --设置开机级别为图形界面
Redhat 7.0之前
vi /etc/inittab --编辑开机界面级别的配置文件
id: 5: initdefault --更改开机界面级别
系统管理命令:
注销:
logout
Ctrl + D
exit
关机:
init 0
halt
poweroff
shutdown -h now (立即关机)
shutdown -h 5 (5分钟后关机,会给其他终端发送提示信息)
shutdown -c (取消关机)
重启:
init 6
reboot
shutdown -r 5 (5分钟后重启)
cd --进入目录
cd /etc --进入目录
cd .. --返回父目录
cd - --进入上一个所在目录
cd --回家目录,等同于 cd ~
查询命令帮助
man ls --查看ls命令的详细信息(Q键退出)
info ls --查看ls命令的信息,不详细(Q键退出)
ls --help --查看ls命令的帮助信息,简单的命令
文件/目录管理
vi 文件名 --创建并编辑文件
echo aaaaa > f1 --创建一个名字为“f1”的文件,并写入“aaaaa”
--如果文件里有内容,会将其覆盖
touch 文件名 --创建空文件,可以同时创建多个文件,如(touch a1 a2 a 3),则会创建 a1 a2 a3
rm -rf 文件名 --删除文件
创建目录
mkdir 目录名 --创建空目录
mkdir -P d1/d2/3 --若父目录不存在,则一并创建,选项:-p
删除目录
rm -rf 目录名/文件 --删除目录/文件,
-r --删除目录
-f --删除时不提示
-rf --删除目录,不提示
rmdir 目录名 --删除空目录
查看文件
cat 文件名 --查看文档内容
cat -n 文件名 --带行号显示,无法翻页
more 文件名 --分屏显示文档内容,回车-翻页 空格-翻页 不可回翻
less 文件名 --分屏显示,可以回翻
q 退出
文件复制
cp 文件名1 文件名2 --复制文件,并改名
cp 文件名 /mnt/d2(目录路径) --复制到制定目录,可以指定路径
注:复制文件时,若目标无,复制成功;若目标存在,则提示是否覆盖
如果要复制目录,需要选择:-r
cp -r 目录名1 目录名2 --复制目录
注:复制目录时,若目标无,则复制并改名;若目标存在,则复制到目标目录里
文件移动
mv 文件名1 文件名2 --移动文件,并改名
mv 文件名 /mnt/d2 --移动目录
注:移动目录时,若目标无,移动成功;若目标存在,则提示是否覆盖。
mv 目录1 目录2 --移动目录
注:移动文件时,若目标物,则移动成功;
若目标存在,则移动到目标目录里
注:mv命令实现改名功能:mv操作时,不更换目录
链接文件
软连接 --相当于windows里的快捷方式,软连接文件指向的是原文件名;
再通过原文件找到磁盘存储空间,原文件改名/删除,软连接不可用
建议:软连接制定的原文件,用绝对路径表示
硬链接 --相当于文件的另一个文件名,硬链接文件通过源文件,直接指向磁盘空间;
即一块存储空间,两个文件名,原文件删除硬链接仍可用
ln -s 原文件名 软连接名 ---创建文件的软链接
ln 原文件名 硬链接名 --创建硬链接
ln -l --第二大列,显示的数字,表示硬链接
ls -i --显示文件inode编号,同一编号的是同一硬链接
路径制定
绝对路径:从/开始表示到文件所在位置的完整路径,称为绝对路径
相对路径:仅从当前所在目录下查看路径,称为相对路径
文件查找
find / -name fi --按照名字查找制定文件(在根目录下查找)
find / -size +100M --按照文件大小查找(在跟目录下查找)
find / -user root --按照文件的属主查找(在根目录下查找)
find / -inum 3004(i节点) --查找硬链接(在根目录下查找)
4. 通配符
保留字 --特殊含义的字符、符号
* --通配符,任由长度的任意字符
? --单配符号,单个长度的任意字符
[0-9] --单个字符的取值范围[a-z](区分大小写),[A-Z],[02468]等同于[0,2,4,6,8]
[^1-9] --单个字符的排除范围
"" --表示、明确参数,当前参数中有空格,为了表示参数是一个整体,需要加""
'' --为了实现引号的层次嵌套
`` --反单引,所引起的内容当做命令来执行
\ --反斜杠,转义字符,把符号或字符的隐藏含义显示出来
| --管道符,前后两个命令,前命令的运行结果作为后命令的输入信息使用
$ --用户身份符;变量值提取;
> --输出重定向,前命令后文档,前命令的运行结果不显示,保存到指定文档中
-- > f1 qin清空f1中的内容
< --输入重定向,前命令后文档,把后文档中的内容当做前命令的输入信息
列:write pp < f1 wall < f1
& --后台指定符,把命令放入后台执行,仅显示结果(Ctrl + z)
jobs --查看后台 列:find / -name f12 &
write root --给已登录德用户发送消息,进入消息编辑界面,Ctrl + d 退出编辑
write root tty3 --指定给那个终端的用户发送消息
wall --给所有登录的用户发送消息
mail root --给用户发邮件
mail --查看本机邮件
5. shell
shell
编辑器:负责把系统之外的高级语言编写的软件程序,翻译成计算机硬件能够识别的机器语言
Linux中的编辑器为shell,RedHAT和CentOS默认使用的是Bash
命令的分类
内置命令
命令集成于系统shell和内核中,无需编译,没有对应的可执行程序
外部命令
位于系统的shell之外,有对应的可执行程序,需要shell编译后才可执行
whereis ls --查看某个命令的可执行程序和帮助文档位置
——————————————————————————————————————————————————————————————————————————————————————————
环境变量
功能:指定系统中的某种工作状态的变量
常用变量:
LOGNAME --当前登录用户
SHELL --当前编译器的版本
HOME --当前用户的家目录
LANG --当前系统语言
PATH --命令搜索路径,运行命令时,Linux到那些目录下查找可执行程序
PS1 --命令提示符,指定字符界面下,输入命令前的提示文字
set --查看系统中所有的环境变量
echo $PS1 --查看环境变量的值,环境变量值必须大写
PS1="{\u@\h \t \w }\\$" --更改环境变量的值
\u --用户名
\h --主机名
\t --时间
\d --日期
\w --绝对路径
\W --相对路径
\\$ --身份符
重启失败
原因:系统配置有专项的配置文件做记录,存放于磁盘中,系统运行是从磁盘读取配置文件到内存,日常命令操作,生效给内存中的配置文件,磁盘中的配置文件未被改动。所以注销、重启时失效。
解决重启失效:手动更改磁盘中的配置文件
——————————————————————————————————————————————————————————————————————————————————————————
环境变量配置文件
系统环境变量配置文件
针对整个系统生效,所有的用户都会集成和遵守
/etc/bashrc --针对shell和内核做操作
/etc/profile --针对外围程序做操作
个人环境变量配置文件
仅针对单个用户生效,不影响其他用户使用
$HOME/.bashrc
$HOME/.bash_profile
把对环境变量做更改的命令写入配置文件。
注:系统配置王文建和个人配置文件发生冲突是,以个人设置为准。
——————————————————————————————————————————————————————————————————————————————————————————
命令别名:
给较长较复杂的命令,起一个剪短的格式,便于使用
alias --查看命令别名
alias abc="cd /etc/sysconfig/network-scripts" --新建命令别名
unalias abc --取消命令别名
注:定义的命令别名也是重启失效,可以写到环境变量配置文件中永久生效。
shell 编程 --- 批处理脚本编写,多用于夜间跑批
vi text.pl --- 脚本后缀 .pl .sh
#!/bin/bash --- 指定编译运行本脚本的shell
代码或命令
chmod a+x text.pl --- 添加执行权限
运行脚本
/mnt/text.pl --- 绝对路径运行脚本
cd /mnt
./mnt --- 相对路径运行脚本
bash test.pl --- 使用bash执行脚本,脚本可以无执行权限(x)
注:运行脚本时,是新开shell执行命名,脚本运行完毕,shell关闭。
所以,脚本对环境变量等项的操作,是无法生成给shell的。
source test.pl --- source表示使用当前shell执行脚本,不新开shell
. test.pl --- 等同于source
编程语法:
变量:程序中用于临时存放数据的工具,实质是在内存中开辟一块空间,并起名。
name=zhangsan --- 定义一个变量叫做name,存入数据zhangsan,称为赋值
age=25 --- 定义一个变量叫做age,并赋值
echo "name is $name"
echo "age is $age"
shu=`ls -l /etc | grep "^d" | wc -l` --- 用``执行命令,命令的结果赋值给变量
let num3=$num1+$num2 --- let表示后边代码按数学计算执行
read num1 --- read 是提示从键盘接受输入的数据赋值给变量
"*" --- 变量或数值有特殊字符时,写在""内表示普通字符使用
判断语句
if格式1
if [ 判断条件 ];then --- 判断条件,若条件满足,则执行代码
//代码
fi
判断条件
age -gt 15 --- gt 大于 lt 小于 eq 等于 ge 大于等于 le 小鱼等于
name = "zhangsan" --- 字符判断用=
注:=两侧有空格表示判断,=两侧无空格表示赋值
-f /mnt/f1 --- 判断文件是否存在;-d 判断目录 -l 判断软链接
-r /mnt/f1 --- 判断文件是否有r权限 -w -x
-z $num1 --- 判断是否是空变量,若是,则结果为:true
条件1 -a 条件2 --- -a表示and -o表示or
!条件 --- !非,取反值
if格式2
if [ 判断条件 ];then --- 判断条件,若条件满足则执行代码1
//代码1
else --- 条件不成立,则执行代码2
//代码2
fi
if格式3
if [ 判断条件 ];then --- 判断条件1成立,则执行代码1
//代码1
elif [ 判断条件 ];then --- 若条件1不成立,则执行判断条件2,成立则执行代码2
//代码3
elif [ 判断条件 ];then --- 若条件2不成立,则执行判断条件3,成立则执行代码3
//代码3
fi
注:判断从上之下执行,以次判断,遇到成立的则立即执行不看后面的代码,所以多重判断,需要设计好个条件的排列顺序。
循环语句
while [ 条件 ]
do
//代码
done
num=1
while [ $num -le 100 ]
do
echo "hello"
let num=$nu_1
done
执行过程:判断条件 -> 执行代码 -> 判断条件 -> ...... -> 判断条件失败 -> 跳出循环
循环四要素:初始值、条件、代码、自增减
for 变量 in 值1 值2 值3 值4 --- 给变量依次赋值,带入代码
do
//代码
done
列:
sum=0
for num in 1 2 3 4 5
do
let sum=$sum+$num
done
多分支语句
echo please input your name
read name
case $name in
1)echo first ;;
2)echo second ;;
3)echo third ;;
*)echo ----- ;;
esac
case $变量 in --- 根据变量的值,找到下列对应项,执行代码
值1)//代码 ;; --- ;; 表示该项结束
值2)//代码 ;;
值3)//代码 ;;
*)//代码 ;; --- * 若给定的值和变量都不匹配,执行*中所对应的代码
esac
选择结构
select 变量 in 值1 值2 值3 ... ... --- 把给定的各个值,显示在菜单中用于选择,根据人为选择,把对应的值赋值给变量,带入代码中执行
do
//代码
break
done
列:
select num in aaa bbb ccc ddd
do
echo $num
dome
6. 分区
标准分区
主分区:
允许安装系统
一块磁盘最多四个主分区
扩展分区:
占主分区的一个名额
扩展分区不可直接使用,必须在扩展分区的基础上,创建逻辑分区
逻辑分区:
建立在扩展分区的基础上,可建立多个,可以用于存储文件
Linux基本磁盘管理
lsblk --查看本机的磁盘分区
fdisk --查看本机的磁盘分区表,sector(扇区),cylinder(柱面)
--blocks表示分区大小,单位是Kb
--7.0之后的版本,stat end 表示开始和结束的扇区号
--7.0之前的版本,stat end 表示开始和结束的柱面
df -h --查看文件系统的使用率
fdisk /dev/sda --使用fdisk工具进行磁盘管理,进入fdisk界面
命令:
d --删除某个分区
n --新建某个人去
t --更改分区的系统编号,即文件系统类型
q --不保存退出
w --保存退出
p --显示分区表,等同于fdisk -l
m --显示帮助
实验:
按 n 键 ->输入扇区号,一般使用默认即可 -> 输入结束扇区号 -> +1000000表示占用的1000000个扇区,+800M自定义分区大小
按 t 键 ->指定分区号 -> 按L键 -> 显示所有可用文件系统类型(83 Linux即 exit4 或 86 bg)-> 86 ,即NTFS,为了和windows兼容 -> 按 p 键 -> w保存退出
注:新的分区表,并未立即生效,reboot重启后失效
partprobe --更新分区表,使分区表立即生效
格式化=制作文件系统
mkfs -t ext4 /dev/sda7 --制作文件系统
mkfs -t vfat /dev/sda7 --linux中对所有Windows文件系统类型统一使用vfat
mkdir /mnt/d1 /mnt/d2 --创建挂载点
mount /dev/sda7 /mnt/d1 --挂载文件系统
umount /dev/d1 --卸载文件系统,指定设备或挂载点都可
df -h --可见挂载效果
mount --查看本机的挂载表
mount /dev/sda7 d1 -o ro --指定挂载时设定为只读文件系统
开机自动挂载
vi /etc/fstab --编辑文件系统配置文件,写入
/dev/sda7 /mnt/d1 vfat rw,user 00
/dev/sda1 /mnt/d1 ext4 rw,user 00
保存退
书名:rw挂载权限,user允许普通用户访问,
1列表示是否自动备份(0-不备份,1-备份);
2列表示是否开机自动扫描(0-不扫描,1-自动扫描,2-手动扫描)
fsck -t ext4 /dev/sda6 --手动扫描命令
UUID --设备唯一识别号
blkid --查看所有设备的UUID
blkid /dev/sda1 --查看指定设备的UUID
——————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————
LVM --逻辑磁盘
基本分区缺点:分区划分后,不可扩容,分区分配空间必须连续的,不可跨
LVM:解决标准分区的缺点
基本概念:
PV:物理卷,一个分区制作称一个PV
VG:卷组,多个PV组成一个卷组,称为VG
LV:逻辑卷,从VG中划分出一块存储空间,称为LV该LV可以跨越多个PV占用空间
--一个LV制作文件系统,挂载使用,可根据需要扩容
PE:物理单元,PV加入VG时,按照统一大小,分割成个存储单元,称为PE
--建立VG时,需要指定PE的大小
--划分LV时根据LV的大小划分出足够多的PE,组成LV
LE:逻辑单元,PE被LV占用后,在LV中,称为LE
--PE = LE,LE是PE的映射
实验:
1、划分分区,制作成PV
fdisk 划分分区 /dev/da7 /dev/da8 /dev/da9
指定文件系统类型:8e(Linux LVM)
partprobe --重置分区表
pvcreate /dev/sda7 /dev/sda8 /dev/sda9
pvdisplay --查看本机所有的PV
2、把PV加入到VG中
vgcreate -s 64 vg01 /dev/sda8 /dev/sda9 --制作VG
-- -s 指定PE大小(默认4M,必须为2的次方)新VG名 加入的PV
vgdisplay --查看VG,可见PV数,PE数,使用PE数,未使用PE数
3、从VG中划分LV
lvcreate -L 500M -n fv01 /dev/vg01 --创建LV,(-L -- 指定LV大小,-l -- 指定LV的个数,-n -- 指定LV名 VG名)
lvdisplay --查看本机的所有LV
lvdisplay -m /dev/vg01/lv01 --查看LV中所占用的PE映射关系
4、给LV制作文件系统,挂载使用
mkfs -t ext4 /dev/lv01 --制作文件系统
mount /dev/vg01/lv01 /mnt/d1 --挂载,df -h --查看
开机自动挂载:
写入/etc/fstab 中即开机挂载
VG扩容:
vgextend /dev/vg01 /dev/sda7 --扩容VG,加入PV
vgreduce /dev/vg01 /dev/sda7 --缩容VG,提出PV
LV扩容:
lvextend -L +100M /dev/vg01/lv01 --扩容LV
-- -L +100M 表示增加100M
-- -l 20 表示增加到20个LE
注:扩容后的LV新增加的空间,不可直接使用,因为没有做文件系统
resize2fs /dev/vg01/lv01 --对新增加的空间制作文件系统
lvextend -L +100M -r /dev/vg01/lv01 --扩容LV时,-r 直接做文件系统
数据转移:
pvmove -n /dev/vg01/lv01 /dev/sda7 /dev/sda9 --把lv01在sda7上映射的PE,转移到sda9上
-- -n 指定LV名,若不写转移sda7上的所有LV映射
清理实验
umount
lvremove
vgremove
pvremove
7. Block,inode,vim
Block --存储块
一个分区制作文件系统后,则会被分割成N个大小相同的存储块,称为Block。
Block是分区分配文件空间时的最小单位,目的是快速磁盘寻址,Linux中默认Block的大小是4kb。
du f1 --查看文件占用的磁盘空间大小,显示单位Kbd
du -s /f1 --查看整个目录占用磁盘大小
mkfs -t ext4 -b 2k /dev/sda8 --配置文件系统的存储块为2Kb
--指定Block大小,最大为4Kb
tune2fs -l /dev/sda1 --查看某分区的Block信息,可见Block大小,Block个数,Inode个数。
tune2fs -c 10 /dev/sda8 --没挂载10次进行文件系统扫描。
tune2fs -i 20d /dev/sda8 --每20天进行一次系统扫描(d-天,w-周,m-月)
tune2fs -c -1 /dev/sda8 --取消按挂载次数自动扫描
toue2fs -i 0 /dev/sda8 --取消按天 数/周/月 自动扫描
inode --I节点
一个分区制作完文件系统后,会被分割成两个区:
inode区 数据区
一个文件在inode中占用一个block,记录:文件名,大小,创建修改日期,权限,所属所占数据区的地址编号等
由inode指定的数据器地址编号,查找到数据所存放的区域
说明:inode区有多少个block,大约表示该文件系统允许存放多少个文件。
对于文件系统(分区)的概念
1、block块大,分区中,每个文件较小,但是文件个数多,则inode区用完,但数据区任有空闲
2、bolck块小,分区中,每个文件较大,则数据区用完,inode区有空闲
建议:当制作文件系统时,建议事先规划一下该分区的使用目的,判断文件的大小,设定合理的block大小。
一个文件系统制作完成后,设定第一个block专用于记录本分区的属性信息,被称为超级块(第31块block作为超级块的备份)
df -i --查看inode区信息,单位:个
ls -i --查看inode节点编号
stat f1 --查看文件详细信息,可见inode编号,硬链接数等
find / -inum 1002 --查看1002编号的硬链接
vi配置
vi f1 -> 命令模式 -> i a o键 -> 编辑模式 -> ESC 键 -> 命令模式 -> : -> 末行模式
wq --保存退出
q! --不保存退出
set nu --显示行号(set nonu --取消行号)
101 --跳转到101行
set backup --编辑前做备份,备份文件自动放在同目录下,同名~文件中
/name --查找指定单词,n键查找下一个
3,6 s/name/123123/g --查找并替换字符,固定格式,3,6表示3-6行(%表示所有行)
% g/name/d --删除包含指定字符的行
命令模式 --快捷键
ZZ --不保存退出
ZQ --保存退出
G --跳转到文件结尾
yy --复制光标所在行
3yy --复制光标所在行开始的三行
p --粘贴到光标的下一行
dd --剪切光标所在行
3dd --剪切光标所在行开始的3行
u --撤销上一步
U --撤销整个编辑
8. 用户,组管理
用户:
useradd "用户名" --新建用户
passwd "用户名" --设置密码,不加用户名,给当前用户设置密码
vi /etc/passwd --用户的配置文件,显示七列信息,用:分隔
root:X:0:0:: /root /set/hash
用户名:
密码列: --有专用于记录密码的配置文件,所以用X填充
用户ID: --UID,用户在系统中的唯一编号
--7.0之后版本,0-99 系统用户,100-999 软件用户, 1000-65535 自定义用户
--7.0之前版本,100-499 软件用户,500-65535 自定义用户
私有组ID: --GID,用于记录用户的所属的私有ID
用户属性: --用户的附加信息,如电话,邮箱,地址等(一般为空)
用户家目录: --指定用户家目录的位置
shell --用户登录后使用的shell
vi /etc/shadow --用户的密码配置文件,记录密码,密码有效期
(1970.01.01开始计时),改密码时隔
用户禁用 --锁用户
passwd -l aaa --通过锁密码,禁用用户aaa
passwd -u aaa --解锁密码
usermod -L pp --通过锁用户名,禁用用户
usermod -U pp --解锁用户名
取消密码验证
passwd -d pp --取消用户密码,即登录时无需密码登录
passwd pp --重新设置密码,恢复验证
组织用户登录系统
vi /etc/passwd --在shell列改为:/sbin/nologin,实现在未禁用用户的情况下,拒绝用户登录系统,但是可以登录服务
实现未禁用用户的情况下,拒绝用户登录系统,但是可以登录服务
改名:
usermod -l oo pp -- -l 改用户名,格式:先写新名,后写旧名
usermod -d /mnt/ccc ccc --更改用户的家目录,为:/mnt/ccc
删除用户:
userdel aa --删除用户,会保留用户相关文件,如:家目录等
userdel -r aa --删除用户,同时删除用户所有相关文件
组管理:
私有组 --属组
Linux中规定:每个用户必须属于一个,且只能属于一个私有组;
一个组可以是多个用户的私有组。
标准组 --
正常使用的用于管理用户的组,用户可有可无,可多个标准组。
vi /etc/group --查看组的配置文件,四列信息
组名:组密码:组ID(UID):组中的标准组成员
groupadd 组1 --新建组
gpasswd -a qq zu1 --把qq加入到zu1中
gpasswd -a 11 zu1 --给组添加成员
gpasswd -d pp zu1 --组中提出成员
gpasswd -A root,pp zu1 --把zu1组的权限给pp,管理组员,允许添加删除组中的用户。
gpasswd -A root zu1 --仅root为管理员
id pp --查看用户的相关信息
usermod -G zu2 pp --替换用户的标准组;注:用usermod -G 替换标准组后,原有的所有标准组全部退出
删除组:
groupdel zu1 --删除组
参数:
usermod useradd 参数:
-d --家目录
-g --私有组
-G --替换标准组
-u --指定UID
用户替换:
su pp --切换到pp身份下,exit退出;无 - 表示用户的环境变量设置
su - qq --使用目标用户的环境变量设置
sudo --给普通用户授权某些命令的使用权限
visudo --打开编辑sudo配置文件,绝对路径:/etc/sudoers
(约98行写下:用户名 主机名=(以某个用户身份) 命令程序的绝对路径)
列:
pp localhost=(root) /usr/bin/mount,/usr/bin/umount
说明:给pp授权,允许在localhost主机上以root身份使用mount,umount命令
以pp身份登录
sudo mount /dev/sr0 /media --用户验证sudo可用
9. 系统备份
数据备份
完整备份 -- 备份所有文件
增量备份 -- 备份和上一次备份后的变化数据
累计增量备份 -- 备份和上一次完全备份的变化备份
备份等级
0 - 9
0 -- 完全备份
1 -- 备份和0级的变化数据
2 -- 备份和1级的变化数据
.
.
.
9 -- 备份和8级的变化数据
注:每一级备份,向前找最近的比它数字小的备份操作,做变化备份
案例:
周日晚 0级备份 -- 完全备份
周一晚 2级备份 -- 增量备份
周二晚 2级备份 -- 累计增量备份
周三晚 1级备份 -- 累计增量备份
周五晚 2级备份 -- 增量备分
周六晚 2级备份 -- 增量备份
实验:
mout /dev/sr0 /mcdia -- 挂载光盘
cd /media/Packages --进入光盘下默认的安装包路径
rpm -ivh rmt-1.5XXXX.rpm
rpm -ivh dump-0.4XXX.rpm --安装所需软件包
注:dump备份只针对挂载的文件系统做操作,即指定挂载点做备份。
dump备份数据存放在一个未挂载的文件系统中
2
fidsk /dev/sda -- 做一块新的分区,更新分区表,制作文件系统,不挂载
dump -0 -u -f /dev/sda7 /home --备份某文件系统
-- -0 备份等级,0级备份(完全备份)
-- -u 做备份日志,记录文件:/etc/dumpdates
-- -f 指定备份存入的设备
dump -W --查看备份记录
restore -tf /dev/sda7 --查看备份设备中的备份内容
restore -rf /dev/sda7 --恢复所有数据到当前目录,若同名则覆盖
restore -xf /dev/sda8 f1 ---恢复指定文件或目录,按1键,按n键完成
数据转移
dd if=源设备/文件 of=目标设备/文件 bs= 每次转移字节数 count=转移次数
dd if=f1 of=f2 --- 相当于文件复制
dd if=/dev/sda1 of=/dev/sdb2 --- 分区对考
dd if=/dev/sda of=/dev/sdc --- 盘盘对考
注:dd也可以做数据备份使用
10. 软件安装
rpm
挂载光盘
mount /dev/sr0 /media --- 光盘挂载
--- 光盘设备文件/dev/cdrom 实质上时一个软连接指向sr0
cd /mcdia/Packages --进入光盘中的rpm软件包存放路径
-- 老版本的LInux路径:RPMS Packages
rpm -ivh dhcp.4.rpm --安装指定软件包
-i 安装
-v 检查、差错
-h 以#形式显示安装进度
rpm -e dhcp -- 卸载
rpm -q dhcp -- 查询某软件包是否安装过
rpm -qa -- 查询系统里安装的所有安装包
rpm -ql dhcp --查询软件安装后所有文件的位置
rpm -qf /etc/dhcp/dhcpd.conf --- 查询某文件被那个软件使用
rpm -Uvh dhcp-4.XXX.rpm --- 升级软件
rpm -Fvh dhcp-4.XXX.rpm --- 更新软件
yum源安装
功能:解决rpm软件包之间的依赖关系
思路:指定一个存放所有rpm软件包的路径,安装时,用yum自动调用安装依赖关系包
挂载光盘:
cd /etc/yum.repos.d --- 进入yum固定的安装源配置文件存放路径
mkdir back --- 创建目录,用于备份
mv CentOS-* back --- 备份源有文件
vi cdrom.repo --- 编辑自定义的安装源配置文件,文件名随意,后缀必须时:.repo
[cdrom] --- 设置项目标签,随意写
name=cdrom --- 本项名,随意写
baseurl=file:///media --- 指定所有rpm软件包的存放路径
enabled=1 --- 启用本项
gpgcheck=0 --- 关闭安全检验
yum -y install mysql-connector-java
yum clean all --- 清空yum缓存
yum makecache --- 创建yum缓存
yum list --- 查看可用安装源下,都有那些软件包
yum remove yum update 等命令
yum makecache --- 刷新缓存
源码包安装 --- 源程序包
下载到软件包大多是.tar /.gz /.tgz
tar -zxvf xxx.tgz --- 解压解包,解包后ls会查看到一个目录
cd XX --- 进入解包后生成的目录
sl查看
情况一:
发现一个install.pl的可执行程序,即安装程序
./install.pl --- 绝对路径运行安装程序,.表示当前目录
情况二:
发现一个叫configure的可执行程序,说明软件包还未被编译
./conifigure -- 绝对路径运行该程序,进行编译检查,若无error,warnning等报错
make --- 编译本软件
make install --- 安装本软件
11. 硬件管理
查看CPU
cat /proc/cpuinfo --查看CPU信息
-- /proc 调取当前内存中的系统信息做记录,采用伪文件系统
lscpu -- 查看CPU的硬件信息,可见core数(线程数),一核做VDT虚拟化技术,可以运行两个任务,称为:2core
top -- 查看系统当前综合性能,可见CPU、内存、进程等、(3秒刷新一次,q键退出)
sar 1 3 -- 查看CUP的使用率,每一秒显示一次,共显示2次
%user -- 以用户身份调用的程序占CPU比例
%system -- 系统进程占CPU的比例
%idle -- CPU空闲率,正常:50%+ 较忙 :-40%
%iowait -- 等待读写的进程占用CPU比例
%nice -- 手动调整过优先级的程序占CPU比例
%steal -- 卡死进程占CPU的比例
负载:CPU每个core上,运行队列中有几个任务在排队运行,core上给每个任务分配时间片
w --可见平均负载大小,显示:lmin 5min 15min 内的平均负载
uptime --只显示平均负载大小,正常:0.7 , 负载过大:2
查看内存:
free -m -- 查看内存使用情况,-m 按MB显示,正常使用率 40% 左右
查看磁盘:
iostat -- 查看各磁盘的读写速度
查看借口:
lsusb
lspci
dmesg -- 查看硬件检测报告,检修硬件故障的时查看
进程管理
ps -- 查看当前登录账户正在登录的进程
ps -aux -- 查看系统中所有进程,可见:所有用户,进程ID,占CPU比例,占内存比例,占swap(虚拟内存)比例
ps -ef -- 查看系统中所有进程,可见PPID - 父进程
状态:
运行态:
前台运行台
后台运行台
阻塞态(暂停态,挂起态)
终止态:
命令 + & 放入后台
前台进程 + Ctrl+c -- 强停
前台进程 + Ctrl+z -- 放入后台挂起状态
jobs -- 查看后台进程,可见后台运行和后台挂起进程[]
bg X -- 前台挂起进程放入后台运行,X表示进程编号
fg X -- 后台进程放入前台运行,X表示进程编号
杀死进程
kill -l -- 显示杀死级别
kill -9 PID -- 杀死指定进程
kill -9 进程名 -- 杀死多个同名进程
12. 进程
进程分类:
交互进程:用户人为输入的命令,命令的执行进程称为交互进程。
批处理:脚本程序,实现多个命令写入一个可执行脚本,运行该脚本执行多个命令。
守护进程:监控或监听本机的某个服务或端口的进程。
定点运行:
at 22:00 --- 设定在指定的时间运行进程,回车后进入命令编辑界面,Ctrl+d结束编辑。
at now+5min --- 5分钟后执行命令
atq --- 查询以指定的定点任务,可见任务编号
at -c 任务编号 --- 查询具体的任务编号
atrm 任务编号 --- 删除任务
定点任务进程文件:/var/spool/at下,有定点任务对应的可执行程序
at用户管理文件:
/etc/at.deny --- 列出拒绝使用at功能的用户
/etc/at.allow --- 只运行那些用户使用at功能
注:当allow和deny 同时存在时,以at.allow 为准
at功能缺点:只能执行一次,不可以周期性执行
计划任务:
crontab -e --- 编辑当前用户的计划任务,采用vi编辑方式
crontab -l --- 查看当前用户的计划任务
crontab -r --- 删除本用户的所有计划任务
crontab -e -u pp --- -u 指定用户,给pp创建计划任务
格式:
分 时 日 月 周 命令 --- 需要命令程序的绝对路径
00 22 * * * /usr/sbin/reboot --- 表示每天10点重启
00 22 1 * * /usr/bin/rm -rf /tmp/* --- 每月1号十点删除tmp下的所有内容
00 22 1 * * /usr/bin/rm -rf /tmp/* --- 每周1十点删除tmp 下的所有内容
00 22 1,2,3,4, * * /usr/bin/rm -rf /tmp/* --- 用,做挑选
*/10 * * * * /usr/ben/rm -rf /tmp/* --- */数,设定频率
* * * * 1-5 /usr/ben/rm -rf /tmp/* --- 用 “数-数” 表示范围
cron的记录文件:
/var/spool/cron下,以用户名命名的文件,即对应用户的计划任务
cron的管理文件:
/etc/cron.deny /etc/cron.allow allow文件默认不存在,特性功能与at相同
13. 文本字符管理
head -n 3 f1 --- 显示文件前三行
head -n -3 f1 --- 不显示后三行
tail -n 3 f1 --- 显示后三行
tail -n +2 f1 --- 从第二行显示到最后一行
tail -n +3 f1 | bead -n 3
grep 'name' f1 --- 抓取显示指定字符的行
grep -i 'name 'f1 --- -i 忽略大小写,抓取
grep '^name' f1 --- 显示以什么开头的行
grep 'name$' f1 --- 以指定字符结尾的行
grep -v 'name 'f1 --- 排除显示包含'name'的行
wc -l f1 --- 统计文字汇总的文字行数
ll /mnt/ | grep '^d' |wc -l --- 统计有多少个目录
sort -rn -k 2 f1 --- 按某列的值,排序显示文档内容
-r -- 降序
-n -- 按数值排序
-k -- 指定按第几列的数据排序
ps -aux | sort -rn -k 4 | heab -n 5 --- 显示占内存最高的前5个进程
awk --- 抓取显示列
awk -F " " '{print $1,$3}' f1 --- 抓取显示指定列
-F -- 指定列的分割符
$2,$3 -- 指定要抓取的列
awk -F "" '($2>300) {pront $2,$3}' f1 --- ()中加筛选条件
sed '2,4d' f1 --- 不显示2到4行
sed '2,$d' f1 --- 不显示从第2行开始到结尾
sed 's/name/abc123/g' f1 --- 替换显示,把原字符,替换成新字符
sed '1a\aaa sss ddd' f1 --- 在第1行后追加,一行为:aaa sss ddd
sed '1i\aaa sss ddd' f1 --- 在第1行前插入,一行为:aaa sss ddd
sed '1c\aaa sss ddd' f1 --- 把第1行的内容替换成:aaa ss ddd
sed '2,3d' f1 --- 不显示2,3行的内容
sed '/name/d' f1 --- 物理删除包含指定字符的行
sed -n '/name/p' f1 --- 显示包含指定字符的行
14. 服务
服务
Linux中某项专用的功能,如:at,wed,cron,FTP等
服务管理
Linux7.0之后版本使用systemd管理系统进程及服务
systemctl list-unit-files --- 查看系统中存在的所有服务
--- 右侧显示该项服务的开始状态,static 系统必备服务,enable 开机启动,disable 开机关闭。
systemctl list-unit-file | grep atd --- 查看指定服务的开机状态
stsysv
systemctl enable atd --- 设置服务的开机状态
disable --- 开机不启动
systemctl status atd --- 查看服务的启动状态
systemctl stop atd --- 关闭服务
--- stat 开始
--- restart 重启
--- reload 重载
服务进程的存放路径
/usr/lib/systemd/system中,以.service 结尾文件
说明:服务即某个功能,各自有各自的服务名,如:at cron http web
服务有对应的进程,进程有各自的进程名,进程名的命名习惯:服务名后加d,如:atd crond httpd 等
systemctl restart httpd.servcie 实际使用时可省略.sercice 不写
7.0之前版本
Linux使用init进程管理系统进程即服务
所有系统服务:/etc/rc.d/init.d 下存放
service httpd restart --- 使用service 命令开启,关闭,重启服务
ntsysv --- 查看、配置所有服务的开机状态
chkconfig httpd on --- 设置某个服务的开机自启,off 开机不自启
开机级别
开机级别文件
/usr/lib/systemd/system下,以.target 命名的文件
会发现同级别有多个文件,目的是设置相同级别下有多中开机状态
开机级别配置文件
/etc/systemd/system/default.target,软链接文件,指向某个.target文件,LInux的开机级别
Linux启动顺序
开关 -> bios加电自检 -> 读取磁盘的MBR,运行引导程序 -> 选择要进入的系统 -> 加载系统内核(kernel) -> 启动shell编译器,运行systemd进程 -> 读取defaule .target ,进入相应的级别 -> login登录
grup引导程序
vi /etc/grub2.cfg --- 编译grub配置文件呢,是软链接,指项/boot/grub2/grub.cfg
timeout=5 --- grub 界面倒计时时间
menuentry --- 可选项
开机级别修复
开机grub界面下,按上下键(取消倒计时)
让光标停留在正常Linux系统上,按 e 键,进入代码编译界面
编译Linux16行,在结尾处追加 systemd.unit = rescue.target --- 临时更改启动代码,让系统进入单用户模式
按ctrl + X 组合键,执行启动代码,进入单用户模式,仅输入root密码即可
systemctl set-default multi-user.target --- 该回正常启动级别
reboot启动
root密码修复
开机grub界面下,按上下键(取消倒计时)
让光标停留在正常Linux系统上,按 e 键,进入代码编译界面
找到LInux16行,ro 改为 rw init=/sysroot/bin/sh ---- 开机不挂载光盘直接进入shell:sh
(在Linux16这行的后面输入“rd.break”ctrl + x)
ctrl + x 执行操作
mount -o remount ,rw /sysroot --- 重新挂载磁盘分区
chroot /sysroot --- 切换到分区挂载状态,并启用bash shell
unset LANG --- 清空语言
passwd root --- 重置root密码
touch /.autorelabel --- 重建selinnux的标签文件
exit --- 退出bash,回到sh
reboot --- 重启
15. 脚本
cpuMonitor
#!/bin/bash
while true
do
date +"20%y-%m-%d %H:%M:%S" >> /mnt/logs/cpuMonitor.log
shu=`sar 1 1 | tail -n 1 | awk -F " " '{print $8}'`
shu2=${shu%%.*}
if [ $shu2 -lt 30 ]; then
ps -aux | tail -n +2 | sort -rn -k 3 | head -n 10 >> /mnt/logs/CPUMonitor.log
fi
echo "" >> /mnt/logs/CPUMonitor.log
sleep 1800 --- sleep 进程休眠指定的时间,单位:秒
done
##本脚本有循环执行,可以不需要cron指定
## /mnt/cpuMonitor.pl & --- 脚本放入后台运行即可
diskMonitor
#!/bin/bash
date +"20%y-%m-%d %H:%M:%S" >> /mnt/logs/dfMonitor.log
df -h | tail -n +2 > /tmp/df.tmp
while read hang
do
shu=`echo $hang | awk -F " " '{print $5}'`
shu2=${shu%%%*}
if [ $shu2 -ge 70 ]; then
echo $hang >> /mnt/logs/dfMonitor.log
fi
done < /tmp/df.tmp
echo "" >> /mnt/logs/dfMonitor.log
rm -rf /tmp/df.tmp
##使用cron设定本间本每天晚上02:00执行一次,即跑批
memMonitor
#!/bin/bash
date ="20%y-%m-%d %H:%M:%S" >> /mnt/logs/memMonitor.log
info=`free | grep Mem`
shu1=`echo $info | awk '{print $2}'`
shu2=`echo $info | awk '{print $3}'`
let shu3=$shu2*100/$shu1
echo $shu3
if [ $shu3 -ge 70 ]; then
ps -aux | tail -n +2 | sort -rn -k 4 | head -n 10 >> /mnt/logs/memMonitor.log
fi
echo "" >> /mnt/logs/memMonitor.log
##可以使用cron,也可以使用while sleep模式周期运行