计算机发展的五代: 电子管、晶体管、中小规模集成电路、超大规模集成电路、AI人工智能
冯.诺依曼体系结构的五大组成部分: 存储器、运算器、控制器、输入设备、输出设备
内存跟外存的区别:内存(如内存条)的数据在断电后就会丢失,而外存(如硬盘、U盘、光盘等)的数据在断电后是不会丢失的。
Linux内核的创始人是林纳斯·本纳第克特·托瓦兹1991年的十月开发 常见的3个Linux系统名称Redhat红帽、CentOS社区版的Linux 、面向于服务器、Ubuntu、Debian
CLI:命令行界面,提供用键盘输入命令的操作方式。 GUI:图形用户界面,提供用鼠标操作的图形化操作界面。 CLI命令行界面管理文件:查、增、改、删除 清屏:ctrl+L 或 clear
Linux的完整命令格式命令、选项、参数 命令的功能分类:文件管理、用户管理、权限管理、磁盘管理(存储管理)、日志管理、进程管理、服务管理等
目录结构 / :根目录,是路径的最顶层。所有文件都将位于此目录下。
/root :root用户的家目录,存放root用户的隐私文件
/home :普通用户家目录的主目录。如jin用户的家目录是/home/jin /bin或/usr/bin :存放普通用户的命令程序文件。 /sbin或/usr/sbin:存放超级(super)用户的命令程序文件。
/tmp:存放临时文件的目录,临时文件通常是系统运行程序时自动生成 /var:存放可变的文件, /mnt或/media:光盘、U盘等设备的文件系统挂载目录 /proc:进程文件目录,也称为虚拟文件系统,程序在内存中运行时生成的文件 /opt:是选项目录,可以用来安装第三方软件到此目录中
/usr:是unix soft resource的缩写,即unix软件资源文件目录。 /dev:设备(device)文件目录,存放硬盘、分区、tty终端等设备文件。
/boot:系统引导程序文件的目录。
/etc:配置文件目录。存放系统、用户、服务的配置信息文件
文件路径:描述文件位置的一种方法。如/etc/sysconfig就是一个文件路径。
绝对路径:路径左侧以/根开头的路径。
相对路径:路径左侧不以/根开头的路径。
less more head tail
head /etc/passwd 默认的看头10行 head -2 /etc/passwd 看头两行 tail /etc/passwd 看尾10行,默认显示的是10行 tail -1 /etc/passwd 看尾1行 tail /var/log/messages tail -30 /var/log/messages 看尾30行 tail -f /root/桌面/aa.txt //-f 动态查看文件尾部信息 tail f /root/桌面/aa.txt
文件管理主要做的事:查、增、删、改 常用命令: 查:ls 查看文件名列表 pwd 显示当前工作目录的绝对路径
增:touch 文件名 功能:新建文件
mkdir -pv 目录名 功能:新建目录(即文件夹)
例:mkdir -pv a/b/c/d 创建多级目录(-p是创建父级目录)
改:移动:mv -v 源文件 目标位置或新文件名
复制:cp -rv 源文件 目标位置或新文件名
切换工作目录(即打开文件夹):cd 路径
例:cd /etc/sysconfig/network-scripts 进入指定路径的目录。
cd .. 切换到上一级目录
cd / 切换到根目录中
cd 或 cd ~ 回家(切换到自己的家目录中)
删:rm -rfv 文件名或目录名
说明:-r 是递归操作,用于目录
-f 是强制操作,即不提示yes/no
-v 显示执行过程
文件 touch touch file1.txt //无则创建,有则修改时间 touch file2 file3 touch /home/file4.txt touch /home/file5 file6 touch file{1..20} touch file{a..c} touch chen{a,b} //{}集合,等价touch chena chenb touch a{1..5}{1,5}.txt
目录 mkdir mkdir dir1 mkdir /home/dir2 /home/dir3 mkdir /home/{dir4,dir5} mkdir -v /home/{dir6,dir7} mkdir -v /home/dir8/111/222 mkdir -pv /home/dir8/111/222 //包括其父母的创建,不会有任何消息输出 mkdir -pv /home/{yang/{dir1,111},xiaochen}
文件管理之:文件类型
文件类型有:目录d、普通文件-、软链接文件l、块设备文件b、字符设备文件c、套接字文件s、管道文件p
目录d:即文件夹
ls -l / 说明:ls -l结果中的第1个字符是文件类型的标识符
普通文件-:即文本文件、图片、音乐、视频等都是普通文件。
软链接(link)文件l(即快捷方式):
块设备文件b(block):常见的块设备有硬盘、分区、U盘
字符设备文件c(Charact ):常见的字符设备文件有tty终端设备文件
套接字文件s(socket):是指网络进程设备文件。里面存放网络连接的端口号。
管道文件p(pipe):例:在根目录及其子目录中查找管道类型的文件 find / -type p
文件管理的命令:查、增、改、删
查:ls、pwd
查文件内容:cat、head、tail、more、less
增:touch、mkdir
改:cd、mv、cp
删:rm -rf、rmdir
查看文件和目录列表:ls 统计/bin目录下一共有多少个文件:ls /bin | wc -l
说明:wc -l的功能是统计行数。
| 是管道符,作用是将第1个命令的结果传给第2个命令继续处理
查看系统的硬件信息
CPU信息:
CPU信息:cat /proc/cpuinfo 或 lscpu
内存信息:cat /proc/meminfo
内存使用状态:free
硬盘空间使用状态:df 或 df -hT
硬盘分区信息:fdisk -l;fdisk -l /dev/sda
查看命令的帮助:命令 --help 如:查看ls命令的帮助信息:ls --help
man 如:查看ls命令的帮助信息:man ls q键退出操作
vi/vim编辑器
vi、vim:是文本编辑,只能编辑一些纯文本(无格式)的内容不能打开word文档。
命令模式(按Esc或Ctrl+[进入):进入vim之后的默认模式,能执行移动光标、复制yy、粘贴p、删除dd和x、撤消u、反撤消ctrl+r等命令
插入模式(按i、a、o键进入):用于输入文本内容。
末行模式:以:冒号或/斜杠开头的命令,可以实现保存w、退出q、强制保存退出wq!、设置set等命令
可视化/可视块模式
//快速增加代码注释
1. 确保vim编辑器所在模式为命令模式
2. 把光标停留在想注释行的第一行的行首
3. 键入"ctrl+v"
4. 使方向键向下选中要注释的所有行
5. 键入 "I"(大写)
6. 输入 "#"
7. 连续按两下"Esc"
//快速取消被注释的代码块
1. 确保vim编辑器所在模式为命令模式
2. 把光标停留在想取消注释行的第一行的行首
3. 键入"ctrl+v"
4. 使方向键向下选中要取消注释的所有行
5. 键入 "d"
插入命令
i 在当前位置前插入(插队insert)
I 在当前行首插入
a 在当前位置后插入(append追加)
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
查找命令
/text 从上往下查找text,按n键查找下一个,按N键查找前一个。
?text 从下往上查找text,反向查找,按n键查找下一个,按N键查找前一个。
:set nu 显示行号
:set nonu 不显示行号
:set ignorecase 忽略大小写的查找
:set noignorecase 不忽略大小写的查找(默认设置)
:set hlsearch 设置查找高亮
:nohlsearch 取消查找高亮
替换命令
:s/old/new/ 将old替换new,替换当前行的第一个匹配
:s/old/new/g 用old替换new,替换当前行的所有匹配(全局global)
:%s/old/new/ 用old替换new,替换所有行的第一个匹配
:%s/old/new/g 用old替换new,替换整个文件的所有匹配
:10,20 s/^/ /g 在第10行至第20行每行前面加四个空格,用于缩进
撤销和重做**
u 撤销(Undo)
U 撤销对整行的操作(整行的修改都会丢失)
Ctrl + r 重做(Redo),即撤销的撤销(反撤消)
删除命令
x 删除当前字符(等同于del键)
dd 删除光标所在行的一整行
dG 删除光标所在行之后的所有行(包含光标所在行)
:1,10d 删除1-10行
:11,$d 删除11行及以后所有的行
:1,$d 删除所有行
移动命令
G 快速切换到文件的最后一行的行首
gg 快速切换到文件的第一行的行首
home 快速切换到文件行的行首
end 快速切换到文件行的行尾
拷贝和粘贴
yy 复制光标所在行
nyy 复制光标所在行在内的n行内容
p 粘贴yy所复制的内容
退出命令
:6 光标定位到第6行
:q 正常退出
:q! 强制退出
:w 保存
:wq 保存并退出=ZZ
:wq! 强制保存并退出
:x 保存并退出
用户和组管理
1.用户、组的账号和密码文件
用户账号文件:/etc/passwd
例:查看/etc/passwd的前2行内容。head -2 /etc/passwd
格式:root:x:0:0:root:/root:/bin/bash 注:用man 5 passwd看格式解释
说明:1.每行一个用户账号;2.每行有七列(字段)信息,每列的意思如下
1- root:用户名,用户登录的账号名
2- x:密码位,是否需要密码来登录,x表示需要密码,为空则无需密码登录。
3- 0:UID,用户号,类似于人的×××号
4- 0:GID,组号(群号)
5- root:备注信息,可以为空,通常写对此用户账号的说明信息。
6- /root:用户的家目录
7- /bin/bash:用户登录的shell命令行解释器,用cat /etc/shells可查看所有的shehll,常见的shell有bash、sh、nologin等。nologin是不允许登录。
用户密码文件:/etc/shadow 用passwd命令修改密码会影响此文件内容
例:查看/etc/shadow的前2行内容。head -2 /etc/shadow
格式:root:$6$nSGIlk:17903:0:99999:7:::
bin:*:17834:0:99999:7: : :
注:用man 5 shadow看格式解释
说明:1.每行一个用户账号;2.每行有9列(字段)信息,每列的意思如下
1.用户名:root
2.加密的密码:$6$nSGIlk
3.最后一次修改密码的日期17903:是从1970年1月1日开始的天数
4.密码的最小年龄 0: 0为随时能改密码,2为2天后才能改密码
5.密码的最大有效期(天数) 99999
6.密码警告时间段 7
7.密码过期之后多少天之内还能用(宽限期):为空则不限制
8.账户有效期(失效的年月日时间):为空则不限制
9.保留:为后期扩展功能而保留
例、将bin用户的密码最大有效期设置成3000天
passwd bin -x 3000
passwd -S bin 查bin用户的密码状态信息
组账号文件:/etc/group
例:查看/etc/group的前2行内容。head -2 /etc/group
格式:root:x:0:
组名:组密码位:GID组号:组成员
例:将bin用户加入到root组中,再将bin从root组中删除。
gpasswd root -a bin (a是append追加),做完后用head /etc/group查
gpasswd root -d bin (d是delete追加)
组密码文件:/etc/gshadow
例:查看/etc/gshadow的前2行内容。head -2 /etc/gshadow
格式:root:xxjks::
组名:加密后的密码:组管理员:组成员
例:将lp用户设置成root组的管理员,然后查询,再将lp用户从root组管理员列表中清除。
head -2 /etc/gshadow
gpasswd root -A lp
例:执行以下命令,体验用户的创建、管理过程
1、创建sky用户:useradd sky
2、设置密码:passwd sky
3、查用户id号:id sky
4、临时切换到sky用户: su - sky
5、显示当前工作路径:pwd
6、退出登录:exit
7、递归删除用户账号及其家目录和邮件:userdel -r sky
查看用户id信息:id [选项] 用户名
查看用户相关信息:who、whoami、w、last
创建用户:useradd [选项] 用户名
切换用户:su [选项] 用户名
删除用户:userdel [选项] 用户名
设置登录密码:passwd [选项] 用户名
修改用户信息:usermod [选项] 用户
useradd命令
useradd [选项] 用户名
实例
-h 即--help,显示此命令的帮助信息 useradd -h
-b 为新用户指定家目录的主目录 useradd -D -b /home
-D 显示或修改创建新用户的默认配置 useradd -D
-c 为新建的用户设置备注(context)信息 useradd lily -c "my girl friend"
-d 给新用户指定家目录(directory) useradd sky -d /opt/sky
-e 指定账号的过期日期(有效期限) useradd u1 -e 2018-10-01
-f 新账户的密码不活动期(即宽限天数) useradd u2 -f 20
-u 用户uid号 useradd u3 -u 888
-U 创建与用户同名的组 useradd u4 -U
-g 主组,必须是已存在的组 选项 功能
-G 附属组 useradd u6 -G root,adm,lp
-m 创建家目录 useradd u7 -m
-M 不创建家目录 useradd -M u8
-N 不创建与用户同名的组 useradd -N u9
-r 创建系统账号 useradd -r u10
-s 指定用户登录的shell,常见的shell有bash、sh、nologin、false等。
用cat /etc/shells可查。 useradd -s /sbin/nologin u11
-o --non-unique,允许使用不唯一的UID号 useradd -o -u 0 u12
-p 创建用户时指定加密后的密码。(此密码无法登录) useradd -p 01 u13
-Z 指定selinux安全参数
useradd创建用户的其他实例
综合实例:创建tom用户,并设置uid为800,gid为0,附属组GID为1、2、3,设置备注为“tomer”,设置家目录为/tmp/tom,设置shell为nologin。查看passwd文件中包含tom关键字的内容。
useradd tom -u 800 -g 0 -G 1,2,3 -c tomer -d /opt/tom -s /sbin/nologin
grep tom /etc/passwd 查看/etc/passwd文件中包含tom关键字的内容
userdel命令
删除用户:userdel [选项] 用户名
功能 实例
即--help,显示此命令的帮助信息 userdel -h
删除用户的家目录和邮件 userdel -r u100
即--force,强制删除用户的文件 userdel -f u111
即--selinux-user,删除用户的selinux映射信息
passwd命令
设置登录密码:passwd [选项] [用户名]
说明:下面的实例的验证方法:passwd -S 用户名
选项 功能 实例
-? 即--help,显示此命令的帮助信息 passwd -?
-S 显示已命名帐号的密码状态(只有root能查) passwd -S root
-k 保持(keep)身份验证令牌不过期 passwd -k root
-d 删除已命名帐号的密码(只有root能做) passwd -d u15
-l 即--lock,锁定用户账号(只有root能做) passwd -l adm
-u 即--unlock,解锁用户账号(只有root能做) passwd -u adm
-e 终止指定帐户的密码expire(只有root能做) passwd -e adm
-f 即--force,强制执行操作(只有root能做)
-x 即--maximum,密码的最长有效时限(只有root能做) passwd -x 120 adm
-n 即--minimum,密码的最短有效时限(只有root能做) passwd -n 60 adm
-w 即--warning,密码过期前的警告时间(只有root能做) passwd -w 12 adm
-i 即--inactive,密码过期多少天后禁用账号(只有root能做) passwd -i 3 adm
--stdin 从标准输入读取密码令牌(只有root能做) echo 01 | passwd --stdin adm
--usage 显示此命令能使用方法(命令的帮助信息) passwd --usage
usermod命令
修改用户信息:usermod [选项] 用户名 注:usermod是user modify用户修改的缩写
说明:下面实例的验证方法:grep 用户名 /etc/passwd /etc/shadow 或 passwd -S 用户名
选项 功能 实例
-h 即--help,显示此命令的帮助信息 usermod -h
-c 即--comment,修改用户的描述信息 usermod root -c "admin user"
-d 修改用户的家目录。(新家目录提前准备好) usermod u19 -md /opt/u19 (搬家)
-e 即--expiredate,修改账号过期的日期 usermod adm -e 2019-05-20
-f 即--inactive,修改密码过期后的宽限时间 usermod adm -f 8
-g 修改用户的gid值。 usermod u19 -g 5
-G 给用户设置新的附属组 usermod adm -G root,lp,bin
-a 将一个用户追加到指定的组中 usermod adm -a root
-l 修改用户的登录名称(即修改用户名) usermod u20 -l u200
-L 锁定用户[锁定后,shadow中的密码左侧有!号] usermod adm -L
-U 解锁用户 usermod adm -U
-m 给用户搬家。
-o 允许使用不唯一的UID号 usermod u19 -o -u 0
-p 修改加密后的密码(不是登录密码) usermod adm -p 01
-s 修改用户登录的shell usermod u19 -s /sbin/nologin
-u 修改用户的uid值 usermod u19 -u 999
-Z 修改用户的selinux参数
组管理
创建组:groupadd [选项] 组名
删除组:groupdel [选项] 组名
修改组信息:groupmod [选项] 组名
设置组成员(可设置组的管理密码):gpasswd [选项] 组名
查看用户的组信息:groups [选项] 用户名
groupadd命令
创建组:groupadd [选项] 组名
选项 功能 实例
-h 即--help,显示此命令的帮助信息 groupadd -h
-g 创建组时指定组的gid号 groupadd -g 520 g1
-o 允许创建不唯一的gid的组 groupadd -o -g 0 g2
-p 即--passwd,指定组管理员加密后的密码 groupadd -p 01 g3
-r 即--system,创建一个系统组,组号范围是201~999 groupadd -r g4
-k 覆盖/etc/login.defs中的默认值
-f 即--force,如果指定的gid存在,也会强制创建组 groupadd -f -g 123 g5
groupdel命令
删除组:groupdel 组名
实例:创建名称为g6的组,然后查看group文件中包含g6关键字的内容,删除g6组。
groupadd g6
grep g6 /etc/group
groupdel g6
groupmod命令
修改组信息:groupmod [选项] 组名
选项 功能 实例
-h 即--help,显示此命令的帮助信息 groupmod -h
-g 修改组的gid号 groupmod -g 300 g7
-n 即--new-name,修改组名 groupmod -n g70 g7
-o 允许使用不唯一的gid号(即允许用相同的组号) groupmod -o -g 0 g9
-p 即--password,修改组加密后的密码 groupmod -p 01 g9
gpasswd命令**
设置组成员:gpasswd [选项] 组名
功能:设置组成员名单、且可以设置组的管理员密码。
说明:下面实例验证的方法:grep 组名 /etc/group /etc/gshadow
选项 功能 实例
-a 即--add,在组中添加一个用户 gpasswd adm -a root
-d 即--delete,从组中删除一个用户 gpasswd adm -d root
-r 即--remove-password,删除组管理的密码 gpasswd -r adm
-R 即--restrict,restrict access to GROUP to its members
-M 即--members,重新设置组的成员列表 gpasswd adm -M root,bin,lp
-A 即--administrators,给组重新设置多个组长(即组管理员) gpasswd adm -A root
groups命令
查看用户的组信息:groups [选项] 用户名
实例:查看当前用户的组信息,查看root、adm、games、lp用户的组信息。
groups
groups root adm games lp
练习:某公司有sales、tech这两个部门,sales部门有2位职员lucy、lily。tech部门有3位职员alice、jack、peter。要求在linux服务器上采用用户和组来管理公司的这两个部门和员工账号。
mkdir -v /opt/sales /opt/tech
groupadd sales
groupadd tech
useradd -Db /opt/sales
useradd -D
useradd lucy -g sales
useradd lily -g sales
useradd -Db /opt/tech
useradd -D
useradd alice -g tech
useradd jack -g tech
useradd peter -g tech
echo 01 | passwd --stdin lucy
echo 01 | passwd --stdin lily
echo 01 | passwd --stdin alice
echo 01 | passwd --stdin jack
echo 01 | passwd --stdin peter
文件的UGO权限基础(即普通权限)
Linux系统中一切都是文件,文件和目录的所属与权限——来分别规定所有者、所有组、其余人的读,写,执行权限。
读(read),写(write),执行e(execute)简写即为(r,w,x),亦可用数字(4,2,1)表示
chmod命令
功能:修改权限的命令:chmod [选项] 权限 文件名或目录名
常用选项:--help
-v 显示执行过程
-R 递归修改目录及其子目录的所有文件权限
权限修改中的代号:
u g o a + - =
用户 组 其他用户 所有用户 添加权限 减掉权限 设置新的权限
例:chmod -v u+rw /b.txt 给文件的属主(user)权限设置成rw可读可写
chmod -v g+r /b.txt 给文件的属组(group)权限设置成r可读
chmod -v o+r /b.txt 给文件的其他(other)用户权限设置成r可读
chmod -v a+x /b.txt 给文件的所有(all)用户设置x可执行权限
chmod -v u=rw,g=r,o=r /b.txt 或chmod -v 644 /b.txt 给文件的属主、属组、其他人重新授权
chmod -v a-r /b.txt 给文件的所有用户减掉r可读的权限
chown命令
功能:修改文件的拥有者(属主)和拥有组(属组):chown [选项] 用户名:组名 文件名
常用选项:--help
-v 显示操作过程
-R 递归修改目录及其子目录的所有属主、属组。
例:chown -v bin /a.mp3 修改/a.mp3文件的属主为bin
chown -v :adm /a.mp3 修改/a.mp3文件的属组为adm
chown -v root.root /a.mp3 同时修改文件的属主和属root
chown -v --reference=a.txt b.txt 将a.txt的属主和属组特征传递给b.txt。
umask命令
文件权限的掩码:umask [权限]
umask默认值:root用户的是022,普通用户的是002。
umask的功能:会影响到用户创建的新文件、目录的最终权限。
文件、目录最终权限的算法:满权限-umask权限=最终权限
满权限 777 666 666
umask 022 022 031
计算过程
777-022
rwx rwx rwx
--- -w- -w- 666-022
rw- rw- rw-
--- -w- -w- 666-031
rw- rw- rw- 满权限
--- -wx --x 要去掉的权umask限
权限结果 rwx r-x r-x
即755 rw- r-- r--
即644 rw- r-- rw-
即646
FACL文件访问控制列表
FACL:文件访问控制列表file access control list,控制文件和目录访问权限的一种方式,FACL的级别高于普通的UGO权限(即用chmod设置的权限)。
getfacl命令
查看文件、目录的FACL权限:getfacl 文件名
getfacl /a.txt
选项 功能 选项 功能
--help 显示命令帮助 -k 删除默认的ACL权限
-m 即modify,设置或修改ACL权限 -R 递归设置ACL权限(对目录及其子文件)
-x 删除指定用户的文件的ACL权限 -d 即default,设置默认的ACL权限(仅用于目录,目录中新创建的文件会继承ACL权限)
-b 删除所有的ACL权限
例:查a.txt文件的ACL权限 getfacl a.txt
在a.txt文件上添加adm用户的ACL权限 setfacl -m u:adm:rw- a.txt
在a.txt文件上添加bin组的ACL权限 setfacl -m g:bin:rw- a.txt
查a.txt文件的ACL权限 getfacl a.txt
强制删除a.txt文件 rm -f a.txt
setfacl -m d:g:group:r-- test/ d表示default默认的ACL权限
在/pas.txt文件中删除u1用户的acl权限 setfacl -x u:u1 /pas.txt
清空/pas.txt文件中的所有ACL权限 setfacl -b /pas.txt
文件的特殊权限(三种S权限):有SUID(u+s)、SGID(g+s)、Sticky bit(o+t)这三种。
SUID权限:
功能:让命令的执行者临时拥有命令的属主(root)权限(仅对有可执行权限的二进制程序[即命令]有效)
设置suid权限的方法:chmod u+s 文件名
SGID权限:
功能:在该目录中创建的文件自动继承此目录的组属性(只可以对目录设置),通常用于做文件共享时对某个目录设置g+s权限
设置SGID权限:chmod g+s 目录名
SBIT(Sticky Bit)权限:
功能:只允许root和文件的属主删除目录中的文件(仅对目录有效,通常用于做文件共享的目录)
添加t权限的方法:chmod o+t 目录
chmod命令用于修改文件或目录的权限,格式为:”chmod [参数] 权限 文件或目录名称”。
chown命令用于修改文件或目录的所属主与所属组,格式为:“chown [参数] 所属主:所属组 文件或目录名称”
文件的隐藏属性attribute (文件系统权限)
chattr命令
chattr命令用于设置文件的隐藏属性(特殊属性),格式为:“chattr [选项] 文件”。
+/-i 将无法对文件内容进行修改,若对目录设置后则仅能修改子文件而不能新建或删除。
+/-a 仅允许补充(追加)内容.无法覆盖/删除(Append Only)。通常用于日志文件。
lsattr命令
lsattr命令用于显示文件的隐藏权限,格式为:“lsattr 文件”
计划任务服务(at、crontab)
计划任务是特定的时间做特定的任务
操作内容:计划任务的查询(atq、at -c 序号)、新增(at 时间)、删除atrm 序号
at的time时间表示方式如下
HH:MM YYYY-MM-DD或者:
HH[pm:am]+number[min;hours;days;week]
HH:MM
HH[pm;vam ]
进入at模式以后输入指令
ctrl+d可以退出
例: at now +5minutes/hours/days/weeks/ 任务在5分钟后运行
Fixed: at midnight 任务在午夜运行
Fixed: at 10:30pm 任务在晚上10点30分开始
Fixed: at 1:00 12/20/2004 任务在2004年12月20日凌晨1点开始
Fixed: at 1:00 2017-05-03 任务在2017年05月03日凌晨1点开始
一般用at命令创建计划任务有交互式与非交互式两种方法
at now +2min
at >wall “welcome to my server”
at >按Ctrl+D退出
直接用echo语句将要执行的命令传送给at命令:
echo "systemctl start httpd" | at 23:30
job 4 at Mon Apr 27 23:30:00 2015
非交互方式创建计划任务
1、先将要执行的命令用vi或vim写到一个文件中。
vi /plan1.txt 文件内容如下
wall hello
wall ni hao
date >> /tmp/pa.txt
head -6 /etc/passwd >> /tmp/pa.txt
cat -n /tmp/pa.txt >> /tmp/pa.txt
2、创建计划任务时指定任务命令的文件(-f是file的缩写)。
at now +3 min -f /plan1.txt
atq
at -c 任务号 查询此任务号的具体计划内容
3、等待3分钟后验证计划任务执行的结果:
cat /tmp/pa.txt
at计划任务的黑白名单管理:
功能:控制让某些用户能使用(白名单/etc/at.allow)、或不能使用(黑名单/etc/at.deny)at计划任务功能。
警告:当有at.allow白名单文件时,其他的的用户全部都是黑户(不能用At命令),只有at.allow文件中的用户能用at命令。白名单的优先级高于黑名单。
白名单的优先级高于黑名单:即当at.allow白名单和at.deny黑名单文件同时存在时,那么只有白名单中的用户才能使用at命令定制计划任务。
编辑at.deny黑名单文件
将tom用户设置成黑户 vi /etc/at.deny 添加如下内容tom
将jack用户设置成白户 vi /etc/at.allow 添加如下内容jack
crontab周期性计划任务:
功能:按指定的时间规律会重复执行某些命令。
创建、编辑、删除某个计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除所有的计划任务:crontab -r [-u 用户名]
crontab -e 添加如下计划任务内容
*/2 * * * * wall ni hao
*/5 * * * * head -3 /etc/passwd >> /tmp/pb.txt
分 时 日 月 周 任务的命令(可以是一个脚本文件)
查看计划任务详细任务cat /etc/crontab
*/2表示60/2=30次。*表示每时每刻
tar打包命令:
功能:进行文件的打包压缩、解包解压缩。
打包压缩:tar -czvf 文件名.tar.gz 要打包的文件名列表
解包解压缩:tar -xzvf 文件名.tar.gz -C 目标位置
选项解释:-c 创建(create)打包文件
-z 调用gzip程序进行压缩
-v 显示执行过程(verbose)
-f 是file,即指定打包后的文件名
-C 是change,即指定文件解压到的目标目录,必须是已存在的目录
-x 是extract,即解包
-t 是list,即显示tar包中的文件名列表
date命令:
用法:date [选项] [+格式 ]
功能:查看、修改系统时间。查看时间可以指定时间的显示格式。
选项:-s 修改系统时间。如date -s '20190214 14:30'
格式代号:+%F 以2019-01-10(YYYY-MM-DD)格式来显示时间,等价于 %Y-%m-%d
%Y 年份
%m month (01..12)
%d 按月计的日期(例如:01)
%H 小时(00-23)
%I 小时(00-12)
%M minute (00..59)
显示日期和时间
date +%F ;date +%Y-%m-%d
date +%F_%H:%M ;date +%Y-%m-%d_%H:%M
用不同的时间格式为名称创建文件。
touch `date +%F`.txt 创建名称为“年-月-日.txt”的文件
touch $(date +%F) .txt (同上)说明:`命令`和$(命令)被称作“命令替换”或“命令置换”功能
touch `date +%Y-%m-%d_%H:%M`.jpg 创建名称为“年-月-日_小时:分.jpg”的文件
rpm:是红帽软件包管理(Redhat Package manage)的缩写
rpm软件包:可以在Linux系统光盘的Packages目录中找,也可以在网上下载*.rpm格式的文件。
rpm测试环境说明:是将光盘挂载到了/dvd目录
rpm软件包名称规则:vsftpd-2.2.2-11.el7.x86_64.rpm 软件名—主版本号.次版本号.修订号.系统版本.硬件平台.rpm
rpm命令的选项:
-i 即install安装
-v 即verbose显示执行过程
-h 以#号方式显示安装进度条
-U 升级安装软件
--nodeps 不检查依赖关系
-qi 查软件的信息。例:rpm -qi at -q 查软件是否已安装
-l 即list查软件安装后的所有文件列表
-c 即config,查软件的配置文件列表
-e 即erase,卸载软件
-f 查文件所在的软件包。例:rpm -qf /bin/cat
-qa 查系统中已安装的所有rpm格式的软件
依赖关系:安装某个软件前,必须先安装另一个软件,否则软件安装不了。
yum软件管理器
yum是管理rpm软件包(Yellowdog Updater Modified)
yum的工作原理:执行yum命令――>读取/etc/yum.repos.d/*.repo的yum源配置文件中的baseurl路径――>查找可用yum仓库的rpm软件包――>安装一个或多个rpm格式的软件包。
本地yum源:是指yum源配置文件*.repo中的baseurl仓库路径是在本机上。即rpm包是在本机上的目录中。
网络yum源:是指yum源配置文件*.repo中的baseurl仓库路径是在文件共享服务器上(ftp、nfs、http等)。
yum源文件*.repo的路径:/etc/yum.repos.d
编辑/etc/rc.d/rc.local文件
挂载/dev/cdrom光盘到/dvd目录
临时关闭firewalld防火墙
查firewalld防火墙的当前状态
将Selinux设置为宽容(permissive)模式
查询selinux的当前状态
测试脚本的运行 vim /etc/rc.d/rc.local 在文件最后添加如下内容
mount /dev/cdrom /dvd
systemctl stop firewalld
systemctl status firewalld
setenforce 0
getenforce
. /etc/rc.local
任务:创建/soft目录,将/dvd/Packages目录中的 *ftp* 复制到 /soft目录中,在/soft目录中生成yum的数据库文件repodata,创建yum源文件/etc/yum.repos.d/ftp-soft.repo,ftp-soft.repo文件中的baseurl路径指向/soft目录。
功能 命令
创建/soft目录
复制指定的文件
生成yum数据库文件
创建ftp-soft.repo配置文件 mkdir -v /soft
cp -v /dvd/Packages/*ftp* /soft
createrepo /soft 注:如果没有createrepo命令,请先安装createrepo软件
vim /etc/yum.repos.d/ftp-soft.repo 配置文件内容如下
源标识(即仓库标识)
源名称(即仓库名称)
仓库路径
启用此仓库
禁用gpgcheck验证功能 [ftp-soft]
name=ftp-soft haha
baseurl=file:///soft
enabled=1
gpgcheck=0
清除yum缓存文件
查询yum仓库列表信息 yum clean all
yum repolist
结果分析 发现ftp-soft仓库中的“状态”值是6,即6个rpm软件包
熟悉yum的所有命令。
命令 作用
yum clean all 清除所有仓库缓存
yum repolist all 列出所有yum源和仓库信息。
yum list all 列出仓库中所有软件包。list中带有@的软件包是已经安装了的。例:yum list |grep @
yum info 软件包名称 查看软件包信息。例如:yum info vsftpd ftp dhcp
yum install 软件包名称 安装软件包。例如:yum install -y vsftpd ftp mysql-server mysql
cetnos 7的案例:yum install -y vsftpd ftp mariadb-server mariadb
yum reinstall 软件包名称 重新安装软件包
yum update 软件包名称 升级软件包
yum remove 软件包 移除软件包。例如:yum remove -y vsftpd ftp mysql-server mysql
cetnos 7的案例:yum remove -y vsftpd ftp mariadb-server mariadb
yum check-update 检查可更新的软件包
yum grouplist 分组查看rpm软件包的信息
yum groupinstall 软件包组 安装指定的软件包组
yum groupremove 软件包组 移除指定的软件包组
yum groupinfo 软件包组 查询指定的软件包组信息。例如:yum groupinfo 虚拟化主机 开发工具
yum search 软件名 查询指定名称的软件包。例如:yum search mariadb-server vsftpd
yum provides 文件路径 查询指定文件所在的软件包。例如:yum provides /bin/ls /bin/cat
yum history 查询yum的安装操作记录
yum history redo N 重新执行yum安装历史中的编号为N个操作。N为数字
yum history undo N 重新执行yum安装历史中的编号为N个操作的回滚操作(安装的反操作为卸载)。N为数字
下载软件包到指定的目录 yum install --downloadonly --downloaddir=/soft <package-name>
例1:yum install --downloadonly --downloaddir=/soft/nginx nginx
例2:yum install --downloadonly --downloaddir=/soft/zabbix zabbix
yum的history功能:
查yum历史:yum history
(回退)撤消yum中的2号历史操作:yum history undo 2
(前进)重做yum中的2号历史操作:yum history redo 2
rpm和yum的小结:
1、rpm是什么?rpm对软件包的查(rpm -qlc)、增(rpm -ivh)、删(rpm -evh)、改(升级安装rpm -Uvh)
2、yum是什么?yum管理的是rpm软件包。yum源配置文件dvd.repo的内容代码。用yum对rpm软件包进行如下操作
清缓存:yum clean all
查:yum repolist 、 yum list 、 yum grouplist 、 yum info 、 yum history
增(安装):yum install 、 yum reinstall 、 yum groupinstall
删(卸载): yum remove
改(升级update): yum update
源码包的编译安装流程:
1、安装gcc、gcc-c++编译器
2、下载软件的源码包、解包解压缩
3、生成安装配置文件: ./configuration [选项]
4、根据配置文件编译源码文件:make
5、安装:make install
nginx源码包的安装实例:
1、安装gcc、gcc-c++编译器:yum install -y gcc gcc-c++ wget curl
2、用wget下载nginx软件的源码包、解包解压缩:http://nginx.org
wget http://nginx.org/download/nginx-1.15.8.tar.gz
ls
tar -xvf nginx-1.15.8.tar.gz
3、生成安装配置文件Makefile:
cd nginx-1.15.8
yum install -y pcre-devel openssl-devel
./configure
4、根据Makefile配置文件编译源码文件:make
5、安装:make install
6、创建nginx命令的快捷方式:ln -s /usr/local/nginx/sbin/nginx /bin/nginx
7、启动nginx服务:
nginx -h 查nginx命令的帮助
nginx -t 检测nginx配置文件语法
nginx 启动nginx服务
nginx -s reload 重启nginx服务
nginx -s stop 停止nginx服务
8、访问nginx的默认网站:curl 192.168.11.11
浏览器访问nginx的默认网站:http://192.168.11.11
打包压缩文件命令
打包tar:将多个文件包装(也称封装)成一个文件。打包后的文件容量不发生变化。
压缩zip:将多个文件包装(也称封装)并压缩成一个文件。压缩后的文件容量会变小。
打包并压缩文件:“tar -czvf 压缩包名.tar.gz 文件名”
解压并展开压缩包:“tar -xzvf 压缩包名.tar.gz”
选项 作用
-c 创建tar包文件。create
-x 解开tar包文件。extract
-t 查看tar包内有那些文件
-z 调用Gzip压缩或解压
-j 调用bzip2压缩或解压
-v 显示压缩或解压的过程
-f 目标文件名(即tar包文件名)
-r 在tar包中追加新的文件
-p 即--preserve-permissions,保留原始的权限与属性
-P 即Path,使用绝对路径来压缩
-C 即change,指定解压到的目录(警告,-C后面的目录必须已存在)
-delete 删除包中的某个文件
-A 将某个文件增加到包中
打包压缩命令:tar -czvf conf.tar.gz /etc/*.conf
解包解压缩命令:tar -xzvf conf.tar.gz -C /tmp/
zip压缩和解压:
压缩:zip 文件名.zip -r 要压缩的文件或目录
解压缩:unzip 文件名.zip -d 目标目录
zip压缩:zip conf.zip /etc/*.conf
unzip压缩:unzip conf.zip -d /tmp/
文件和磁盘容量统计:
查某个文件(不是目录)的大小:ls -lh 文件名
注:-h 是human人性化显示容量单位(k、M、G、T)。
例:查/etc/*.conf文件的大小。
ls -lh /etc/*.conf
选项 功能
-h 即human,以易读的方式显示文件的容量,即带上k、M、G、T等单位。例如:du -hs /root/jy
-s 即sum,统计占用的总容量。例如:du -hs /etc
df显示磁盘容量状态:
用法:df [选项-hT] 参数
说明:df是disk free磁盘空闲的缩写。常用选项如下:
-h 即human,以易读的方式显示文件的容量,即带上k、M、G、T等单位。
-T 即Type类型,显示文件系统类型,类型有ext3、ext4、xfs、iso9660、vfat、NTFS、nfs、smb等。
文件查询搜索命令
whatis which whereis locate updatedb grep find(功能最强大)
grep命令用于查看某个文件中包含关键字的整行内容,格式为:“grep [选项] 关键字 [文件]”。
搜索某个关键词:“grep 关键词 文本文件”
例:显示/etc/passwd文件中包含root关键字的内容:grep root /etc/passwd
选项 作用
特殊代号 ^ 定位开头。例:显示/etc/passwd文件中以root开头的内容:grep ^root /etc/passwd
$ 定位结尾。例:显示/etc/passwd文件中以bash结尾的内容。grep bash$ /etc/passwd
^$ 表示空白行。例:显示/etc/yum.conf文件中的空白行内容,并附上行号。grep -n ^$ /etc/yum.conf
-b 将可执行文件(binary)当作文本文件(text)来搜索
-c 仅显示找到的次数(行数)。例:grep -c root /etc/passwd
-i 忽略大小写。例:grep -i RooT /etc/passwd
-n 显示行号。例如:grep -n root /etc/passwd 显示passwd文件中包含root关键字的内容并显示行号
-v 反向选择——仅列出没有“关键词”的行。(特殊关键字: ^$ 表示空白行)。例:grep -v 127 /etc/hosts
-w 完全匹配(精确匹配)。例:grep -w bin /etc/passwd
-E 启用基本正则(extended-regexp)表达式功能。即使用 | . ? []等正则表达式的特殊符号。
例:grep -E 'root|adm|lp' /etc/passwd 显示passwd文件中包含root或adm或lp关键字的内容。
--color=auto 以彩色方式显示“关键字”。(centos 7中默认开启了此功能,因为系统中用alias给grep命令设置了别名“即快捷键”)
-B 数字 是before,打印以文本起始的NUM 行。grep root -B 2 /etc/passwd
-A 数字 是after,打印以文本结尾的NUM 行。grep root -A 3 /etc/passwd
-c 是count计数,打印输出文本NUM 行。grep root -c /etc/passwd
alias命令别名:
alias查看命令别名,或给命令临时设置别名(即快捷键),命令格式:alias 别名=“命令”
alias 查看所有的命令别名
alias rt='rm -rf /tmp/* ; ls /tmp/ ' 定义命令别名(即快捷键)
rt 使用rt命令别名
unalias rt 删除rlt这个命令别名
设置永久的别名:vi /etc/bashrc 在文件最后添加如下内容,然后保存并退出。
alias rt='rm -rf /tmp/*;ls /tmp/'
然后exit退出登录,再重新登录,此命令别名就会生效(用alias命令查看)。
stat查看文件的状态信息:
例:stat /etc/hosts
文件的三个时间:
名词 功能 解释
atime 访问时间access time 是指用ls、cat、head等命令访问过文件的时间
mtime 更改时间modifye time 是指用vim、>覆盖、>>追加等方式修改过文件内容的时间
ctime 改动时间change time 是指用chown、chmod命令改动过文件权限的时间
find命令
find命令用于查找文件,格式为:“find [查找路径] 寻找条件 操作”。
win7系统的文件查找界面:Win+F3
查找条件 作用
-name 匹配名称。例1:find /etc -name host* 例2:find /dev -name std*
-perm 匹配权限(mode为完全匹配,-mode为包含即可)。例1:find / -perm 000
-user 匹配所有者。例:useradd sky ; find / -user sky
-group 匹配所有组。例:find / -group sky
-mtime -n +n 匹配修改内容(modify)的时间(-n指n天以内,+n指n天以前)
例:在根目录下查找mtime为3天以前的文件: find / -mtime +3
例:在根目录下查找mtime为3天以内的文件: find / -mtime -3
-atime -n +n 匹配访问(access)文件的时间-n指n天以内,+n指n天以前
-ctime -n +n 匹配修改权限(change)的时间-n指n天以内,+n指n天以前
-nouser 匹配无所有者的文件 [这种情况通常是文件属主的用户名被删除了,只剩下uid]
-nogroup 匹配无所有组的文件 [这种情况通常是文件属组的账号被删除了,只剩下gid]
-newer f1 !f2 匹配比文件f1新却比f2旧的文件
-type b/d/c/p/l/f 匹配文件类型(b块设备、d目录、c字符设备、p管道、l链接文件、f普通文件)
例1:find /dev -type b 例2:find /dev -type c 例3:find /dev -type p
-size 匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件)
例:在/boot目录下查找大小为大于6M的文件:find /boot -size +6M
-prune 忽略某个目录
-exec 操作 {} \; 自动对找到的文件执行“某个操作”,如ls、cp、rm -rfv等。例:在/etc目录中查找以.conf文件结尾的所有文件,并复制到/tmp/目录中。
find /etc -name *.conf -exec cp -rv {} /tmp/ \; 大括号{}表示用find找到的所有文件
-ok 操作 {} \; 手动交互(手动yes确认)对找到的文件执行“某个操作”,如ls、cp等。
例:find /etc -name *.conf -ok cp -v {} /tmp/ \;
日志文件:
日志文件的功能:
将系统中发生的事情,按照发生时间的先后顺序,分门别类的记载到不同的文件中称为记录日志,文件就是日志文件。
日志文件通常会记录的信息: 什么时候?什么主机(IP或主机名)?什么人(用户)?做了什么事(执行的命令或进程)?
查看secure安全日志文件的最后10行内容:tail /var/log/secure
日志软件名:rsyslog 查:rpm -q rsyslog
日志软件配置文件:rsyslog.conf 查:rpm -qc rsyslog
查日志软件的所有文件列表:rpm -ql rsyslog
重启rsyslog服务:systemctl restart rsyslog
日志的种类
1、系统自带的应用日志:/var/log/messages、/var/log/secure等
2、文件系统日志:ext2、 ext3、ext4、xfs
3、应用程序自带日志:crontabs、ssh、dhcp、vsftpd、http、mysql等服务都有相应的日志
系统日志文件默认位置:/var/log目录
大部分Linux发行版默认的日志守护进程为 rsyslog,位于 /etc/rsyslog 或 /etc/rsyslogd,默认配置文件为 /etc/rsyslog.conf,任何希望生成日志的程序都可以向 rsyslog 发送信息。
常见日志文件名:/var/log目录中的所有文件
日志文件 作用
/var/log/messages 该日志文件是许多进程日志文件的汇总
/var/log/cron 计划任务日志
/var/log/boot.log 系统启动日志
/var/log/dmesg 开机内核自检信息,主要是硬件驱动加载的信息,用dmesg查看内容
/var/log/wtmp 永久记录所有用户的登录、注销信息, 用last查看
/var/log/btmp 记录错误登录的日志。是二进制文件,要用lastb命令查看
/var/log/utmp 记录当前已登录的用户信息,是二进制文件。用w、who、users查看
/var/log/maillog 邮件日志
/var/log/secure 安全日志。记录授权和验证信息。记录创建和删除用户、su切换用户、本地登录、ssh远程登录、sudo等操作的信息。
/var/log/lastlog 记录系统中所有用户最后一次的登录时间。是二进制文件。用lastlog命令查看。
/var/log/cups 打印日志
/var/log/http目录 Apache HTTP 服务日志。
/var/log/samb目录 samba 软件日志
日志的类型?
日志类型 作用
authpriv 只能被特定用户查看
cron 系统定期执行计划任务时产生的日志
mail 邮件日志
ntp 网络时间协议(ntp)产生的消息
local0~local7 日志优先级
日志的8个等级?
优先级 说明
0 emerg 紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。
1 alert 报警信息。需要立即修复,例如系统数据库损坏。
2 crit 危险情况,例如硬盘错误,可能会阻碍程序的部分功能。
3 err 一般错误消息。
4 warning 警告。
5 notice 提示、提醒信息。不是错误,但是可能需要处理。
6 info 通用性消息,一般用来提供有用信息。
7 debug 调试程序产生的信息。
查询rsyslog软件的信息:
查询rsyslog软件是否已安装:rpm -q rsyslog
查rsyslog软件的所有文件列表:rpm -ql rsyslog
查rsyslog软件的配置文件:rpm -qc rsyslog
日志转储logrotate
日志轮替(交替、轮滚):logrotate
日志软件名:logrotate 查:rpm -q logrotate
主配置文件:logrotate.conf 查:rpm -qc logrotate
自定义日志轮滚策略文件:/etc/logrotate.d/*
查日志软件的所有文件列表:rpm -ql logrotate
测试日志轮滚策略:logrotate -vf /etc/logrotate.conf
日志轮替的作用:防止单个日志文件过大,定期自动清除旧日志
例:
在/var/log目录中创建lol文件
创建lolk日志切割策略文件 touch /var/log/lol
vi /etc/logrotate.d/lolk 切割策略如下
日志文件的路径 {策略
lol文件不存在也不报错
每天切割1次
创建新日志文件
最多生成3个备份文件
不启用压缩功能
/var/log/lol {
missingok
daily
create
rotate 3
#compress
}
测试lolk切割策略(强制执行切割测试):logrotate -vf /etc/logrotate.d/lolk
ls -l /var/log/lol*
光盘的挂载和rpm软件的安装
手动挂载:将Linux系统光盘镜像文件读到/dvd目录中(即挂载)
创建/dvd目录:mkdir -pv /dvd
临时手动挂载:mount -v /dev/cdrom /dvd
查看/dvd目录的文件列表:ls /dvd
命令格式说明:mount 设备 挂载点目录
-v是显示执行过程
什么是挂载:就是将一个设备的内容读到一个目录中。
卸载光驱设备(类似于u盘的安全弹出):umount /dev/cdrom 或 umount /dvd
自动挂载的实现:
在系统的/etc/fstab文件系统表配置文件中添加光盘等设备的自动挂载设置。
1、编辑/etc/fstab文件:vi /etc/fstab 在文件最后添加如下内容
/dev/cdrom /dvd iso9660 defaults 0 0
设备 挂载点目录 文件系统格式 挂载选项 是否dump备份 是否fsck磁盘扫描
2、手动测试自动挂载:mount -av
-a 即all,是挂载/etc/fstab文件中的所有设备。
3、查看已挂载的所有设备:mount
磁盘管理
新硬盘的管理流程:分区fdisk或parted--〉格式化mkfs--〉手动挂载mount(或fstab自动挂载)
硬盘分区(disk partition):
GPT分区管理:parted命令
GPT:是GUID(Globally Unique Identifier) Partition Table全局唯一标识分区表的缩写。GPT分区表中只有主分区这个管理概念。允许创建128个主分区。GPT分区表可以用来管理总容量大于2TB以上的硬盘。硬盘的UUID号可用blkid命令来查。
例:将2GB的硬盘sdb用GPT分区表进行管理,要求给sdb硬盘创建2个主分区,第1个主分区容量是1.5G,另一个主分区的容量使用所有剩余空间。
查块设备列表(list block):lsblk
定义分区表标签(即格式):parted -s /dev/sdb mklabel gpt
创建第1个1.5G的主分区:parted -s /dev/sdb mkpart primary 1M 1.5G
创建第2个主分区(使用所有剩余空间-1):parted -s /dev/sdb mkpart primary '1.5G -1'
查看sdb硬盘的分区表信息:lsblk 或 fdisk -l /dev/sdb
parted命令的附加功能:
显示(print)sdb硬盘的分区表:parted /dev/sdb p
删除(remove)sdb硬盘的2号分区:parted -s /dev/sdb rm 2
mount挂载:将分区的文件系统内容读取到一个目录中。访问这个挂载点目录就等同于访问这个分区文件系统中的文件
例:查分区:lsblk
格式化1号分区:mkfs.ext4 /dev/sdb1 或 mkfs -t ext4 /dev/sdb1
格式化2号分区:mkfs.xfs /dev/sdb2 或 mkfs -t xfs /dev/sdb1
创建挂载点目录:mkdir -pv /mnt/sdb{1,2} 或 mkdir -pv /mnt/sdb1 /mnt/sdb2
手动挂载:mount /dev/sdb1 /mnt/sdb1 ; mount /dev/sdb2 /mnt/sdb2
查挂载信息:lsblk 或 df -hT 或 mount
写入数据:touch /mnt/sdb1/{a.txt,b.mp3} ; cp -v /etc/host* /mnt/sdb2
递归(-R)显示/mnt目录中的文件名列表:ls -R /mnt
fdisk分区命令:键盘操作分区
功能:对硬盘进行分区的查、增、删、改等操作。
用法:fdisk [选项] 磁盘设备
选项:-l 显示分区表信息
例:用lsblk显示磁盘块设备,用fdisk命令显示sdb硬盘的分区表信息。
lsblk
fdisk -l /dev/sdb
删除sdb硬盘的分区表:parted -s /dev/sdb mklabel msdos
显示块设备列表:lsblk
fdisk的常用快捷键:
m:显示命令帮助
p 显示分区表信息(print)
n 新建一个分区(new)
d 删除一个分区(delete)
w 保存并退出(write)
q 不保存退出(quit)
l 显示(list)分区的文件系统类型标签代号
t 修改分区的文件系统类型(type)标签
a 激活(active),即给分区添加bootable允许引导的标记(通常用于boot引导程序的分区)
MBR分区表管理:
MBR:是主引导记录(main boot record)的缩写。
MBR:是保存在硬盘的0磁道0柱面1扇区的位置,占用512字节(因为1个扇区默认的大小是512字节)。其中bootloader引导程序占用446字节,DPT(disk partition table)分区表占用64字节,magic占用2字节。
MBR的分区表特点:
0.只能管理总容量在2TB以内的硬盘。
1.最多只允许分4个主分区,因为DPT分区表总容量是64字节,每个分区占用16字节,即64/16=4。
2.如果想分的个以上的分区,可采用分一个主分区(primary)和一个扩展分区(extend),然后在扩展分区中创建逻辑(logical)分区来实现。
3.主分区的编号为1~4,第1个逻辑分区的编号默认为5。
4.只能在主分区和逻辑分区上格式化创建文件系统。并且只能在主分区和逻辑分区上写入文件。
硬盘分5个分区的方案(用MBR分区表):
方案一、1个主分区,1个扩展分区,4个逻辑分区。
方案二、3个主分区,1个扩展分区,2个逻辑分区。
查分区表信息:lsblk
卸载分区的文件系统:umount /mnt/sdb1 /mnt/sdb2
删除分区表(修改分区表格式标签即可):parted -s /dev/sdb mklabel msdos
查分区表信息:lsblk
MBR分区创建:
查分区表信息:lsblk
cfdisk管理分区:cfdisk /dev/sdb
cfdisk快捷键:n是new新建 p是primary主分区 l是logical逻辑分区
W(大写)是wite保存(写入) q是quit退出
创建主分区:n新建==>p主分区==>1.2G回车==>beginning回车==>W(大写)保存==>yes回车
创建逻辑分区1:选free空闲空间==> n新建==>l逻辑分区==>600M回车==>beginning回车
创建逻辑分区2:选free空闲空间==> n新建==>l逻辑分区==>600M回车==>beginning回车==>W保存==>yes回车==>q键退出
fstab自动挂载:fstab自动挂载配置文件:fstab是file system table文件系统表的缩写。是用来记录磁盘分区设备自动挂载信息的配置文件。系统启动时会读取/etc/fstab文件中的挂载配置信息,并自动挂载里面的设备。
例:
依次卸载sdd1、sdd2分区
查看硬盘空间使用状态
依次查看2个目录的文件列表
编辑fstab自动挂载配置文件 umount /dev/sdd1 /dev/sdd2
df -hT
ls /d1 /d2
vi /etc/fstab 添加下行的内容
sdd1的挂载设置
sdd2的挂载设置 /dev/sdd1 /d1 ext4 defaults,noexec 0 0
/dev/sdd2 /d2 ext4 defaults 0 0
fstab文件功能说明 设备 挂载点 类型 选项 dump备份 是否fsck
自动挂载测试
查看 用mount -av做。
lsblk 或 df -hT
mount手动挂载的缺点:当系统重启后,用户必须重新手动将分区的文件系统挂载到指定的目录。但是用户可以将mount手动挂载的命令写到/etc/rc.d/rc.local开机运行脚本文件中,系统在启动时会自动执行rc.local脚本中的命令
例: vi /etc/rc.d/rc.local
sdd1的挂载设置
sdd2的挂载设置 mount /dev/sdd1 /d1 ext4 defaults,noexec 0 0
mount /dev/sdd2 /d2 ext4 defaults 0 0
自动挂载测试
显示已挂载的设备 用mount -av做。
lsblk 或 df -hT
磁盘管理
RAID磁盘阵列
应用场景:公司购买了5块2G的硬盘,要求工程师将这5块硬盘用某种技术从逻辑上组合成一个大容量的存储空间(如2G*5=10G)。此时我们就需要用到raid磁盘阵列或LVM逻辑卷管理技术。
Raid:是冗余磁盘阵列的缩写,简称磁盘阵列。
Raid功能:提供了容量组合、高读写性能、同步备份等功能
raid的缺点:raid阵列组中的后期无法添加新的成员来扩充整体容量。
raid实现方式:
硬raid:用raid磁盘阵列卡来实现。通过raid卡专用的软件来管理磁盘。
软raid:用操作系统中提供的raid软件来实现磁盘阵列功能。成本低,性能比硬Raid低,因为软raid会占用一定的cpu资源。
Raid等级:(根据功能不同来分类)n为单块硬盘的容量
等级号 名称 功能 最少硬盘数 允许损坏的磁盘数量 可用容量
0 条带化 高读写性能、容量组合 >=2 0 2n+n
1 镜像化 同步备份、数据安全 =2 1 n
5 分布式奇偶校验的条带化 高读写性能、数据安全 >=3 1 3n-n
6 双组分布式奇偶校验的条带化 高读写性能、数据安全 >=4 2 4n-2n
10 镜像化+条带化 容量组合、同步备份 总容量的50% 坏一半 4n+2n
linux系统中的软raid管理工具软件:mdadm
查mdadm命令由哪个Rpm包提供:yum provides mdadm
查软件是否安装了:rpm -q mdadm
安装mdadm软件:yum install -y mdadm
mdadm命令选项:
-C 即create,创建raid设备
-l 即level,指定raid等级号,等级可以是0、1、5、6、10等
-n 即number,指定raid中的磁盘设备数量
-x 即spare空格,指定raid设备中的热备(备胎、替补)磁盘数量
-D 即detail详细,显示raid设备的详细信息
-s 即scan扫描,扫描出系统中所有的raid设备
-v 即verbose,显示执行过程
-S 即stop,停用指定的raid设备
-A 即active,激活(启用)指定的raid设备
-a 即add,在指定的raid设备组中添加新的成员
-f 即faulty错误的,指定raid设备组中有故障的磁盘
-r 即remove移除,在指定的raid设备组中删除有故障的磁盘
显示磁盘设备列表:lsblk
显示raid设备列表:mdadm -Dsv
创建名称为md5的raid 5设备:mdadm -C md5 -l 5 -n 3 -x 1 /dev/sd{b..e}
显示名称为md5的raid 5设备的详细信息:mdadm -D /dev/md/md5
显示raid设备列表:mdadm -Dsv
生成raid配置文件:mdadm -Dsv > /etc/mdadm.conf
停用md5这个raid设备:mdadm -S /dev/md/md5
启用md5这个raid设备:mdadm -A /dev/md/md5
警告:要想在停用raid设备之后再启用,必须保证mdadm.conf配置文件
指定sdc硬盘为坏盘(fail):mdadm /dev/md/md5 -f /dev/sdc
将sdc硬盘从md5这个raid组中移除(remove):mdadm /dev/md/md5 -r /dev/sdc
将sdf硬盘添加(add)到md5这个raid组中:mdadm /dev/md/md5 -a /dev/sdf
raid创建的完整管理流程:创建raid--〉生成mdamd.conf配置文件--〉格式化Raid设备--〉挂载raid设备--〉写入新数据。
raid的删除管理流程:卸载raid设备--〉停用raid设备--〉删除mdadm.conf配置文件。
LVM逻辑卷管理:
LVM的主要功能:容量组合,动态调整容量大小。
LVM是将多块硬盘从逻辑上组合成一个大容量的存储空间(即VG卷组),最终要划分成小的LV逻辑卷来使用这些空间。
LVM的管理流程:先给硬盘分区(也可以不分区),再创建PV物理卷(volnume),再创建VG卷组,再创建LV逻辑卷,再mkfs格式化LV,再mount手动或fstab自动挂载LV,再写入数据。
LVM的管理流程:查磁盘设备列表--〉创建PV--〉创建VG--〉创建LV--〉格式化LV--〉mount手动挂载或fstab自动挂载LV
物理磁盘Physical Device: 整个硬盘设备或使用fdisk、cfdisk命令建立的硬盘分区
物理卷(PV,Physical Volume) :用pvcreate在硬盘上创建PE的结果。查PV的结果用pvdisplay。
卷组(VG,Volume Group) :由一个或多个物理卷(PV)组成的整体。
逻辑卷(LV,Logical Volume) :从卷组(VG)中切割出的空间,用于格式化(即创建文件系统),大小由PE的个数决定。
物理扩展(PE,Physical Extent):是卷组中的最小容量单元,每个PE默认为4MB的基本块。
逻辑扩展(LE,Logical Extent):LV中的最小单元。默认的每个LE大小跟PE的大小一致。
LVM管理的命令表:
功能/命令 物理卷管理 卷组管理 逻辑卷管理
扫描scan pvscan vgscan lvscan
建立create pvcreate vgcreate lvcreate
显示display pvdisplay vgdisplay lvdisplay
状态status pvs vgs lvs
删除remove pvremove vgremove lvremove
扩展(增加容量)extend vgextend lvextend或lvresize
缩容(缩小容量)reduce vgreduce lvreduce或lvresize
调整系统中看到的容量:resize2fs
例:
显示磁盘块设备列表:lsblk
查PV状态:pvs
创建PV物理卷:pvcreate /dev/sdb /dev/sdc
显示所有的PV详细信息:pvdisplay [/dev/sdb /dev/sdc]
查VG状态:vgs
创建名称为myvg的卷组,将sdb、sdc拉进卷组中:vgcreate myvg /dev/sdb /dev/sdc
查myvg这个VG详细信息:vgdisplay myvg
查看VG状态:vgs
创建容量为3G,名称为mylv的LV逻辑卷:lvcreate -L 3G -n mylv myvg
查LV状态:lvs
查mylv这个LV的详细信息:lvdisplay /dev/myvg/mylv
扫描并显示系统中所有的LV设备:lvscan
格式化:mkfs.ext4 /dev/myvg/mylv
创建挂载点目录:mkdir -pv /mnt/mydata
手动挂载:mount /dev/myvg/mylv /mnt/mydata
显示已挂载的设备信息:lsblk 或 df -h
写入文件:cp -v /etc/host* /mnt/mydata
LVM扩容练习:查看现有的PV、VG、LV状态信息,将sdd和sde加入到myvg这个卷组中,将mylv的容量从3G调整到7G,将mylv的文件系统容量信息同步更新成7G。
LVM扩容思路:先检查VG的剩余容量,看是否需要扩VG容量,然后扩LV容量,最后刷新LV的文件系统容量值。
查PV状态:pvs
查VG状态:vgs
查LV状态:lvs
将sdd、sde创建成PV:pvcreate /dev/sdd /dev/sde
查VG状态:vgs
在myvg这个卷组中扩容添加sdd、sde这两个成员:vgextend myvg /dev/sdd /dev/sde
查VG状态:vgs
查LV状态:lvs
将mylv容量扩充为7G:方法一:lvextend -L +4G /dev/myvg/mylv
方法二:lvresize -L 7G /dev/myvg/mylv
查LV状态:lvs
同步文件系统的容量信息:resize2fs /dev/myvg/mylv
显示磁盘分区的文件系统使用状态:df -h 会发现mylv的容量还是3G,信息不同步
同步文件系统的容量信息:resize2fs /dev/myvg/mylv
显示磁盘分区的文件系统使用状态:df -h 发现mylv的容量变成了7G
LVM缩容练习:查看现有的PV、VG、LV状态信息,先将mylv的文件系统容量信息缩减成1G,然后将mylv的容量从7G调整到1G,手动挂载mylv到/mnt/mydata目录,用ls查看挂载点目录中的文件名列表,并用cat查看挂载点目录中的hosts文件内容是否正常。将sdb硬盘中的数据迁移到sdd硬盘中,将myvg这个卷组中sdb、sdc、sde硬盘从组中移除。
LVM缩容思路:先用df -h检查文件系统的使用状态信息,卸载要缩容的LV的文件系统,然后用e2fsck扫描检查文件系统数据,然后用resize2fs调整文件系统容量,然后缩减lv的容量为文件系统容量值,重新手动挂载LV。然后缩减VG的容量,删除不需要的PV。
显示磁盘空间使用状态:df -h
卸载挂载点所对应的设备:umount /mnt/mydata
扫描检查磁盘设备 :e2fsck -f /dev/myvg/mylv
调整文件系统容量为1G:resize2fs /dev/myvg/mylv 1G
显示LV的状态:lvs
LV的容量缩减:
方法一:lvresize -L 1G /dev/myvg/mylv
方法二:lvreduce -L -6G /dev/myvg/mylv
显示LV的状态:lvs
手动挂载指定设备:mount /dev/myvg/mylv /mnt/mydata
显示指定目录的文件列表:ls /mnt/mydata
显示指定文件的全文内容:cat /mnt/mydata/hosts
VG卷组的缩容(缩减容量):
显示VG状态:vgs
显示PV状态:pvs
迁移sdb磁盘的数据到sdd硬盘中:pvmove /dev/sdb /dev/sdd
显示PV状态:pvs
显示VG状态:vgs
卷组的缩容在myvg卷组中移除sdb、sdc、sde这三个成员:vgreduce myvg /dev/sd{b,c,e}
显示VG状态:vgs
显示pvg状态:pvs
LVM快照(即snapshot备份)管理:
LVM快照的工作原理:LVM的快照卷也是一个LV逻辑卷,快照卷跟源逻辑卷共享数据,当用户修改源逻辑卷中的文件时,LVM后台程序会自动将修改之前的文件复制一份到快照卷中。
例:对LVM练习中的mylv这个逻辑卷创建一个容量为500M且名称为mylv-snap的快照。然后将mylv-snap这个快照卷手动挂载/mnt/mylv-snap目录中,显示挂载点目录的文件名列表。
显示vg状态:vgs
显示lv状态:lvs
创建mylv-snap快照卷:lvcreate -L 500M -s -n mylv-snap /dev/myvg/mylv
显示lv状态:lvs
创建挂载点目录:mkdir -pv /mnt/mylv-snap
手动挂载:mount /dev/myvg/mylv-snap /mnt/mylv-snap
显示已挂载的设备信息:df -h 或 lsblk
显示文件名列表:ls -R /mnt
显示挂载点目录中hosts文件的全文内容:cat /mnt/mydata/hosts
恢复mylv-snap快照中的数据。注意:恢复快照后,快照卷会被自动删掉。
思路:先卸载源逻辑卷--〉恢复快照--〉挂载逻辑卷
卸载:umount /dev/myvg/mylv /dev/myvg/mylv-snap
恢复快照:lvconvert --merge /dev/myvg/mylv-snap
挂载:mount /dev/myvg/mylv /mnt/mydata
显示挂载点目录中的文件内容:cat /mnt/mydata/hosts
使用swap分区
如果硬盘有空闲空间来创建swap分区时,可以在硬盘上创建一个swap分区并启用swap。
目标:在sde硬盘上创建一个500M的swap分区,并启用这个Swap分区。
1、使用parted命令在sde硬盘上创建一个swap分区:
查看分区表
设置分区表类型为msdos(即MBR)
创建1个500M的主分区
设置为swap分区类型
查看块设备 fdisk -l |grep sd
parted -s /dev/sde mklabel msdos
parted -s /dev/sde mkpart primary 1 500M
parted -s /dev/sde set 1 swap on
lsblk
2、使用mkswap将/dev/sde1文件格式化为swap格式:
mkswap /dev/sde1
3、使用swapon来启用/dev/sde1
查看内存状态
启用此swap文件
查看swap状态 free
swapon /dev/sde1
free
swapon -s
4、使用swapoff关闭/dev/sde1
关闭swap文件
swapoff /dev/sde1
free
文件系统和软硬链接
文件系统是对存储空间的管理和分配,负责文件的存储并对存入的文件进行保护和检索的系统
windows常见的文件系统:fat32、ntfs
fat32:是一个32位的文件系统,只能存储单个小于4G的文件,如果做文件共享安全性差
ntfs:是新技术文件系统(new technology file system)的缩写。支持存储单个大于4G的文件,安全性高,可以对每个文件单独设置权限(FACL)
fat32转换成ntfs格式的文件系统:convert 盘符: /fs:ntfs
文件分配表故障的修复:chkdsk 盘符: /f
linux系统中的文件系统:ext3、ext4、xfs
ext:是延伸文件系统(英语:Extended file system)的缩写,也译为扩展文件系
XFS一种高性能的日志文件系统
硬盘分区的文件系统组成:由inode索引目录和block数据块区域两部分组成,inode类似于书籍的目录,block类似于书籍的正文。
inode是信息节点的意思。inode中记录了inode信息节点号、文件权限、以及inode号和所对应的block数据块之间的映射关系等信息。
硬链接访问文件内容的过程:硬链接文件名--〉inode索引号--〉block数据块--〉sector扇区。
软链接访问文件内容的过程:软链接文件名--〉i硬链接文件名--〉inode索引号--〉block数据块--〉sector扇区
在当前目录中给/etc/hosts文件创建一个名称为ht的硬链接:
硬链接的创建:ln 源文件名 新文件名 例:ln /etc/hosts ht
硬链接的缺点:1.目录不能创建硬链接 2.硬链接不能跨分区来创建
在当前目录中给/etc/passwd文件创建一个名称为pwsds的软链接:
ln 目标路径 文件名称 例:ln -s /etc/passwd pwsds
查文件的属性:ls -l ht pwsds
ln创建硬链接的命令格式:ln 源文件名 新文件名
硬链接的应用场合:提高文件的安全性,如果不小心删除了硬链接中的其中一个文件名,可以给备用的硬链接文件名重新创建一个硬链接名。
硬链接访问文件的过程:
文件名1--->inode索引号--->多个block块--->多个sector扇区
文件名2-----↑ ↑
文件名3-----------↑
项目任务:将passwd文件中的前3行内容覆盖写入到/pa.txt文件中,然后给/pa.txt创建2个硬链接文件/pb和/pc,查看这三个文件的详细信息(即属性)。然后用cat分别查看这三个文件的内容,最后查看这三个文件的状态信息。
将passwd文件的前3行覆盖写入/pa.txt中 head -3 /etc/passwd > /pa.txt
进入/根目录 cd /
给pa.txt创建硬链接文件pb ln pa.txt pb
给pa.txt创建硬链接文件pc ln pa.txt pc
查看/根目录中包含p字母的所有文件的属性 ls -li / |grep p
cat /pa.txt ; cat /pb ;cat /pc
查看/pa.txt、/pb、/pc文件的状态信息 stat /pa.txt /pb /pc
项目任务:将/etc目录中的fstab、hosts、inittab文件用硬链接的方式备份到/fbak目录中,然后删除/etc/hosts文件,再用硬链接的方式恢复hosts文件到/etc目录中,查看这两个hosts文件的inode号是否一致,查看内容是否一致。
mkdir /fbak
cd /etc
ln fstab /fbak/fstab.bak
ln hosts /fbak/hosts.bak
ln inittab /fbak/inittab.bak
用硬链接的方式恢复hosts文件 rm -f /etc/hosts
cat /etc/hosts
ln /fbak/hosts.bak /etc/hosts
ls -li /fbak/hosts.bak /etc/hosts
stat /fbak/hosts.bak /etc/hosts
cat /fbak/hosts.bak
cat /etc/hosts
警告:group、passwd、shadow用户和组的相关文件不能用硬链接的方式备份,因为每次创建、删除用户时,系统会重新创建passwd文件,导致此文件的inode索引号发生变化。
警告2:硬链接不能跨分区,也就是sdb1分区上的文件名不能创建硬链接到sdc1分区中。
软链接也称为符号链接(symbolic link)即“仅仅包含它索要链接文件的路径名”因此能做目录链接也可以跨越文件系统(即跨分区),但原始文件被删除后链接文件也将失效,如同Winodw™中的“快捷方式”。
软链接的应用场合:当某个文件或文件夹的路径太长了,我们可以在/根目录中给它创建一个软链接(即快捷方式),访问起来更方便。
软链接访问文件的过程:
软链接名--->源文件名--->inode索引号--->多个block块--->多个sector扇区
项目任务:将passwd文件中的前3行内容覆盖写入到/sa.txt文件中,然后给/sa.txt创建1个硬链接文件/h1,创建1个软链接/s1,查看这三个文件的详细信息(即属性)。然后用cat分别查看这三个文件的内容,最后查看这三个文件的状态信息。删除/sa.txt文件。
将passwd文件的前3行覆盖写入/pa.txt中 head -3 /etc/passwd > /sa.txt
进入/根目录 cd /
给sa.txt创建硬链接文件h1 ln sa.txt h1
给sa.txt创建软链接文件s1 ln -s sa.txt s1
查看根目录中的sa.txt和h1文件的详细信息 ls -li /sa.txt /h1 /s1
查看/sa.txt、/h1、/s1文件的状态信息 stat /sa.txt /h1 /s1
删除sa.txt文件 rm -f /sa.txt
查看/h1、/s1文件的属性及inode索引号 ls -li /h1 /s1 发现s1属性最右边的sa.txt变红色块了,说明sa.txt文件丢失了
用/h1这个硬链接来恢复/sa.txt文件 ln /h1 /sa.txt 然后用上一条命令查看文件的属性有何变化
ln命令用于创建链接文件,格式为:“ln [选项] 目标”。
创建硬链接:“ln 文件名 链接名”
创建软链接:“ln -s 文件名 连接名”
选项 作用
-s 创建"符号链接"(默认是硬链接)
-f 强制创建文件或目录的链接(强制覆盖已存在的文件名)
-i 覆盖前先询问
-v 显示创建链接的过程
对/etc目录做出一个名为etcs的软连接。
[root@sky ~]# ln -s /etc /etcs
[root@sky ~]# ls -ld /etc*
quota磁盘配额
应用场合:
公司内部的文件共享服务,网络云环境中网盘(百度网盘、微云)空间限制。广泛应用在云存储、文件共享、邮件、Web网站等服务器。
配额控制的对象:用户、分区、容量、文件数量
quota的磁盘配额可以限制用户的硬盘可用空间或最大创建文件数量,并且还有软/硬限制的区别:
soft软限制:当达到软限制时会提示用户,但允许用户在规定期限内继续使用。
hard硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。
block块:限制用户能使用的容量。
inode索引号:限制用户能创建的文件数量。
quota磁盘配额的实施思路(精简):
挂载分区时启用“磁盘配额功能”:mount -o usrquota,grpquota 分区设备 挂载点
生成quota的主配置文件:quotacheck -cvug 挂载点
激活quota功能:quotaon 挂载点
显示磁盘配额报表:repquota -av
给用户或组设置quota配额方案edquota -u 用户
测试配额的效果,查看配额使用情况
磁盘配额实验流程:(只有root用户才能设置quota限额参数)
0、临时关闭Selinux安全功能:setenforce 0 查状态:getenforce
1、对磁盘分区指定quota选项(usrquota,grpquota):手动mount或更改fstab文件再挂载 mount -o usrquota,grpquota /dev/sdf1 /f1
3、扫描并生成quota配置文件:quotacheck -cvug 挂载点
4、开启quota配额方案:quotaon 挂载点
2、创建用户、组
5、为用户、组设置配额参数:edquota [-u -g]
6、做文件写入测试,验证配额是否生效:touch dd cp……
7、查看当前用户的quota使用状态:quota
root用户查看某个用户的quota使用状态:quota -u 用户名
查看quota软件的工作状态:quotastats
quota精简笔记OK版:
说明:以下是对sdf硬盘创建一个主分区,然后对这个分区的文件系统做quota磁盘配额控制。
lsblk 显示块设备
parted -s /dev/sdf mklabel msdos 设置分区表格式标签为msdos(即MBR分区表)
parted -s /dev/sdf mkpart primary '1 -1 ' 创建主分区,使用所有容量
lsblk 显示块设备
mkfs.ext4 /dev/sdf1 格式化sdf1分区为ext4文件系统
mkdir -pv /f1 创建挂载点目录
mount -o usrquota,grpquota /dev/sdf1 /f1 手动挂载sdf1设备,并使用磁盘配额功能
setenforce 0 临时关闭Selinux安全功能
getenforce 查selinux的工作状态
quotacheck -cvug /f1 生成quota主配置文件
ls /f1 显示/f1目录的文件名列表
quotaon -v /f1 激活quota功能,如果未激活,后期切换到用户后,用quota查状态会出没有权限
useradd -Db /f1 修改useradd创建用户时的用户家目录的基目录为/f1
useradd fa 创建fa用户
repquota -av 显示quota配额状态信息报表
edquota -u fa 给fa用户设置文件数量配额,软限制为15个文件,硬限制为18个文件。
su - fa 切换到fa用户
quota 显示当前用户的quota配额使用状态信息
touch {1..5} 会提示quota exceeded配额超出,即超出了软限制。
touch {6..10} 会提示超出磁盘限额,无法创建。即超出了硬限制。
exit 退出当前用户
su - u1
pwd 显示当前工作目录的绝对路径
quota 查看当前用户的配额使用状态
dd if=/dev/zero of=2m bs=1M count=2 创建一个2M的文件2m
cp 2m 22m 复制2m文件为22m
cp 2m 222m 复制不成功,因为限额为5M,其中2m文件是2兆,22m是2兆,222m只能复制出1M到硬盘上。
ls 显示当前目录的文件名列表
quota 查看当前用户的配额使用状态
edquota命令补充:
将fa用户的配额方案复制给fb用户:edquota -p fa zk
例:创建一个5M的文件:dd if=/dev/zero of=/tmp/5m.txt bs=1M count=5
dd数据转储:data dump
选项说明:文件的大小=bs*count=1M*5=5M
if 是input file(输入文件)的缩写,即指定来源文件
of 是output file(输出文件)的缩写,即指定目标文件
bs 是base size基本大小的缩写,即指定每次读写的大小
count 是计数的意思,即读写的次数
通配符、管道、重定向、命令的逻辑运行
通配符:是用来在文件搜索时代替文件名中一个或多个真正字符。
? 匹配任意单个字符。例1:ls /dev/tty? 例2:ls /dev/tty??
* 匹配任意0个或多个字符(即一串字符)。例:ls /dev/tty*
[] 匹配[]中的任意单个字符。例:ls /dev/tty[123]5
[1-5] 匹配一个连续范围,范围可以是数字[0-9]、字母[a-z]或[A-Z]或[a-Z]。
例:ls /dev/tty[1-4]3
例:用ls列出/dev目录中以tty1、tty5开头,后面一个字符是1、3、5、7的文件。
ls /dev/tty[15][1357]
例:用ls列出/dev目录中以tty开头,后面接任意单个字符,最后接1、5、9字符的文件。
ls /dev/tty?[159]
----------
管道符 | :将前一个命令的结果(标准输出)传给后一个命令继续处理。
例:统计根目录下的文件数量。
ls / | wc -l
说明:wc是字符统计(word count)的缩写。-l是统计行数。
例:查看/etc/passwd文件的前6行内容,要求同时显示出行号。
head -6 /etc/passwd | cat -n
例:统计出/etc目录下有多少个普通文件。统计出/etc目录下有多少个目录。
ls -l /etc | grep ^- | wc -l
ls -l /etc | grep ^d | wc -l
例:提取ifconfig ens33结果中包含IP地址的整行信息。
方法一:ifconfig ens33 | head -2 | tail -1
方法二:ifconfig ens33 | grep netmask
例:提取ifconfig ens33结果中包含MAC地址的整行信息。
方法一:ifconfig ens33 | head -4 | tail -1
方法二:ifconfig ens33 | grep ether
例:将ifconfig命令的结果进行分页显示来查看。
ifconfig | more 或 ifconfig | less
windows的管道符实例:在cmd下将systeminfo命令的结果进行分页显示来查看。
systeminfo | more
---------
重定向:重新定义方向,即改变信息的输出或输入方向。
查标准输入、输出文件以及错误输出文件:ll /dev/std*
标准输入stdin: 通常是指键盘。 数字代号(fd文件描述符)是 0
标准输出(命令的正确结果)sdtout:通常是指显示屏。 数字代号(fd文件描述符)是 1
错误输出(命令的报错信息)stderr:通常是指显示屏。 数字代号(fd文件描述符)是 2
重定向输出:操作中有>覆盖写入、>>追加写入这两种操作功能。通常是将原本显示在屏幕上的信息指向某个文件。
重定向输出的常见符号:
> 覆盖写入(覆盖输出)。例:ls /opt /xxx > /tmp/1.txt
>> 追加写入(追加输出)。例:date >> /tmp/1.txt
2> 错误信息的覆盖写入。例:ls /opt /xxx 2> /tmp/2.txt
2&1> 将正确和错误信息都覆盖写入到文件中。例:ls /opt /xxx &> /tmp/21.txt
例:将date命令的结果覆盖写入到/tmp/a.txt文件中。再将free -h命令的结果追加写入到/tmp/a.txt文件中。最后用more命令分页显示/tmp/a.txt文件内容。
date > /tmp/a.txt
free -h >> /tmp/a.txt
more /tmp/a.txt
重定向输入:将原本要用键盘输入的信息指向某个文件。很少用。
例:用cat查看/etc/hosts文件。
cat /etc/hosts 或 cat < /etc/hosts
例:以脚本方式用cat命令创建包含指定内容的文件。(EOF是end of file的缩写,即定义文件内容的结束字符)。注意:EOF标记必须是文件正文内容未出现的字符。
cat > a.txt <<EOF
hello linux
hi vim
ni hao
EOF
--
命令的逻辑运行:其实就是if条件语句的简单写法。
无逻辑(顺序执行):ls ;pwd ;date
逻辑与: 命令1 && 命令2 当命令1执行成功(状态码是0)就执行命令2
逻辑或: 命令1 || 命令2 当命令1执行失败(状态码是1)就执行命令2
例:执行date命令,用echo $?查上一条命令执行结果的状态码。再执行ls /xxxx,同样查命令的执行结果的状态码。
date
echo $?
ls /xxxx
echo $?
xxxxx
echo $?
例:执行如下命令的逻辑执行命令。
逻辑与:date && pwd
逻辑或:haha || date
例:查询系统中是否安装了vsftpd软件,如果没有安装,就用yum安装此软件。
rpm -q vsftpd || yum install -y vsftpd