目录:
一、Linux中常用命令
1.查看本机ip
2.cd 切换目录
3.pwd #查看当前目录的绝对路径
4.ls #浏览当前目录下的目录文件
5.passwd #设置账户密码 不写默认当前用户
二、Linux中执行命令
6. $PATH #显示环境变量
7.date #显示系统时间
8.timedatectl #设置系统时间、时区
9.ls命令的使用 #浏览目录内文件
10.man #提供在线帮助,使用权限是所有用户
11.mkdir 创建目录
12.touch #创建文件
13.echo
14.vim #创建或编辑新的文件
15.tree #显示目录下文件的树形拓扑以及概要信息
16.rm #删除文件
三、文件内容的显示
17.cat #查看文件内容,适合数据量较少
18.more #翻页查看文件内容,适合内容较多的文件查看
19.less #查看文件内容
20.head #查看文档前n行的内容
21.tail #查看文档后n行内容
22.file #查看文件类型
23.stat #显示文件属性信息
24.grep #文件内容过滤显示
25.cut #切割显示,用于按列提取文本内容
26.sort #用于对文本内容进行排序显示
27.uniq #用于去除文本中连续的重复行
28.tr #文件中字符替换显示
四、文件的其他操作命令
29.wc #用于统计指定文本文件的行数、字数或字节数
30.cp #复制文件或目录,相当于硬链接
30.mv #用于剪切或重命名文件
31.find #查找文件
五、压缩和解压缩(zip和unzip命令)
32.zip #压缩
33.unzip #解压缩
33.gzip命令 压缩
34.bzip2命令
34.zcat
35.tar #归档命令
六、用户和组管理
36.id命令 #查看账户的UID、GID等信息
37.useradd #添加新用户
useradd #添加用户
usermod 修改账户信息:
passwd #账号设置密码
userdel #删除账号
groupadd #工作组管理
创建工作组
gpasswd #添加/删除组成员
groupdel #删除工作组
38.who命令 #who显示当前登录系统的账户名称
七、Linux文件系统权限
39.chmod #修改文件或目录的权限
40.chown #修改文件归属对象
41.ACL权限 #给指定的用户指定目录分配指定的权限
八、管理Linux的联网
42.nmcli
43.wget #用于在终端命令行里下载网络文件,英文全称为:“web get”
44.curl命令
九、管理Linux软件包和进程
44.rpm #软件安装
45.YUM/DNF管理工具
管理进程
46.ps #ps显示某个时间点的程序运行情况
47.top命令
48.kill #强制结束进程
十、磁盘管理
49.lsblk命令 #查看磁盘信息
50.fdisk #默认将磁盘划分为MBR格式的分区
51.mkfs格式化:
52.blkid命令 #显示设备的UUID值和文件系统名称
53.mount挂载
54.umount命令
55.swap分区
53.df命令 #列出文件系统的磁盘空间占用情况
十一、管理逻辑卷(vgcreate...)
[root@node1 ~]# ifconfig
[root@node1 ~]# ip a
[root@node1 ~]# cd /root
[root@node1 ~]# cd .. #返回上一级目录[root@node1 yum.repos.d]# cd ~
[root@node1 ~]# pwd
/root
[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# pwd
/etc/yum.repos.d
[root@node1 ~]# ls /dev
[root@node1 ~]# passwd root
Changing password for user root.
New password:
[root@node1 ~]# echo $PATH
/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin
[root@node1 ~]# date
Thu Feb 1 03:44:06 PM CST 2024[root@node1 ~]# date "+%Y-%m-%d %H:%M:%S" #年-月-日 时:分:秒
2024-02-01 15:47:49修改时间(s=set)
[root@node1 ~]# date -s 2023-01-01 #更改时间 也可以不用-隔开
格式:
timedatect1-参数命令
·status : 显示状态信息
·list-timezones : 列出已知时区
·set-timezone: 设置生效时区
·set-time: 设置系统时间
[root@node1 ~]# timedatectl status #查看当前时间
Local time: Thu 2024-02-01 15:55:49 CST
Universal time: Thu 2024-02-01 07:55:49 UTC #世界协调时间
RTC time: Thu 2024-02-01 07:55:49 #计算机硬件中的时钟时间
Time zone: Asia/Shanghai (CST, +0800) #区域
System clock synchronized: yes #时间是否同步
NTP service: active
RTC in local TZ: no
[root@node1 /]# timedatectl set-timezone Asia/Shanghai #设置系统时间为亚洲上海 可以改为其他地方
[root@node1 /]# timedatectl set-ntp no #关闭Linux系统ntp时间同步
[root@node1 /]# timedatectl set-time 2022-5-18
[root@node1 /]# date
2022年 05月 18日 星期三 00:00:03 CST
[root@node1 ~]# ls -l # -l 以列表的形式显示目录内的文件详细信息
total 40
-rw-------. 1 root root 1068 Jan 22 19:27 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Jan 22 20:10 Desktop
drwxr-xr-x 2 root root 4096 Jan 22 20:10 Documents[root@node1 ~]# ll #等同于 ls -l
total 40
-rw-------. 1 root root 1068 Jan 22 19:27 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Jan 22 20:10 Desktop
drwxr-xr-x 2 root root 4096 Jan 22 20:10 Documents
# man命令用来提供在线帮助,使用权限是所有用户。
# 使用man命令可以调阅其中的帮助信息,非常方便实用
[root@server ~]# man ls
-p:快速创建多级目录(递归目录)
-v:显示创建目录的详细过程
[root@node1 ~]# mkdir t1
[root@node1 ~]# mkdir t3 t4 #同时创建t3,t4
[root@node1 t1]# mkdir -p t1/t5 #多级包含 在t1目录下创建t5
[root@node1 ~]# touch t1.txt
[root@node1 ~]# touch t2.txt t3.txt #可以批量创建
[root@node1 ~]# touch {p4,p5,p6}.txt #有规律的批量创建
[root@node1 ~]# touch test{1..100} #可以起始..终止
#可以使用echo命令将文本内容直接输出到文件中。例如,使用echo命令创建一个包含文本内容的文件:
[root@node1 ~]# echo "hello world" >b2
[root@node1 ~]# cat b2
hello world#echo也可以向终端设备上输出字符串或变量的存储数据
格式
• echo "字符串"
• echo $变量名
[root@node1 ~]# str='my name' #自定义变量
[root@node1 ~]# echo $str
my name
[root@node1 ~]# echo $PATH #输出变量的值必须加$
/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin
[root@node1 ~]# echo "$PATH"
/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin#输出变量的方式要加$
[root@server ~]# name=pzz
[root@server ~]# echo name
name
[root@server ~]# echo $name
pzz
[root@server ~]# echo '$name'
$name
[root@server ~]# echo "$name"
pzz
echo重定向输出到文件
echo "字符串" > 文件名 #覆盖原先文件内容
echo "字符串" >> 文件名 #追加
[root@sever ~]#vim fi.txt
#这将在当前目录下创建一个名为fi.txt的新文本文件。如果文件已经存在,将会编辑现有文件。
#对于普通的文本编辑操作,可以使用以下键盘命令:
- i:进入插入模式,在光标当前位置插入文本。
- ESC:退出插入模式。
- :w:保存文件。
- :q:退出vim编辑器。
- :wq:保存并退出vim编辑器。
- :q!:强制退出vim编辑器,丢弃对文件的更改。
#在编辑完毕后,按下ESC键退出插入模式,然后可以使用:wq命令保存文件并退出vim编辑器。
在vim中的快捷方式:
yy是复制 p是粘贴 3yy复制三行 nyy复制n行
dd删除本行 3dd删除三行 ndd删除n行
d$ 删除字符保留行只删除光标处到行尾的 $行尾标志
d^ 删除字符保留行只删除光标处到行首的 ^行首标志
u撤回操作
w按照单词 向前移动
b按照单词 向后移动
$定位到行尾
^定位到行首
gg到第一行第一个字母
GG到第最后行最后第一个字母
查找关键字并替换
:w /root/pzz 文件另存为
:/root 查找
:set nu 临时加行号
:输入数字 快速定位
:set nonu 关闭行号vim(查找关键字并替换)
[root@node1 ~]# tree /path/to/directory
#使用tree命令可以方便地查看整个目录结构以及文件和目录的层级关系,对于文件系统的导航和分析非常有用。
#删除文件要确认: rm -r 文件名
[root@node1 ~]# rm -r t1
rm: descend into directory 't1'? yes
rm: remove regular empty file 't1/t1.txt'? yes
rm: remove regular empty file 't1/t3.txt'? yes
rm: remove regular empty file 't1/t2.txt'? yes
rm: remove directory 't1/t5'? yes
rm: remove directory 't1'? yes#删除文件不确认: rm -f 文件名
[root@node1 ~]# rm -f t2[root@node1 ~]# rm -rf *
rm -rf * 命令中的 -rf 选项表示递归删除目录并且不提示确认信息, * 表示匹配所有的文件和目录。因此,运行这个命令会删除根目录下的所有文件和目录,包括重要系统文件和目录,造成不可恢复的损失。
#这是一个非常危险的命令,会删除根目录下的所有文件和目录,可能会导致系统崩溃或数据丢失。这样的操作是不安全且不推荐的。
[root@node1 ~]# cat /etc/passwd #查看/etc/passwd文件内容
root@node1 ~]# cat /etc/fstab > f1.txt #输出重定向
[root@node1 ~]# cat /etc/passwd>>f5.txt #文件追加内容
[root@node1 ~]# more /etc/passwd
#空格翻页一页一页的往下 回车一行一行的往下
#注意:可以使用上下键进行浏览,点击q退出浏览
[root@node1 ~]# less /etc/passwd
格式:head -数字 文件名
[root@node1 ~]# head -5 /etc/passwd #查看前5行的内容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin[root@node1 ~]# head /etc/passwd #不写数字默认前10行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
格式:tail -参数 文件名
参数
-数字:查看倒数行数
-f:动态刷新, 实时显示日志文件并且能动态更新
[root@node1 ~]# tail -1 /etc/passwd #查看最后一行
gnome-initial-setup:x:973:973::/run/gnome-initial-setup/:/sbin/nologin[root@node1 ~]# tail /etc/passwd #不写数字默认后10行
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
geoclue:x:983:979:User for geoclue:/var/lib/geoclue:/sbin/nologin
pipewire:x:982:978:PipeWire System Daemon:/var/run/pipewire:/sbin/nologin
colord:x:981:977:User for colord:/var/lib/colord:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
flatpak:x:974:974:Flatpak system helper:/:/usr/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
gnome-initial-setup:x:973:973::/run/gnome-initial-setup/:/sbin/nologinhead和tail可以完成第几行查询
查看文件的第几行用管道符:|
[root@node1 ~]# head -6 /etc/passwd | tail -1 #查看第6行
sync:x:5:0:sync:/sbin:/bin/sync-f :进入文件实时监控状态 动态刷新,实时显示日志文件并且能动态更新
[root@node1 ~]# tail -f /var/log/messages #可以看到文件的实时更新
格式:file -参数 文件名
文件类型:
ASCII file :ASCII文本字符文件
empty:空文件
block special :块设备文件
character special :字符设备文件
diretory:目录
[root@node1 ~]# file /etc/passwd #查看文件属性
/etc/passwd: ASCII text
格式:stat 文件名
#注意:一般通过该命令查看大小、Inode、硬链接、软连接
[root@node1 ~]# stat /etc/passwd
File: /etc/passwd
Size: 2718 Blocks: 8 IO Block: 4096 regular file
Device: 253,0 Inode: 979929 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2024-02-01 15:07:33.851852714 +0800
Modify: 2024-01-22 20:11:58.986348155 +0800
Change: 2024-01-22 20:11:58.986348155 +0800
Birth: 2024-01-22 20:11:58.986348155 +0800
#在指定的普通文件中查找并显示含有指定字符串的行,也可与管道符一起使用
格式:
grep-参数 查找条件 文件名
参数:[root@node1 ~]# grep -n "root" /etc/passwd # -n:显示行号
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin[root@node1 ~]# grep -c "sbin" /etc/passwd #统计过滤到的行数
47[root@node1 ~]# grep -nv "sbin/nologin" /etc/passwd #-n:显示行号 -v:取反
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
47:mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false[root@node1 ~]# grep -ni "d" /etc/passwd #过滤含有d的行且忽略大小写
grep特殊符号匹配:
示例:
[root@node1 ~]# grep '^a' /etc/passwd #定位行首以a开头的
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin[root@node1 ~]# grep '^#' /etc/passwd #检索注释开头的行
[root@node1 ~]# grep "\.$" /etc/fstab #必须有转义符,过滤以.结尾的行
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
# units generated from this file.[root@node1 ~]# grep "^$" /etc/passwd #查看文件的空白行
[root@node1 ~]# grep [5-9] /etc/passwd #过滤含有5-9数字的模糊查询
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin[root@node1 ~]# grep -w [5-9] /etc/passwd #过滤含有5-9数字的精准查询
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin[root@node1 ~]# grep [root] /etc/passwd #过滤含有 r 或 o 或 t 的行
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin[root@node1 ~]# grep ^[root] /etc/passwd #过滤以 r 或 o 或 t 的开头的行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin[root@node1 ~]# grep [^root] /etc/passwd #反向显示,显示不包含r或o或t
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin[root@node1 ~]# grep [0-9]$ /etc/passwd #过滤以数字结尾的行
[root@node1 ~]# grep ^[0-9] /etc/passwd #过滤以数字开头的行
格式:
cut -d "分隔符" -f列数字 文件名
[root@node1 ~]# cut -d ":" -f 1 /etc/passwd #切割文件第一列的内容
root
bin
daemon
adm
lp
sync
shutdown
halt[root@node1 ~]# cut -d ":" -f 1 /etc/passwd | wc -l #统计第一列的行数
49
sort -参数 文件名
[root@node1 ~]# sort b2 #顺序
apple
banana
hello world
orange
peae[root@node1 ~]# sort -r b2 #逆序
peae
orange
hello world
banana
apple[root@node1 ~]# echo "orange" >>b2
[root@node1 ~]# echo "apple" >>b2
[root@node1 ~]# sort -u b2 #去除重复行后排序
apple
banana
hello world
orange
peae[root@node1 ~]# sort -n b2 #对数字进行排序
[root@node1 ~]# sort -nr b2 #对数字进行倒序
格式:
uniq -参数 文件名
[root@node1 ~]# sort b2
1
3
5
5
6
7
7
9
[root@node1 ~]# sort b2 | uniq #排序并去重
1
3
5
6
7
9
作用: tr 指令从标准输入读取数据,经过替换或者删除,将结果输出到标准输出
格式:
tr -参数 替换内容 新内容
参数
• -c :反选设定字符,符合“替换内容”的部份不做处理,不符合的剩余部份才进行转换
• -d:删除指令字符D:
• -s:缩减连续重复的字符成指定的单个字符
[root@node1 ~]# cat /etc/passwd | tr a-z A-Z #小写字母全部转换成大写字母
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC
SHUTDOWN:X:6:0:SHUTDOWN:/SBIN:/SBIN/SHUTDOWN
HALT:X:7:0:HALT:/SBIN:/SBIN/HALT
MAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN
[root@node1 ~]# wc -l /etc/passwd #显示行数
49 /etc/passwd[root@node1 ~]# wc -w /etc/passwd #显示单词数
105 /etc/passwd[root@node1 ~]# wc -c /etc/passwd #显示字节数
2718 /etc/passwd
格式:
cp -参数 源文件 目标文件
参数:[root@node1 ~]# touch t1
[root@node1 ~]# cp t1 / #源文件为文件,只拷贝不改名
[root@node1 ~]# cp t1 /t2 #源文件为文件,目录加文件拷贝+改名[root@node1 ~]# mkdir p1
[root@node1 ~]# cp p1 /
cp: -r not specified; omitting directory 'p1' #cp: 未指定 -r;略过目录'p1'
[root@node1 ~]# cp -r p1 / #源文件为目录必须加-r
格式:
mv [选项] 源文件名称 目标文件名称
[root@node1 ~]# mv t3 /etc/[root@node1 ~]# mv t1 t3 #在linux中相当于改名
[root@node1 ~]# mv b2 /root/t7 #路径变了相当于移动
[root@node1 ~]# ll /root/t7
-rw-r--r-- 1 root root 16 Feb 2 15:52 /root/t7
#按照文件名、大小、时间、权限、类型、所属者、所属组来搜索文件
格式:
find 查找路径 查找条件 具体条件(按文件名或时间大小等) 操作
注意:
find命令默认的操作是print输出
find是检索文件的,grep是过滤文件中字符串示例
• 按照文件名搜索
○ -name: 按照文件名搜索
○ -iname: 按照文件名搜索,不区分文件名大小写
○ -inum: 按照inode 号搜索
○ 没有那个文件或目录: find命令在执行时,在内存中自己产生的临时文件,执行完既消失
[root@node1 ~]# find /etc/ -name "passwd" #查找文件名为passwd的文件
/etc/pam.d/passwd
/etc/passwd[root@node1 ~]# find /etc/ -name "hosts"
/etc/hosts[root@node1 ~]# find /etc/ -name "a*" #以a开头的文件名
/etc/ca-trust/source/anchors
/etc/libvirt/nwfilter/allow-arp.xml
/etc/libvirt/nwfilter/allow-dhcp.xml
/etc/libvirt/nwfilter/allow-incoming-ipv4.xml
/etc/libvirt/nwfilter/allow-ipv4.xml
/etc/libvirt/nwfilter/allow-dhcp-server.xml
/etc/libvirt/qemu/networks/autostart
/etc/at.allowfind的通配符
• "*":任意字符任意个数
• "?":任意字符1个内容
[root@node1 ~]# find /etc/ -iname "B*" #查找忽略B的大小写
/etc/binfmt.d
/etc/selinux/targeted/booleans.subs_dist
/etc/ld.so.conf.d/binutils-x86_64.conf
/etc/libibverbs.d/bnxt_re.driver
/etc/logrotate.d/btmp
/etc/bluetooth[root@node1 ~]# find /etc/ -iname "?b*" #查找第二个字母为b的文件
/etc/selinux/targeted/contexts/dbus_contexts
/etc/ld.so.conf.d/jbig2dec-x86_64.conf
/etc/ld.so.conf.d/ebtables-x86_64.conf
/etc/asciidoc/dblatex[root@node1 ~]# find / -name "*.cfg" #查找以 .cfg 结尾的文件
/boot/grub2/grub.cfg
/etc/grub2.cfg
/etc/libblockdev/conf.d/10-lvm-dbus.cfg
/etc/libblockdev/conf.d/00-default.cfg
/etc/vdpau_wrapper.cfg按照文件大小搜索
• -size [+ -大小: 按照指定大小搜索文件,“+”的意思是搜索比指定大小还要大的文件,“”的意思是搜索比指定大小还要小的文件
[root@node1 ~]# find / -size +100M #找大于100M的文件
/sys/devices/pci0000:00/0000:00:0f.0/resource1
/sys/devices/pci0000:00/0000:00:0f.0/resource1_wc
/proc/kcore[root@node1 ~]# find / -size -100M #查找小于100M的文件
[root@node1 ~]# find / -size 100M #查找等于100M的文件按照修改时间搜索
• -atime [+|-]时间: 按照文件访问时间搜索
• -mtirne [+|-]时间:按照文件数据修改时间搜索
• -ctime [+|-]时间: 按照文件状态修改时间搜索
• -newer file: 把file修改时间更新的文件列出来
注意:时间范围问题
○ -5:代表 5 天内修改的文件
○ 5: 代表前 5~6 天那一天修改的文件
○ +5: 代表 6 天前修改的文件按照所有者和所属组搜索
• -uid 用户ID: 按照用户 ID 查找所有者是指定 ID 的文件
• -gid 组ID: 按照用户组 ID 查找所组是指定 ID 的文件
• -user 用户名: 按照用户名查找所有者是指定用户的文件
• -group 组名: 按照组名查找所属组是指定用户组的文件。
[root@node1 ~]# find / -user root #查找归属于管理员的文件
/proc/1899/task/2038/net/fib_trie
/proc/1899/task/2038/net/if_inet6
/proc/1899/task/2038/net/mcfilter
/proc/1899/task/2038/net/rt_cache
/proc/1899/task/2038/net/sockstat
/proc/1899/task/2038/net/udplite6
/proc/1899/task/2038/net/connector
/proc/1899/task/2038/net/dev_mcast
/proc/1899/task/2038/net/dev_snmp6按照权限搜索
• -perm 权限模式:查找文件权限刚好等于“权限模式”的文件,常用
• -perm -权限模式: 查找文件权限全部包含“权限模式”的文件
• -perm +权限模式: 查找文件权限包含“权限模式”的任意一个权限的文件。
• 如果要在整个系统中搜索权限中包括SUID权限的所有文件,只需使用-4000即可:
[root@node1 ~]# find / -perm 400 #查找只读权限
[root@node1 ~]# find / -perm 777 #查找完整权限的文件按文件类型寻找
-type d: 查找目录
-type f: 查找普通文件
-type l: 查找软链接文件[root@node1 ~]# find / -type d #在根目录下查找目录
按照逻辑运算符
-a: and 逻辑与
-o: or 逻辑或
-not: not 逻辑非
优先级:与>或>非案例:
[root@node1 ~]# find / -size +10k -a -size -50k #查看大于10k且小于50k的文件
[root@node1 ~]# find /etc/ -name "e*" -o -name "f*" #查找以e或f开头的文件
/etc/ld.so.conf.d/evolution-data-server-x86_64.conf
/etc/ld.so.conf.d/epiphany-x86_64.conf
/etc/ld.so.conf.d/freerdp-x86_64.conf
/etc/ld.so.conf.d/ebtables-x86_64.conf
/etc/ld.so.conf.d/esc-x86_64.conf
/etc/libibverbs.d/efa.driver
[root@node1 ~]# find /etc/ -name "d*" -user root # 默认为and,不写默认为and
/etc/dnsmasq.conf
/etc/fwupd/remotes.d/dell-esrt.conf
/etc/fwupd/daemon.conf
/etc/gnome-vfs-2.0/modules/default-modules.conf
/etc/libvirt/qemu/networks/autostart/default.xml
/etc/libvirt/qemu/networks/default.xml-exec……{}\;
[root@node1 ~]# find ~ -user root -exec cp -a {} /media \;
#找到家目录下归属于root账户的文件将 ~ -user root #拷贝到/media目录下
#{ }代表拷贝源文件 \; 代表结束
格式:
• zip FILE #压缩
• unzip FILE # 解压缩
[root@node1 ~]# zip f5.zip f5.txt
参数:
• -d:更改解压路径
• -v:不解压缩,查看压缩包里的内容
[root@node1 ~]# unzip test2.zip #解压test.zip文件
Archive: test2.zip
extracting: test2.txt[root@node1 ~]# unzip test.zip -d dir1 #解压到dir1下 -d更改解压路径
Archive: test.zip
extracting: dir1/test3.txt
extracting: dir1/test4.txt
extracting: dir1/test5.txt[root@node1 ~]# unzip -v test.zip #-v不解压缩,查看压缩包里的内容
Archive: test.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
6 Stored 6 0% 09-20-2023 19:58 4e6f5599 test3.txt
6 Stored 6 0% 09-20-2023 19:58 012ec35e test4.txt
6 Stored 6 0% 09-20-2023 19:58 1835f21f test5.txt
-------- ------- --- -------
18 18 0% 3 files
参数:
• -r:压缩目录下的文件
• -c:压缩但保留原始文件
[root@node1 ~]# gzip test1.txt #使用gzip压缩文件
[root@node1 ~]# gzip -r dir1 #使用gzip压缩目录下文件
[root@node1 ~]# gzip -c test2.txt > test2.txt.gz #压缩但保留原始文件
参数:
• -c:压缩但保留原始文件
bzip2是更新的Linux压缩工具,比gzip有着更高的压缩率。
[root@node1 ~]# bzip2 test3.txt # 源文档不保留
[root@node1 ~]# bzip2 -9 -c test3.txt > test3.txt.bz2 #用最佳的压缩比压缩,并保留原本的档案
[root@node1 ~]# xzcat test5.txt.xz #查看压缩文件内容
test1
格式
• Tar -参数 [args].....
参数:必选参数:
辅助参数:
额外参数:
# 打包时排除某个文件
tar cf 文件名.tar --exclude=路径/文件 路径
注:此处的路径前后需要保持保持一致,统一使用绝对路径或者相对路径打包:
cvf 打包并压缩
xvf 解压缩
两个不能同时用打包压缩 :cvf
作用:创建(非压缩的)打包文件,将指定的一个或多个文件或目录备份生成为一个指定的包文件
格式:
• tar cvf/cfv/-cvf 文件名.tar 要打包的目录或文件名
列出包文件中的文件列表
• tar t[v]f 包文件名作用:为节省存储空间,通常需要生成压缩格式的tar包文件,tar命令支持三种不同的压缩方式
tar czf/-czf 文件名.tar.gz 要打包压缩的目录或文件名……
tar cjf/-cjf 文件名.tar.bz2 要打包压缩的目录或文件名……
tar cjf/-cjf 文件名.tar.xz 要打包压缩的目录或文件名……
[root@node1 ~]# tar -cvf /root/target.tar.gz /etc/ #打包压缩
[root@node1 ~]# tar -xvf /root/target.tar.gz #解包将/etc下所有内容打包压缩到/root目录中
[root@node1 ~]# tar -cvf taret.tar.gz /etc
解压缩:
[root@node1 ~]# tar -xvf taretc.tar.gz
[root@node1 ~]# head -1 /etc/passwd #root从0开始
root:x:0:0:root:/root:/bin/bash
[root@node1 ~]# tail -2 /etc/passwd #普通账户从1000开始编号
zq:x:1000:1000:zq:/home/kxy:/bin/bash
格式:
id 账户名
[root@node1 ~]# id root
uid=0(root) gid=0(root) groups=0(root)
#用户id=0(root) 组id=0(root) 组=0(root)
useradd #添加用户
参数:
○ -u: 用户号:设置账号的UID,默认是已有账户的最大UID加1。如果同时有-o选项,则可以重复使用其他用户的标识号
○ -s :shell名: 指定账户登录后使用的shell,默认是bash.10
○ -g: 组名或GID号:为账户指定所属的基本组,该组在指定时必须已存在。
○ -e: YYYY-MM-DD: 设置用户的失效日期,此日期后将不能使用该账号。
○ -d:目录: 设定账户的家目录(默认为/home/用户名)。
示例:
[root@node1 ~]# useradd t1 #新建账户t1
[root@node1 ~]# tail -1 /etc/passwd
t1:x:1000:1000::/home/t1:/bin/bash#新建账户t2,指定UID为2001、登录Shell为/bin/bash,账号永不过期
[root@node1 ~]# useradd -u 2001 -s /bin/bash -e -1 t2新建账户t5,UID=3001, 工作组=t1 , 家目录=/t4
[root@node1 ~]# useradd t5 -u 3001 -g t1 -d /t4usermod 修改账户信息:
格式:
○ usermod -参数 账户名
常用参数 -c,-d,-m,-g,-G,-s,-u 等,意义与useradd命令中的参数相同
-l 新账户名:更改账户的名称,必须在该用户未登录的情况下才能使用
-L:锁定(暂停)用户账户,使其不能登录使用
-U:解锁用户账户
[root@node1 ~]# usermod test1 -l TEST1 -L
[root@node1 ~]# usermod TEST1 -Upasswd #账号设置密码
• 原则 :Linux的账户必须设置密码后,才能登录系统
• 格式 :passwd - 参数 账户名
• 参数
-d:清空指定用户的口令,与未设置口令的账户不同,未设置口令的账户无法登录系统,而口令为空的账户可以。
-e:使用户的账号密码立即过期,强迫用户下次登录时必须修改口令。
-i:口令过期后多少天停用账户。
-l:锁定(停用)用户账户。
-n:指定口令的最短存活期。
-x:指定密码的最长使用期限。
-u:解锁用户账户。
[root@node1 ~]# passwd -l t1 #锁定用户 test4 的密码
Locking password for user t1.
passwd: Success
[root@node1 ~]# passwd -u t1 #解锁用户 test4 的密码。
unLocking password for user t1.
passwd: Success注意:
密码不能为空
密码不要写成回文
可以使用以下命令设置密码
只有 root 用户才能指定用户名
echo 密码 | passwd --stdin 用户名
echo 密码 | passwd --stdin 用户名 > /dev/null #无信息提示
[root@node1 ~]# echo '1234' |passwd --stdin t1
Changing password for user t1.
passwd: all authentication tokens updated successfully.
[root@node1 ~]# echo '1234' |passwd --stdin t1 >/dev/nulluserdel #删除账号
格式
userdel 账户名
参数
-r:在删除该账户的同时,一并删除该账户对应的家目录
[root@node1 ~]# userdel -r t2groupadd #工作组管理
创建工作组
• 格式
○ groupadd -参数 工作组名
• 参数
-g:GID: 指定新工作组的GID,默认值是已有的最大的GID加1
-r:建立一个系统组账号,与-g不同时使用时,则分配一个1~999的GIDgpasswd #添加/删除组成员
• 格式
gpasswd -参数 账户 工作组
[root@node1 ~]# gpasswd -a test3 test1
正在将用户“t3”加入到“t1”组中groupdel #删除工作组
格式:
• groupdel 工作组名
示例
• 例1: 删除组group11
[root@server ~]# groupdel group11
注意
• 被删除的组若是基本组,则必须先删除引用该基本组的用户,然后再删除该基本组
显示目前登录到系统的用户,会从/var/run/utmp文件来获取信息
[root@node1 ~]# who
root 192.168.78.1:0 2024-02-03 13:17 (192.168.78.1:0)#查看登录次数最多的前十个账户
[root@node1 ~]# who | cut -d ' ' -f1 | sort | uniq -c | sort -rn |head
1 root[root@node1 ~]# who am I #列出当前的用户信息
root pts/0 2022-05-09 15:38 (192.168.78.1)[root@node1 ~]# who -u 显示当前每个用户的用户名、登录终端、登录时间、终端活动、进程和主机名
root pts/0 2024-02-03 15:38 . 1510 (192.168.78.1)
文件权限构成
• 权限针对三类对象定义
○ owner 所有者,缩写u
○ group 所属组,缩写g
○ other 其他人,缩写o
访问者三种权限:
r:4 w:2 x:1 7代表完整权限
rwxrwxrwx 代表完全开放
7 7 7rw-r--r--:644 #默认文件
[root@node1 ~]# ll
-rw-r--r-- 1 root root 18 Feb 2 15:51 f5rw-r--r--:644 #默认目录
[root@node1 ~]# ll
drwxr-xr-x 138 root root 12288 Feb 3 12:21 etc执行脚本一定要授权
[root@node1 ~]# touch fa.sh
[root@node1 ~]# vim fa.sh
[root@node1 ~]# ./fa.sh
bash: ./fa.sh: Permission denied #没有权限
[root@node1 ~]# ll fa.sh
-rw-r--r-- 1 root root 19 Feb 3 16:08 fa.sh
[root@node1 ~]# chmod +x fa.sh
[root@node1 ~]# ./fa.sh
hello world
格式:
#格式1
chmod [选项] [ugoa][+-=] [rwx]文件或目录...
# 格式2
chmod [选项] nnn 文件或目录...[root@node1 ~]# chmod 400 t3 #利用数字修改权限
[root@node1 ~]# ll t3
-r-------- 1 root root 0 Feb 2 20:25 t3[root@node1 ~]# vim f6.sh
[root@node1 ~]# chmod o+x f6.sh #o代表其他人,x代表执行权限
[root@node1 ~]# ll f6.sh
-rw-r--r-x 1 root root 19 Feb 3 16:14 f6.sh参数:
• -R: 递归修改指定目录下所有文件、子目录的权限
• ugoa: 表示权限设置所针对的用户类别,可以是其中字母中的一个或组合,u(user)表示文件或目录的属主(所有者); g(group)表示属组内的用户;o(others)表示其他用户; a(all)表示所有用广(即u+g+o)
• +或或=: 表示设置权限的操作动作,+代表添加;-代表取消,=表示只赋予给定的权限,并取消原有的权限。
• rwx: 用字符形式表示的所设置的权限,可以是其中一个字母或组合
• nnn: 用数字表示的权限递归修改
[root@node1 ~]# chmod -R 777 fe
[root@node1 ~]# ll fe
-rwxrwxrwx 1 root root 5 Feb 1 16:49 fe
作用
• 修改文件或目录的所有者和属组
格式
chown -参数 所有者:所属组 文件名或目录名
# 参数-R递归设置[root@node1 ~]# ll t7
-rw-r--r-- 1 root root 16 Feb 2 15:52 t7
[root@node1 ~]# chown xy:xy t7
[root@node1 ~]# ll t7
-rw-r--r-- 1 xy xy 16 Feb 2 15:53 t7特殊权限
概述
• 在Linux系统中,用户对文件或目录的访问权限除了r、w、x三种一般权限外,还有SETUID(SUID)、SET GID(SGID)、Sticky Bit(粘滞位)三种特殊权限,用于对文件或目录进行更加灵活方便的访问控制。
• SUID 权限的含义: 是为了让一般用户在执行某些程序的时候,在程序的运行期间,暂时获得该程序文件所属者的权限。SUID权限
使用场景
• 例如: student用户要更改自己的密码
• student 在执行 passwd 修改自己的密码时,其修改的密码,最终是需要保存到 /etc/shadow这个文件中,而这个文件的权限是 ---------,它的拥有者是 root ,也只有 root 可以”强制存储,其他用户连看都不行
· 可偏偏 student 去执行 passwd (/usr/bin/passwd),却可以更新自己的密码
这就是因为有s 权限的存在,当 s权限在拥有者的权限位上时,即如-rwsr-xr-x这样时,称为SUID。SUID 即 Set UID , UID 指的是拥有者的的D,而这个程序(usr/bin/passwd) 的拥有者为 (root)。[root@node1 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30952 Dec 28 13:43 /usr/bin/passwd
注意:
suid仅对二进制文件有效 在执行过程中,调用者会暂时获得该文件的所有者权限该权限只在程序执行的过程中有效
ACL权限管理命令
查看ACL权限
格式
getfacl 文件名
[root@node1 ~]# getfacl f5
# file: f5
# owner: root
# group: root
user::rw-
group::r--
other::r--设定ACL权限
格式:
· setfacl -参数 文件名
参数:
· -m:设定 ACL 权限
· 给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
· 给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名
· -x:删除指定的 ACL 权限;
· -b:删除所有的 ACL 权限;
· -d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限;
· -k:删除默认 ACL 权限;
· -R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效[root@node1 ~]# groupadd QQgroup
[root@node1 ~]# mkdir /project
[root@node1 ~]# ll -d /project/
drwxr-xr-x 2 root root 4096 Feb 3 16:38 /project/
[root@node1 ~]# chown root:QQgroup /project/
[root@node1 ~]# ll -d /project/
drwxr-xr-x 2 root QQgroup 4096 Feb 3 16:38 /project/
[root@node1 ~]# useradd haha
[root@node1 ~]# setfacl -m u:haha:r-x /project/
[root@node1 ~]# ll -d /project/
drwxr-xr-x+ 2 root QQgroup 4096 Feb 3 16:38 /project/ACL一个文件可以对不同账户设置不同的权限
[root@node1 ~]# getfacl /project/
getfacl: Removing leading '/' from absolute path names
# file: project/
# owner: root
# group: QQgroup
user::rwx
user:haha:r-x
group::r-x
mask::r-x删除ACL控制访问列表
[root@node1 ~]# ll -d /project/
drwxr-xr-x+ 2 root QQgroup 4096 Feb 3 16:38 /project/
[root@node1 ~]# setfacl -b /project/
[root@node1 ~]# ll -d /project/
drwxr-xr-x 2 root QQgroup 4096 Feb 3 16:38 /project/
nmcli :
#可以实现创建,显示,编辑,删除,激活和停用网络连接以及控制和显示网络设备状态等查看网卡信息
[root@node1 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens160 bfb5941d-3305-446e-9d15-aa606199cb6e ethernet ens160
当前网络连接 唯一编号 有线连接 网卡[root@node1 ~]# nmcli connection show ens160 #查看网络连接信息
激活和关闭网络连接
[root@node1 ~]# nmcli connection up ens160 #激活网卡
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@node1 ~]# nmcli connection down ens160 #关闭网络连接添加新网络连接
[root@node1 ~]# nmcli connection add type ethernet ifname ens160 con-name ens161 autoconnect yes
Connection 'ens161' (15003e47-ead6-4f25-b6a7-08ad5858a39d) successfully added.
#网络类型,连接网卡,新的网卡名称,是否启动动态路由
[root@node1 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens160 bfb5941d-3305-446e-9d15-aa606199cb6e ethernet ens160
ens161 15003e47-ead6-4f25-b6a7-08ad5858a39d ethernet --[root@node1 ~]# nmcli connection up ens161 #激活
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)[root@node1 ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens161 15003e47-ead6-4f25-b6a7-08ad5858a39d ethernet ens160
virbr0 98a55b82-fcdc-4a71-9cb9-2a71108beca8 bridge virbr0
ens160 bfb5941d-3305-446e-9d15-aa606199cb6e ethernet --配置静态ip
IP地址: 192.168.78.125/24
网关:192.168.78.2
DNS:114.114.114.114
[root@node1 ~]# nmcli connection modify ens160 +ipv4.addresses 192.168.78.125/24 ipv4.gateway 192.168.78.2 ipv4.dns 114.114.114.114 ipv4.method manual
#选择网卡,配置网卡地址,网关地址,DNS地址,手动获取(可以写在前面)添加新的ip地址
[root@node1 ~]# nmcli connection modify ens160 +ipv4.addresses 192.168.78.124/24
[root@node1 ~]# nmcli connection up ens160 #激活删除网络连接
[root@node1 ~]# nmcli connection delete ens161 #删除网卡
格式:
• wget -参数 URL
参数:
• -P 下载到指定目录
• -t 最大尝试次数
• -b 后台下载模式
• -c 断点续传
• -p 下载页面内所有资源,包括图片、视频等
• -r 递归下载
[root@node1 ~]# wget https://dldir1.qq.com/qqfile/qq/QQNT/2355235c/linuxqq_3.1.1-
#curl命令是一个网络工具,其主要作用是通过http、https、ftp等方式下载/上传文件
[root@node1 ~]# curl www.baidu.com
格式:
• rpm - 参数 -软件包参数:
示例:
安装nginx网站
[root@node1 ~]# wget http://nginx.org/packages/rhel/9/x86_64/RPMS/nginx-1.24.0-1.el9.ngx.x86_64.rpm
[root@node1 ~]# rpm -ivh nginx-1.24.0-1.el9.ngx.x86_64.rpm卸载
[root@node1 ~]# rpm -evh tree
准备中... ################################# [100%]
正在清理/删除...
1:tree-1.8.0-10.el9 ################################# [100%]rpm查询功能
• rpm –q 包名 # -q常与下面参数组合使用
[root@node1 ~]# rpm -qa | grep gcc #可以用来查询
libgcc-10.3.1-49.oe2203sp3.x86_64
gcc-10.3.1-49.oe2203sp3.x86_64
gcc-gdb-plugin-10.3.1-49.oe2203sp3.x86_64
gcc-gfortran-10.3.1-49.oe2203sp3.x86_64
gcc-c++-10.3.1-49.oe2203sp3.x86_64
[root@node1 ~]# yum list | grep ansible #查看是否有这个软件
[root@node1 ~]# yum install gcc -y #安装软件[root@node1 ~]# yum provides 文件名 #查找指定的文件属于哪个包
[root@node1 ~]# yum provides ansible
[root@node1 ~]# yum whatprovides /etc/fstab #查看这个文件是由那个包提供的
概念
程序、进程、线程
• 程序: 二进制文件,文件存储在磁盘中,例如/usr/bin/目录下
• 进程:进程是已启动的可执行程序的运行实例
• 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程
• 线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条 线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
• 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有
• 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。
进程分类:
格式:
○ ps -参数
参数:
• -a :显示所有用户的进程
• -u :显示用户名和启动时间
• -x :显示 没有控制终端的进程
• -e :显示所有进程,包括没有控制终端的进程
• -l :长格式显示
• -w:宽行显示,可以使用多个 w 进行加宽显示
• -f:做一个更完整的输出
[root@node1 ~]# ps #显示进程
PID TTY TIME CMD
3256 pts/0 00:00:00 bash
4193 pts/0 00:00:00 ps[root@node1 ~]# ps -l # 查看当前用户的进程
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 3256 3229 0 80 0 - 6308 do_wai pts/0 00:00:00 bash
4 R 0 4234 3256 0 80 0 - 6548 - pts/0 00:00:00 ps[root@node1 ~]# ps aux | grep sshd
格式
• top [-d 数字] | [-bnp]参数
• -d:后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒
• -b:以批次的方式执行top,还有更多的参数可用。通常会搭配数据流重定向来将批处理的结果输出为文件。
• -n:与-b搭配,进行几次top的输出结果
• -i:不显示闲置或者僵死的进程信息
• -c:显示进程的整个命令路径,而不是只显示命令名称
• -s:使top命令在安全模式下运行,此时top的交互式指令被取消,避免潜在危险
• -p:指定某些个PID来进行查看检测
• 格式
kill 进程名/pid
killall 进程名/pid
kill -9 文件名
格式:
lsblk 参数 设备名
root@node1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
sdd 8 :48 0 20G 0 disk
sr0 11:0 1 101.7M 0 rom
sr1 11:1 1 8.4G 0 rom
nvme0n1 259:0 0 25G 0 disk
├─nvme0n1p1 259:1 0 381M 0 part /boot
└─nvme0n1p2 259:2 0 24.6G 0 part
├─rhel-root 253:0 0 20.9G 0 lvm /
└─rhel-swap 253:1 0 3.7G 0 lvm [SWAP]
显示内容分析
NAME :设备名称,默认省略前导/dev 目录名
MAJ:MIN :主要:次要 设备代码
RM :是否可以卸载
SIZE : 容量
RO :是否为 只读
TYPE : 设备类别(磁盘、分区、光盘等)
MOUNTPOINT :挂载点参数 :
• -d :仅列出硬盘本身信息,不显示分区信息
• -f :列出磁盘的内的文件系统名称
• -i : 使用ASCII码格式输出信息
• -t :显示磁盘的详细信息
• -p :显示设备完整名称
[root@server ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。设备不包含可识别的分区表。
创建了一个磁盘标识符为 0xb7f70634 的新 DOS 磁盘标签。命令(输入 m 获取帮助):n
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1): 1
第一个扇区 (2048-41943039, 默认 2048): #第一个扇区一般不设
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): +2G #最后一个扇区:输入容量+xG创建了一个新分区 1,类型为“Linux”,大小为 2 GiB。
命令(输入 m 获取帮助):p
Disk /dev/sda:20 GiB,21474836480 字节,41943040 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xb7f70634设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 2048 4196351 4194304 2G 83 Linux
命令(输入 m 获取帮助):w
分区表已调整。
• 格式化是对分区建立文件系统,文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构:即在存储设备上组织文件的方法
格式化命令:
mkfs.xfs -参数硬盘分区名
-参数硬盘分区名兔但售板窗般 mkfs .ext4
参数
• -f:强制格式化,已存在文件系统时需要使用
• -c:建立文件系统前先检查坏块。2
• -v:输出建立文件系统的详细信息
扩展分区不可以格式化示例:
[root@server ~]# mkfs.xfs /dev/sda1
meta-data=/dev/sda1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
UUID
• UUID: 全局单一标识符(Universally Unique dentifier),Linux系统会给所有设备分配一个唯一的UUID值,以方便挂载
格式
• blkid 设备名[root@server ~]# blkid /dev/sda3
/dev/sda3: UUID="caed79de-3ce7-4d58-996b-38bef7fee8b5" TYPE="ext4" PARTUUID="b7f70634-03"
概念
• mount point: 挂载点,是一个目录,该目录是进入磁盘分区 (文件系统)的入口。
• 挂载:将一个分区或者设备挂载至挂载点目录,建立连接,通过挂载点目录进入分区空间。
• 挂载:将一个分区或者设备挂载至挂载点目录,建立连接,通过挂载点目录进入分区空间
格式
• mount [-t 文件系统类型] 设备名 挂载点目录
参数:
• -a: 依照配置文件/etc/fstab的数据将所有未挂载的磁盘都挂载上来
• -t:指定文件系统类型
• -o 特殊设备选项: 挂载设备时使用逗号分割输入额外参数示例:
[root@server ~]# mkdir /msda1
[root@server ~]# mount /dev/sda1 /msda1/
[root@server ~]# lsblk /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 2G 0 part /msda1
[root@server ~]# mkdir /msda2
[root@server ~]# blkid /dev/sda2
/dev/sda2: UUID="b8b916b9-7d0a-47fb-9877-1148f322c41e" TYPE="xfs" PARTUUID="b7f70634-02"
[root@server ~]# mount UUID="b8b916b9-7d0a-47fb-9877-1148f322c41e"/msda2 #通过UUID挂载
[root@server ~]# lsblk /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 2G 0 part /msda1
├─sda2 8:2 0 3G 0 part /msda2
注意:
• Linux的硬盘挂载呈树状
• 单一文件系统不应该被重复挂载在不同的挂载点(目录)中
• 单一目录不应该重复挂载多个文件系统
作为挂载点的目录,应为空目录,否则原有数据会隐藏
作用 :
• 卸载分区,要移除USB磁盘、U盘、光盘和硬盘时,需要先卸载
格式:
• umount 参数 设备名称[挂载点]
示例:
[root@server ~]# umount /msda3
[root@server ~]# umount /dev/sda1
注意 :
若正使用文件系统,则应使用cd命令离开该目录后再卸载开机挂载
• 由于mount纳手动挂载,重启后就会卸载,则修改/etc/fstab配置文件,实现开机自动挂载
• 配置文件分析
○ 路径: /etc/fstab
[root@server ~]# vim /etc/fstab
/dev/sda1 /msda1 xfs defaults 0 0
/dev/sda2 /msda2 xfs defaults 0 0[root@server ~]# mount -a #检测是否有报错
[root@server ~]# reboot
[root@server ~]# lsblk /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 2G 0 part /msda1
├─sda2 8:2 0 3G 0 part /msda2
• swap分区: 类似于Windows系统虚拟内存的功能,将一部分硬盘空间虚拟成内存来使用,从而解决内存容量不足的情况,因为swap毕竟是用硬盘资源虚拟的,所以速度上比真实物理内存要慢
查看:
[root@server ~]# free -h #显示系统内存的使用情况
[root@server ~]# mkswap /dev/sdd1
正在设置交换空间版本 1,大小 = 2 GiB (2147479552 个字节)
无标签,UUID=97c37739-60f8-421f-a8d6-69922e7b8d3c
/dev/sdd1 swap swap defaults 0 0
• 添加过程:新建分区->格式化该分区->启用新的swap->查
看系统信息->挂载
• 大文件添加虚拟内存并开机启动
[root@server ~]# dd if=/dev/zero of=/swapdev count=2 bs=1G
[root@server ~]# mkswap /swapdev
[root@server ~]# chmod 600 /swapdev
[root@server ~]# vim /etc/fstab
/swapdev swap swap defaults 0 0
[root@server ~]# swapon /swapdev #启用
格式:
df -参数 目录或文件名
参数:
• -a:列出所有的文件系统,包括系统特有的/proc等文件系
• 统
• -k:以KB的容量显示各文件系统
• -m:以MB的容量显示各文件系统
• -h:以人们较易阅读的GB,MB,KB等格式自行显示
• -H:以M=1000K替代M=1024K的进位方式
• -T:连同该分区的文件系统名称(例如ext3)也列出
• -i:不用硬盘容量,而以inode的数量来显示
注意:
• 由于df主要读取的数据几乎都是针对整个文件系统,因此
读取的范围主要是在Super block内的信息,所以这个命令
显示结果的速度非常快速。
产生原因:
• 硬盘分区或部署为RAID后在修改分区大小时就非常不容易,此时用户随着实际的需求变化而动态调整硬盘分区大小时受到限制,无灵活性
• LVM (Logical Volume Manager ) 允许用户对硬盘资源进行动态调整LVM基本概念:
• 物理卷 (physicalvolume) : 简称PV,物理卷可以是整个硬盘、硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质 (如分区、磁盘等)比较,却包含有与LVM相关的管理参数
• 卷组(Volume Group) : 简称VG,可以看成单独的逻辑磁盘,建立在PV之上,一个卷组中至少要包括一个PV,在卷组建立之后可以动态的添加PV到卷组中。卷组的名称可以自定义
• 逻辑卷 (logicalvolume) : 简称LV,相当于物理分区。逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态的扩展或缩小空间。系统中的多个逻辑卷,可以属于同一个卷组,也可以属于不同的多个卷组部署逻辑卷
• -l :表示以PE物理卷基本存储单位4MB为单位划分,给出4MB的倍数
• -L :直接给出容量,如150MB,注意实际容量趋近于150MB
• -s : 指定vg物理卷大小
• -n: 新建
[root@server ~]# pvcreate /dev/sda /dev/sdb #创建物理卷
Physical volume "/dev/sda" successfully created.
Physical volume "/dev/sdb" successfully created.
[root@server ~]# vgcreate VG1 /dev/sda /dev/sdb #创建卷组/dev/VG1
Volume group "VG1" successfully created
[root@server ~]# vgdisplay /dev/VG1 #查看信息
[root@server ~]# lvcreate -n lv1 -L 150M VG1 #创建逻辑卷
Rounding up size to full physical extent 152.00 MiB Logical volume "lv1" created
[root@server ~]# lvdisplay /dev/VG1/lv1 #查看信息
[root@server ~]# mkfs.xfs /dev/VG1/lv1 #格式化
[root@server ~]# mkdir /LVM1 #创建挂载目录
[root@server ~]# mount /dev/VG1/lv1 /LVM1 #挂载
[root@server ~]# vim /etc/fstab #配置开机挂载
/dev/VG1/lv1 /LVM1 xfs defaults 0 0
[root@server ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE
MOUNTPOINTS
sda 8:0 0 20G 0 disk
└─VG1-lv1 253:2 0 152M 0 lvm /LVM1
[root@server ~]# lvcreate -n lv2 -l 50 /dev/VG1 #VG1卷组划分出200MB空间的逻辑卷并 格式化挂载使用
Logical volume "lv2" created.
[root@server ~]# lvdisplay /dev/VG1/lv2 #查看
[root@server ~]# mkfs.xfs /dev/VG1/lv2 #格式化
[root@server ~]# mkdir /LVM2
[root@server ~]# vim /etc/fstab
/dev/VG1/lv2 /LVM2 xfs defaults 0 0
[root@server ~]# mount -a调整逻辑卷大小
[root@server ~]# pvcreate /dev/sdc #用sdc对sda sdb扩容
Physical volume "/dev/sdc" successfully created.
[root@server ~]# vgextend /dev/VG1 /dev/sdc
Volume group "VG1" successfully extended
[root@server ~]# umount /dev/VG1/lv1 #卸载
[root@server ~]# lvextend +300MB /dev/VG1/lv1 #将lv1逻辑卷扩容到300MB
Size of logical volume VG1/lv1 changed from 152.00 MiB (38 extents) to 300.00 MiB (75 extents).
Logical volume VG1/lv1 successfully resized.
[root@server ~]# lvextend -L +100mb /dev/VG1/lv1 #使用 -L +100M增加了100M
Size of logical volume VG1/lv1 changed from 300.00 MiB (75 extents) to 400.00 MiB (100 extents).
Logical volume VG1/lv1 successfully resized.
[root@server ~]# mount /dev/VG1/lv1 /LVM1/
[root@server ~]# df -h | grep lv1
/dev/mapper/VG1-lv1 147M 8.9M 138M 7% /LVM1 #文件系统只能管理150MB
[root@server ~]# xfs_growfs /dev/VG1/lv1 #对文件系统扩容
[root@server ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 872M 0 872M 0% /dev/shm
tmpfs 349M 5.7M 344M 2% /run
/dev/mapper/rhel-root 21G 4.2G 17G 20% /
/dev/nvme0n1p1 376M 267M 109M 72% /boot
tmpfs 175M 52K 175M 1% /run/user/42
tmpfs 175M 36K 175M 1% /run/user/0
/dev/mapper/VG1-lv1 395M 11M 384M 3% /LVM1
[root@server ~]# lvreduce -L 100MB /dev/VG1/lv2 #对逻辑卷缩容有数据丢失风险
WARNING: Reducing active logical volume to 100.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce VG1/lv2? [y/n]: y
Size of logical volume VG1/lv2 changed from 200.00 MiB (50 extents) to 100.00 MiB (25 extents).
Logical volume VG1/lv2 successfully resized