码迷,mamicode.com
首页 > 系统相关 > 详细

Linux知识归档

时间:2019-02-21 20:14:23      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:彩色   并且   用户信息   编号   键盘输入   only   执行文件   enc   设备   

计算机发展的五代:
电子管、晶体管、中小规模集成电路、超大规模集成电路、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

Linux知识归档

标签:彩色   并且   用户信息   编号   键盘输入   only   执行文件   enc   设备   

原文地址:https://blog.51cto.com/14173127/2353052

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!