Linux 文件管理
Linux一级目录管理及含义
- bin 普通用户使用的命令
- sbin 管理员使用的命令
- dev 设备文件
- root 存储root用户的home目录
- home 存储普通用户的home目录
- tmp 临时文件
- var 存放变化文件
- media 移动设备默认的挂载点
- mnt 手工挂载设备的挂载点
- etc 与系统相关的配置文件
- proc 虚拟的文件系统,反映内核、进程信息或实时状态、硬件状态
- usr 系统文件
- boot 存放系统启动相关的文件
- lib 库文件的Glibc
- lib64 库文件的Glibc
Linux 文件管理命令
在终端中输入命令以对文件进行管理(增删改)
基础文件管理语法
- touch 当前目录创建文件:touch 文件名.后缀
- ls 查询当前或指定目录所有的文件以及文件夹(相对路径):ls [指定的目录]
- pwd 查询当前目录所在位置
- cd 路径变化当前的目录位置(绝对路径)
- mkdir 根据路径创建目录或文件夹:mkdir 路径/创建目录名称,若上一级目录为存在则在尾部加上 -p 即 mkdir 上一级未创建目录/创建目录 -p,则会自动创建上一级目录
- cp 复制文件或者目录:复制文件 cp 目标文件 复制到目录,复制目录 cp 目标目录 复制到目录 -r
- mv 移动文件或者文件夹:mv 文件或文件夹 移动到目录
- rm 删除文件或者目录:rm 目录/文件 yes确定, rm -rf /* 删库跑路(*.*)
文本查询
- cat 查询文件所有的信息:cat 文件名
- more 翻页查询文件信息: more 文件名
- head 查询头部文件信息: head -行数(默认十行) 文件名
- tail 查询尾部文件信息: tail -行数(默认十行) 文件名
- grep 查询关键字,过滤文件信息: grep '过滤文本' 文件名
文本编辑
文本编辑主要依靠语法 vi、vim来进行文本编辑操作,二者差别不大
vi一共有三个模式:
- 命令模式:用于移动光标、复制粘贴、删除等操作
- 插入模式:输入“ i ”,进入文本编辑即插入模式
- 底行模式:输入“ : ”进入底行模式,用于搜索、保存、离开等操作
终端输入 vi 文件名 或 vim 文件名 打开文件编辑器后进入的是命令模式,下面例举几个常用的命令模式命令:
命令模式
光标定位
- hjkl 对光标进行上下左右的位置调整
- 0 光标调整到行首
- $ 光标调整到行尾
- gg 光标移动到页首
- G 光标移动到页尾
- /string 对文本进行string的字符查询,“ n ”可跳转到下一个string位置
文本编辑模式
- i、a、o、A 进入插入模式
- Esc 返回命令模式
其他
- : 进入底行模式
插入模式
在命令模式中输入“ i ”进入插入模式,即可直接对文件文本进行文本编辑
底行模式
在命令模式中输入“ : ”进入底行模式
- w 保存编辑
- w 文件名 将该编辑文件另存为新的文件
- q 退出文本编辑
- wq 保存并退出
- 范围 替换字符串/替换成字符串/全局 范围用 % 代表选取全部,也可以用(从哪行,到哪行);全局用 g (global),不加时只会替换每行首个相同字符串,加时将替换所有
- set nu 显示行号
- set nonu 不显示行号
- set list 显示控制字符
用户权限管理
用户账户概念
用户账户是在使用查询更改文件时,具有的相对身份信息而拥有的相关权限
- id 用户名 可查询到当前使用账户的身份信息
- whoami 查询当前使用账户
- ll 可查询到当前文件的一些从属信息、创建时间、文件类型等: ll 文件名
- ps aux 可查询账户对计算机执行的程序信息
- cd ~ 跳转到当前账户的目录
用户账户信息
在 /etc 目录下由管理用户账户的基本信息文件
passwd用户基本账户信息
passwd是处于/etc目录下的文件,主要管理用户基本账户信息,可以通过cat /etc/passwd查询passwd文件信息
提取其中的文本信息可分为七类账户信息,用户名:X:uid:gid:账户描述:账户目录:shell:
- 用户名:登入系统账户的名字
- x:密码占位符
- uid:账户的身份证,一般0最高权限,1~999特殊权限,1000+普通权限
- gid:组号
- 账户描述: 对帐户的使用者的说明
- 账户目录:账户自己的目录
- shell:命令解释器
shadow用户账户密码信息
shadow存储的是有关于用户账户的密码加密信息、以及修改时间、最大有效期等,可以通过 cat /etc/shadow 查询shadow文件信息
提取其中的文本信息可分为八类信息:
- 用户名:登入系统账户的名字
- 口令:口令是用户账户密码进行加密后的文本信息
- 最后一次的密码修改时间
- 最小修改时间间隔
- 最大口令有效时间
- 警告时间
- 不活动时间:判断用户是否为活跃用户
- 失效时间:用户账户的使用寿命
group用户组信息
group存储的是用户组信息,可通过cat /etc/group 查询group文件信息
提取文本信息,由用户名:X:uid:组成员构成,系统默认用户组为空
用户管理
创建用户
- useradd 用户名 添加新用户
- 可补充指定选项: -u uid 可指定用户账户的uid,
其他
- userdel -r 用户名 删除用户账户
- passwd 用户名 修改用户账户密码
- usermod -s /bin/nologin 用户名 修改用户账户的shall登入允许
用户组管理
可以直接在vi /etc/group中进行文本修改
- groupadd 用户组名 添加新的用户组,groupadd 用户组名 -g uid 可指定用户组名的uid
- usermod -aG 用户组 用户 将用户添加到用户组
- gpasswd -d 用户 用户组 将用户在用户组中删去
- man 指令 可以查询指令的指定命令
Linux的用户权限
Linux的用户权限主要是对文件或者是文件夹的读取、写入、执行权限,分别为r、w、e
查看账户权限
- ls -l 文件路径或目录 查询权限记录,会得到下列信息
其中 “ rw- r-- r-- ” 分别对应的是属主权限,属组权限,其他权限
. 文件的拓展
1 文件链接
root 是文件的属主
第二个root是属组
七月 4 18:05 为文件创建时间
123 为文件大小
账户权限变更
- chmod 对象(a/u/g/o) 赋值符(+/-/=) 权限类型 (w/r/e) 文件或者目录
- chmod XXX(分别对应ugo,对应的数值是赋予的权限数值之和,其中r-4,w-2,e-1,例如rwe则是7,rw-则是6,e--则是4) 文件或者目录
- chown 用户名/用户名.组名/.组名 文件或者目录 更改文件或者目录的属主
- chown 用户名/用户名.组名/.组名 目录 -R 针对目录中所有的文件更改属主
进程管理
静态查看进程(ps)
通过终端输入 ps aux 可静态查看计算机目前所有的进程
- USER: 用户名
- PID: 进程id
- %CPU: CPU 占用率
- %MEM: 内存 占用率
- VSZ: 占用虚拟内存
- RSS:占用实际内存
- TTY: 进程运行的终端
- STAT:进程状态(R 运行,S 睡眠,T 停止,Z 僵,X 死亡)
- START: 进程运行时间
- TIME: 进程占用CUP的总时间
- COMMAND:进程名/程序文件目录
通过终端输入 ps aux --sort -排序依据 进行 降序排序,将排序依据前的-删去是升序
ps -ef 可以查看进程的父子关系,其中PPID 表示的父进程的PID
ps -axo 筛选的列 可以将一个或多个列筛选出来
动态查看进程 (top)
终端输入top 可动态查看进程信息:
top - 系统时间 up - 服务器开机时间, 用户数量 users,load average:(平均占用CPU)一分钟,五分钟,十五分钟
Tasks:工作进程 total, 运行进程 running,睡眠进程 sleeping, 中止进程 stoped, 僵尸进程 zombie
%Cps(s): 用户占用内存 us, 系统占用内存 sy,其他省略
top -d 刷新频率 -p 指定进程
top常用内部指令
- ?/h 帮助菜单
- M 内存使用率排序
- P CUP使用率排序
- N PID大小排序
- <> 向前向后
- z 彩色 Z 设置彩色颜色
进程管理指令
终端输入 kill -l 查看所有kill指令的编号,主要知道9(终止进程),15(杀死进程)
终端输入 kill -9/15 PID 终止/杀死进程
重定向和管道
重定向
可将终端输出的信息进行保存或者丢掉
保存: 指令 > 保存文件路径
丢掉:指令 &> /dev/null(空洞文件路径) 其中&表示无论指令是否正确执行
文件句柄
文件句柄是操作系统中用于访问文件的一种数据结构,我们可以在执行程序文件中的fd中找到相关的文件句柄文件。
我们先在/root下创建一个text.txt文本文件,然后打开第二个端口用iv对它执行,回到第一个端口处,输入ps aux | grep vim 找到该程序
通过 ls /proc/4144 找到程序下的文件(/proc管理进程信息),其中fd就是管理文件句柄的文件夹
可以看到该中存在0、1、2、3文件夹,其中分别代表文件句柄:
0 | stdin | 标准输入 |
1 | stadout | 标准输出 |
2 | staderr | 连接错误 |
3+ | filname | 其他临时文件 |
重定向便是可以接入文件句柄对其中的信息进行管理
输入重定向(>)
覆盖: 指令 文件句柄> 保存文件路径
添加: 指令 文件句柄>> 保存文件路径
输出重定向(<)
指令 < 编辑好的文件的路径
管道
进程管道
线性地执行多个命令 命令 | 命令 | ......,并且每个命令结束后会把其中文件句柄0传输到下一个命令的文件句柄1中
tee管道(三通管道)
在管道执行时,可以将上一个命令输出进行显示或者存储文件中
参数传递 xargs
将上一个命令的结果作为下一个命令参数执行
磁盘管理
磁盘查询
- ll /dev/sd 查看所有磁盘信息,ada,adb,adc分别为第123磁盘
- lsblk 可显示出磁盘的情况
磁盘分区
终端输入 fdisk 磁盘路径进入操作界面,输入n进入磁盘分盘
主分区中最多只能设置四个分区 ,最后输入w进行保存
fdisk -l 磁盘路径 查看分区结果
创建文件系统
终端输入 mkfs.ext4 磁盘分区路径 进行格式化便可以创建文件系统
挂载mount
手动挂载
创建挂载点 ,一个分区一个挂载点,通常放在/mnt下
手动挂载 mount 分区路径 挂载点路径 完成手动挂载
终端输入 df -Th 查看计算机的挂载信息
手动挂载的磁盘在系统重启之后需要重新挂载
永久挂载
第一种方法 vim /ect/fstab ,/etc/fasab 中存放的是系统自启动自动挂载的文件,我们可以在下面加入我们的分区挂载指令 分区路径 挂载点路径 文件管理方式 defaults 0 0,但不建议采用这个方法
第二种方法,将挂载指令写在/root下的自启动文件中
终端输入 ls /root -a 查询/root下所有文件包括隐藏文件
其中.bashrc存放的就是账户自启动文件,将挂载指令编入即可实现自动挂载
LVM逻辑卷管理
首先将物理磁盘转化为物理卷PV
- pvcreate 磁盘路径
创建卷组VG
- vgcreate 卷组名 磁盘路径
创造逻辑卷LV
- lvcreate -L 卷大小 -n 卷名 卷组名
最后再进行格式化挂载即可,值得注意的是,挂载的磁盘路径要更改成逻辑卷逻辑,eg:/dev/vg1/lv1
RAID/文件管理系统
EXT4-XFS文件管理系统的原理
暂不深入研究(来日补充),明白inode是索引,block是数据块,我们可以在终端输入 ls -l -i 文件路径 来查询各个路径的索引
RAID廉价磁盘沉余阵列
RAID作用可以提高磁盘的读写能力以及安全性
RAID0
RAID0将数据拆分平均分配给每个磁盘(条带化),读取时又将每个磁盘中的数据进行连接,大大地提高了磁盘地读写能力,但没有容错安全性,如果磁盘发生损坏数据将永久丢失,磁盘利用空间为百分百
RAID1
RAID1利用数据镜像,将数据读写入一个磁盘后将会自动拷贝到另一个磁盘中,当磁盘发生损坏时可以从另一个镜像磁盘中修复,但无法提升读写能力,且磁盘利用率只有百分之五十
RAID5![](https://i-blog.csdnimg.cn/direct/8ba8cc4eceb0442c92edd93ceddaddeb.png)
RAID5至少需要三个驱动器,每次写入数据时会将数据分配成n-1个存储入n-1磁盘中,通过奇偶校验后地结果存放入最后一个磁盘,当某个磁盘发生损坏时,将通过奇偶校验反推出损坏磁盘的数据,有效地提高 读写能力,且磁盘利用率为(n-1)/n
Linux中装入软RAID
对于在虚拟机上安装软RAID我们需要用到mdadm
- madadm -C /dev/设备名称 -lRAID型号 -nRAID成员数量 -x热备磁盘数量 RAID成员磁盘路径
这里我们以RAID5,用三块磁盘进行试验 (不加入热备磁盘)
对磁盘设备格式化,装入文件管理系统 mkfs.ext4 设备路径
然后将我们的磁盘设备进行挂载,然后用 df -hT查看挂载情况
这样我们的软RAID5便安装成功啦,当某个磁盘损坏时会自动修复
软链接和硬链接
主要作用是创建我们文件或文件夹的快捷方式
软链接
终端输入 ln -s 连接路径 创建快捷文件路径
硬链接
硬链接的操作方式在终端输入 ln 连接路径 创建快捷文件路径
软链接和硬链接的主要区别
- 软链接可以跨分区使用,硬链接跨分区使用将失败
- 查询文件类型时。软链接的文件类型没有链接数量而硬链接有(文件夹都会显示)
- 软链接的链接文件依赖于原文件,当原文件删除时链接文件将失效;硬链接的链接文件和原文件独立存在,原文件删除时链接文件依旧生效
文件查找
命令文件查找
查找命令文件,一般在终端输入 which 命令 或者 whereis 命令
普通文件查找
- locate 文件的关键词 值得注意的是locate通常只会在开机的时候更新一次,我们可以用 updatedb 来更新locate数据库
find查找
find查找功能比较全面,可以筛选式的找到自己想找的文件
语法 find [路径] [匹配条件] [动作] [活动]
[路径] 从哪一节目录下开始寻找,以下是一些可选参数
- -maxdepth n -a:目录深度
[匹配条件] 根据某个已知属性或大概范围寻找
- -name pattern:根据关键字
- -type type :根据文件类型,f 普通文件,d 目录,l 链接等
- -size [+/-]size:+是大于,-是小于,无为指定大小
- -mtime [+/-]day :按天数前后,或者指定天数
- -user username : 按文件所属人查找
- -group groupname: 按所属组查找
- -perm 权限和:如wr-w-----就是640
[动作] 按文件执行状态寻找
- -amin n:查看最近n分钟内被访问过的文件
- -atime n: 查看最近n*24小时内被访问过的文件
- -cmin n:查看最近n分钟内状态发生过的文件(例如权限发生变更)
- -ctime n:查看最近n*24小时内状态发生过的文件(例如权限发生变更)
- -mmin n:查看最近n分钟内被修改过的文件
- -mtime n:查看最近n*24小时内被修改过的文件
其中n也可以为具体的时间,并且前面是否放[+/-]与前文效果一致
[活动] 找到文件目录后执行
- -print 打印目录
- -delete 删除找到的文件
- -ok cp -rvf {} 复制路径 \; 复制找到的文件到指定目录
tar文件打包和压缩
- 压缩:tar [压缩工具] 压缩名称 存放路径
- 解压:tar -xf 压缩包路径 存放路径
[压缩工具]
- -cf
- -czvf
- -cjf
- -cJf
耗时从上到下递增,体积从上到下递减
YUM软件包管理
网络测试: ping 网址
下载并安装软件包: yum -y install 软件包
重新安装:yum -y reinstall 软件包
升级安装:yum -y update 软件包
查询yum源:yum repolist
查询已安装的软件包 :yum list [查询软件包]
查询网卡设备:ifconfig
根据指令查询软件包: yum provides 指令
yum仓库更换阿里仓库
更换国内镜像网站以加快软件包的下载速度
首先我们的yum配置文件路径为 /etc/yum.repos.d/centos.repo
我们需要更改centos.repo文件以达到更换阿里仓库的效果,相关的配置文件请到官网进行查询
任务
一次性任务at
语法 at <时间> [需要执行的命令] 【Ctrl+d结束】
循环调度执行 cron
- systemctl status crond.service 查看任务部署
- crontab -e 创建计划
- crontab -l 查询计划 -u username 管理员管理其他用户的计划
- crontab -r 删除计划
计划存储位置 /val/spool/cron/
语法格式 分 时 日 月 周 命令
当为单个数值时,指准确时间 如 0 1 * * * 命令,每日0点00时执行命令
当为*/数值时,则代表循环间隔 如 */5 * * * * 命令, 每五分钟执行一次