一、Linux文件处理命令
-
命令名称:ls (显示目录文件)
命令格式:命令 [-选项] [参数]
-
ls -a 显示所有文件,包括隐藏文件
-
ls -l 显示详细信息
[root@localhost ~]# ll -rw-------. 1 root root 1761 7月 24 02:29 anaconda-ks.cfg
-
第1个字符:文件类型
-
-:普通文件
-
b:块设备文件(如硬盘U盘等)
-
d:目录文件
-
-
2~10个字符:文件权限
-
2~4: 文件所有者权限
-
5~7: 文件所属组权限
-
8~10:其他用户(其他人)
-
r:读取权限
-
w:修改权限
-
x:执行权限
-
-
-
. :表示SELinux
-
1:文件链接数量(硬链接)
-
连接相同iNode的不同文件名数量
-
-
root:文件所有者(默认为文件创建用户user)
-
root:文件所属组(默认为文件创建用户所在的当前组group)
-
1761:文件大小,单位为B
-
文件名:文件内容的概括和缩写
-
-
ls -d 查看目录属性(ls -ld显示当前目录属性)
-
ls -h 文件大小显示为常见单位
-
ls -i 查询文件的INode号
数据查找:文件名——>Inode——>block
-
ls -R 递归显示目录及其子目录
-
ls -n 显示文件的UID(用户id)和GID(组id)
PS:磁盘分区
-
/boot:512MB
-
swap:
-
内存小于4GB,内存2倍
-
内存大于4GB,内存等大
-
内存大于16GB,可为0(但不建议)
-
-
/(分区):物理上实际存在
/(目录):逻辑上一切硬盘分区的起始点
-
PS:判断目录是否为根分区:排除法
-
-
命令名称:touch (创建空文件/更新修改和访问时间)
命令格式:touch 文件名
Linux文件命名规则:
-
除"/"外,所有字符均合法
-
部分字符最好不用(可用- _ .)
-
普通文件不使用.开头,除非创建隐藏文件
-
Linux严格区分大小写
-
长度不可大于255个字符
-
PS:终端名称
-
本地终端:/dev/ttyn, n为数字,本地字符界面登录(默认1~6)
-
虚拟终端:/dev/pts/n,n为数字,本地图形化及远程连接
-
-
-
命令名称:mkdir (创建新目录)
命令格式:mkdir [-选项] [参数]
-
-v 显示创建过程
-
-p 递归创建
-
-
命令名称:cd (切换目录)
命令格式:cd 目录
-
cd ~ 进入当前用户家目录
-
cd - 进入上次目录
-
cd .. 返回上一级目录
-
cd ../.. 返回上两级目录(依次类推)
-
cd . 进入当前目录
绝对路径:以根(/)为起始点的路径表达方式
相对路径:不以(/)为起始点的路径表达方式
-
-
命令名称:pwd (显示当前所在目录)
-
命令名称:tree (显示目录树)
命令格式:tree 目录
-
-d 只显示目录不显示文件
-
CentOS7任何方式均需安装,挂载镜像安装
-
挂载光盘
-
mount -t iso9660 /dev/sr0 /mnt
-
挂载命令 文件系统类型 设备文件 挂载点
-
-
安装rpm包
-
rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
-
i:install v:详细信息 h:"#"显示进度
-
-
6.5.pstree
-
格式:pstree [-选项]
-
-A:进程数之间的链接一ASCII码字符连接(换个外观,没大用)
-
-p:同时列出每个进程的PID
-
-u:同时列出每个进程的所属账号名称
-
-
-
命令名称:cp (复制、复制并改名)
命令格式:cp 源文件或目录 目标目录(/新文件名)
-
-r:复制目录
-
-p:保留文件属性(创建/修改时间等)
-
-a:相当于-rp
-
-
命令名称:mv (剪切、改名)
-
命令名称:rm (删除)
-
-r:删除目录(递归)
-
-f:强制删除
-
-
命令名称:rmdir (删除空目录)(同mkdir)
-
-p:递归删除目录
-
-v:显示执行过程
-
-
命令名称:cat (显示文件内容)
格式:cat 文件名
-
-n:列出行号
-
cat file1 file2 ... 显示多文件内容
-
cat多文件内容合并,按先后顺序显示
(内容超过一页只显示最后一页:字符界面)
-
-
命令名称:more (分页显示文件内容)
-
b: 向上翻页(打开文件时使用)
-
空格: 向下翻页
-
Enter:换行
-
q/Q: 退出
-
-
命令名称:less (分页显示文件内容)
格式:less 文件名
-
操作方法与more相同
-
可执行vim中的查找操作
-
-
命令名称:head (默认查看文件头10行)
-
-n:指定查看头n行
-
-
命令名称:tail (默认查看文件后10行)
-
-n:指定查看后n行
-
-f: 持续显示文件变化情况(新内容产生)
-
-
命令名称:ln (生成链接文件)
格式:ln 源文件/目录 链接
-
ln:创建硬链接
-
硬链接:多个文件、名称、保存路径均不相同,但Inode相同
-
文件创建硬链接后,链接数量+1。每删除一个文件-1
-
互为硬链接的文件中,修改其中一个其余也会变化
-
硬链接无法跨分区创建
-
目录无法创建硬链接
-
-
-
ln -s:创建软链接
-
软链接(符号链接):
-
软链接和源文件的Inode不同
-
软链接文件类型为$l$(-dx),默认所有用户权限全开
-
修改任一软链接或源文件,其余文件均会变化
-
删除软链接不影响源文件,删除源文件软链接失效
-
软链接可跨分区创建
-
创建软链接建议使用绝对路径
-
目录可创建软链接
-
-
文件系统
-
block:文件系统中最小存储单元,ext4、xfs中默认4KB,分为存储文件数据的data block和存储目录数据的directory block
-
inode:“索引节点”,每个inode对应一个文件或目录,记录其大小、所占用的block及目录directory block信息
-
Inode Bitmap:“inode位图”,用二进制记录inode使用情况
-
Block Bitmap: “块位图”,用二进制记录block使用情况
PS:history命令:显示历史输入命令
-
二、权限管理命令
-
PS:-rw-r-xrwx
-
第一位:文件类型
-
- 普通文件
-
d 目录文件
-
$l$ 链接文件
-
b block文件
-
c 字符设备文件
-
s 套接字
-
p 管道
-
-
后9位为权限
读 写 执行 r w x 4 2 1 -
文件所有者:u 文件所属组:g 其他用户:o(other)
-
-
chmod (修改文件权限)
命令格式:
-
chmod u+x 文件
-
chmod g+w,o-w 文件
-
chmod u=rwx 文件
-
chmod 644 文件
-
-
chown (修改文件或目录的所有者、所属组)
命令格式:
-
chown user1 文件:修改所有者
-
chown user1:user2 文件:全改
-
chown user1: 文件:全改成user1
-
chown :user1 文件:修改所属组
-
-
chgrp (改变文件或目录所属组)(不重要)
格式:chgrp user1 文件
-
umask (显示和设置掩码值)(创建文件或目录的缺省权限)(临时生效)
root用户默认值0022
-
目录最大权限=777-022=755
-
文件最大权限=777-111-022=644
-
三、查找命令
-
which (查看命令文件位置和命令可能出现的别名)
-
命令所在绝对路径
-
whereis (查找命令及帮助文档所在位置)
-
locate (按文件/目录名查找,按数据库查找)(从locate数据库中查找)
-
updatedb:强制创建或更新数据库(解决数据不同步问题)
-
模糊查找、包含查找,字符匹配
-
PS:带路径查找会更准确
-
-
find (条件查询文件或目录)
-
-name:根据文件名查找
-
例:find / -name "a*"
-
通配符:外加引号
-
* :任意多个字符
-
?: 任意一个字符
-
[] :指定范围值
-
-
-
-size:根据大小查找
-
find ./ -size -10k: 查找小于10k的文件或目录
-
find ./ -size -10M:查找小于10k的文件或目录
-
find ./ -size +10G:查找大于10k的文件或目录
-
-
-user:根据所有者查找
-
find / -user root:查找/下所有root用户的文件
-
-
-group:根据所属组查找
-
find / -group gaomingyue:查找/下所有gaomingyue组的文件
-
-
-perm:根据文件权限查找
-
find /boot -perm 644
-
-
-时间查找
属性被修该过 所有者、所属组、权限 被访问(查看)过 内容被修改过 c(change) a(access) m(modify) 按天数 ctime atime mtime 按分钟 cmin amin mmin -
find /etc -mmin -120:120分钟内被修改过内容的文件
-
find /etc -ctime +7: 7天之外(前)被修改过属性的文件
-
-
-type:根据文件类型查找
-
find / -type f:二进制文件(普通文件)
-
find / -type l:软链接
-
find / -type d: 目录
-
-
逻辑连接符
-
-a(and)
-
-o(or)
-
例:find /root -size +1k -a -size -1M
-
-
命令执行连接符(对找到的文件进一步处理)
-
find …… -exec 命令 {} \;
-
ps:";",语句结束
-
ps:"\",转义符,\ls可取消别名
-
-
-
-inum (根据inode查询文件)
-
find ./ -inum 16848536:找到所有硬链接
-
后接 -exec rm {} \; 彻底删除文件
-
-
-
-
grep 字符串 文件名 (在文件中查找符合条件的字符串所在行)(模糊查找)(过滤)
-
-v:反向选择 找到不符合条件的
-
-$I$:忽略大小写
-
-
管道符" | "
-
命令1 | 命令2 将命令1的输出作为命令2的标准输入
-
find / -name "aa*" | xargs ls -l
xargs:find的结果是一个整体,通过管道符无法被ls等命令识别,xargs用于按行分割
# "|"使用{} find / -name "aa*" | xargs -i cp {} /root
-
PS: ps aux | grep '字符' 过滤进程
命令1结果逐条传递给命令2,故命令2(grep)进程也在执行
-
四、帮助命令
-
man 命令名:(查看命令的帮助)
-
man -f 命令:查看命令有哪些级别(whereis结果相同)的帮助,需先执行mandb
-
-
type 命令:查看命令类型(内嵌命令/外部命令)
-
内部命令:cd、pwd、echo等(存于内存中)
-
外部命令:ls、vi等
-
优先显示别名,内建命令显示内嵌,外部命令显示路径
-
PS:内核:管理、控制硬件
shell:命令解释器(如bash)
-
-
help 内部命令:(查看内部的帮助信息)
-
命令 --help:(查看命令常见选项)
-
info 命令:(同man,更详细)
-
空格:翻页
-
回车:进入子帮助页面(带有*号标记)
-
u:进入上层页面
-
n:进入下一个帮助小节
-
p:进入上一个帮助小节
-
q:退出
-
五、网络命令
-
ping(测网通不通)
-
-c n:指定ping n次
-
ifconfig(查询本机网络信息)
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.24.3 netmask 255.255.255.0 broadcast 192.168.24.255
inet6 fe80::a45:62e3:61dc:8453 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:e0:c0:a1 txqueuelen 1000 (Ethernet) RX packets 2178 bytes 2213796 (2.1 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 630 bytes 136630 (133.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
-
第一行:
-
UP:网卡开启状态
-
BROADCAST:广播
-
RUNNING:网线处于连接状态
-
MULTICAST:支持组播
-
mtu 1500:最大传输单元为1500B
-
-
第二行:该网卡的ip、子网掩码、广播地址
-
第三行:IPv6配置信息
-
第四行:网卡的MAC地址
-
ether:以太网
-
txqueuelen 1000:传输队列长度
-
-
第五六行:网卡接收数据包的统计信息和接收错误的统计信息
-
第七八行:网卡发送数据包的统计信息和发送错误的统计信息
-
相关配置修改:
-
修改网卡IP地址(永久)ifcfg-ens33
修改添加以下内容: BOOTPROTO=static #静态IP:static/none 自动获取:dhcp ONBOOT=yes #设置成开机自动连接 IPADDR=192.168.50.242 #IP NETMASK=255.255.255.0 #掩码 PREFIX=24 #掩码,二选一 GATEWAY=192.168.50.1 #网关 DNS1=114.114.114.114 #DNS
-
修改完成后重启所有网卡生效:systemctl restart network
-
修改网卡配置文件后(重启指定网卡)
-
CentOS6:
-
ifdown eth0
-
ifup eth0
-
-
CentOS7:
-
nmcli con load 网卡名(重载配置文件)
-
nmcli con up 网卡名(启动)
-
nmcli con down 网卡名(停止,重启网卡不用)
-
-
-
-
添加多个临时IP地址
-
ifconfig ens33:0 新IP0 (netmask 子网掩码) up
-
ifconfig ens36:1 新IP1 (netmask 子网掩码) up
删除临时IP地址
-
ifconfig ens33:0 del 新IP0
PS:临时IP依旧依赖于现有网卡ens33,命名格式只能为"ens33:n"
-
-
添加真实网卡(新网卡无配置文件)
nmcli connection add con-name 网卡名 type 接口类型 ifname 网卡名(网卡名为系统自动识别的网卡名)
nmcli connection add con-name ens36 type ethernet ifname ens36
-
-
-
w (查询当前登录服务器的用户)
-
第一行:系统时间、系统持续运行时间、用户数、平均负载
-
第二行:用户名、登录终端、来源IP、登录时间、用户闲置时间、所有进程占用CPU时间、当前进程占CPU时间、用户当前操作
-
-
who (查询登录用户:类似w的简化版)
-
last (列出登录系统的相关信息)
-
Linux用户:
-
root用户/根用户/超级用户
-
普通用户
-
管理员用户
-
系统用户(服务用户):受shell类型限制无法登录系统,但可以使用系统资源
-
-
-
lastlog (显示所有账号最后一次登录的时间)
-
write 用户名 [终端号] (给在线某用户写信)
write root pts/1 输入内容 Ctrl + d 保存发送
-
wall (对所有在线用户广播)
-
wall 字符串
-
同write格式
-
-
mail (邮件命令)
发信: mail 用户名 标题 内容(Ctrl+Backspace删除) Ctrl + d 结束并发送 收信: mail …… h:列出邮件列表 邮件序号:查看对应邮件 q:退出
-
netstat (查看网络连接状态)
端口号 | 服务 |
---|---|
20 21 | ftp服务 |
22 | ssh服务 |
23 | telnet |
25 | SMTP,发信 |
110 | POP3,收信 |
80 | http |
3306 | MySQL端口 |
3389 | Windows终端端口 |
PS:/etc/services:所有常见端口
netstat -tlun:查看本机所有监听的端口
-
-t:TCP协议
-
-u:UDP协议
-
-$l$:监听
-
-n:以IP形式显示信息
-
-a:显示所有选项
-
-p:显示建立相关连接的程序名
六、关机和重启命令
-
init常见运行级别 对应功能 init 0 关机 init 1 字符界面。单用户模式,可用于系统故障修复 init 2 字符界面,某些网络功能未开启 init 3 系统运行为字符级别(界面) init 4 保留 init 5 系统运行为图形化级别(界面) init 6 重启系统
-
关机
-
poweroff 掉电关机
-
shutdown -h now 立刻关机,now可改成时间
# 10分钟后关机,广播提醒,每分钟提醒一次 shutdown -h +10 "attention"
-
-
重启:
-
shutdown -r now
-
reboot
-
-
数据同步
-
sync:内存数据写入硬盘。非正常关机时手动执行
-
缓冲:文件先在内存缓冲区中存储一定时间或一定量,再写入硬盘
-
缓存:已读过的文件暂存在缓存,方便下次读取
-
七、挂载命令
-
mount (查询系统中已挂载的设备)
-
常见的存储设备:
-
/dev/sda1 第一个scsi硬盘的第1个分区
分区原因:分门别类保存数据
格式化:写入FS,让FS识别扇区,转换成逻辑上的inode和block
挂载:识别设备的FS
-
/dev/cdrom 光盘
-
/dev/sr0 光盘(cdrom是sr0的软链接)
-
-
挂载格式:mount -t FS类型 -o 特殊选项 设备文件名 挂载点
-t 文件系统:按文件系统类型指定设备挂载的类型
-o 特殊选项:指定挂载的额外选项,见下表
参数 参数说明 remount 重新挂载,可用于修改指定权限 atime/noatime 更新访问时间/不更新访问时间。默认访问分区文件时更新(并发访问量过大时可设置为noatime) async/sync 异步/同步,默认为异步 rw/ro 读写/只读,分区本身是否有读写权限,默认rw suid/nosuid 是否具有SUID权限。默认有SUID和GUID exec/noexec 是否可执行。分区内文件是否可执行,默认exec user/nouser 是否允许普通用户挂载。默认仅root可以 auto/noauto 自动/手动。mount -a执行时自动安装/etc/fstab,默认自动 defaults 默认值,rw+suid+dev+exec+auto+nouser+async usrquota 写入文件系统支持用户磁盘配额,默认不支持 grpquota 写入文件系统支持组磁盘配额,默认不支持 prjquota 写入文件系统支持目录磁盘配额,默认不支持
-
mount 查看挂载信息
#可搭配grep使用: mount | grep /boot
-
挂载硬盘分区、移动硬盘
mkdir /mnt/disk1 #创建挂载点 mount /dev/sdb1 /mnt/disk1 #挂载设备
-
挂载光盘
mount -t iso9660 /dev/sr0 /mnt/cdrom
-
挂载U盘
fdiks -l #查看当前系统下的存储设备 mount -t vfat /dev/sdb1 /mnt/usb # fat32格式U盘挂载方式 -t vfat fat32 -t fat fat16
Linux默认不识别NTFS和EXFAT,需安装对应的包
虚拟机USB编辑器需更改为对应的接口代数:USB3.1
-
挂载.iso文件
mount -o loop /root/CentOS…….iso /mnt/
loop:让文件以块设备方式挂载
-
卸载
-
umount 设备名/挂载点
-
-
-
挂载注意事项:
-
同一个FS不应重复挂载在不同挂载点
-
同一目录不应重复挂载多个FS
-
挂载点须为空目录
-
八、打包压缩
打包:多个小文件打包后可能比原先更大,多个大文件打包后可能更小
压缩: 110001010101 —压缩—> 1(2)0(2)01(4) —解压—> 110001010101
-
tar:文件的归档(打包)和解压缩
-
好处:节约硬盘资源,加快文件传输速率
-
用法:tar [选项] 压缩后生成的文件 打包文件
-
参数:
-
-c:创建文件,打包、压缩
-
-x:提取、解压还原文件
-
-v:显示执行详细过程
-
-f: 指定备份文件,必写项
-
-t:列出压缩包中文件,不解包查看内容
-
-C: 指定解压位置
-
# 例1:对/boot/grub目录打包并解包 # 归档 tar -cvf ./grub.tar /boot/grub tar cvf ./grub.tar /boot/grub tar:删除开头的"/" /boot/grub /boot/grub/splash.xpm.gz # 解包及解压缩 tar -xvf ./grub.tar tar:删除开头的"/" #防止绝对路径覆盖系统原文件 boot/grub boot/grub/splash.xpm.gz # 指定解压缩位置/opt/ tar -xvf ./grub.tar -C /opt/ # 例2:把多个文件或目录合并打包 tar -cvf back.tar /boot/grub/ /etc/passwd # 例3:打包过程中跳过多个文件 tar --exclude /root/test.d/a1 -cvf /root/test.tar /root/test.d # 例4:不解包查看包中内容 tar -tvf ./test.tar
tar 归档+压缩:
-
常用参数:
-
-z:以gzip方式压缩。扩展名:tar.gz
-
-j: 以bz2方式压缩。 扩展名:tar.bz2
-
-J: 以 xz 方式压缩。 扩展名:tar.xz
-
# 例1:创建解压tar.gz包 tar -zcvf ./test.tar.gz /etc tar -zxvf ./test.tar.gz # 例2:创建解压tar.bz2包 tar -jcvf ./test.tar.bz2 /etc tar -jxvf ./test.tar.bz2 # 例3:创建解压tar.xz包 tar -Jcvf ./test.tar.xz /etc tar -Jxvf ./test.tar.xz # 对比三种压缩方式包的大小 ll -h ./test.tar* PS:解压时可不加zjJ
-
-
zip管理压缩文件
zip:压缩程序
unzip:解压缩程序
# 例1:压缩文件,与tar类似 zip ./file.zip ./file # 例2:将所有.jpg文件压缩成一个zip包 zip ./all.zip *.jpg # 例3:压缩一个目录 zip -r ./grub.zip /boot/grub # -d:指定解压目录 unzip ./grub.zip -d /opt/
du -sh /etc/ 显示整个目录大小。-s:只显示本级目录 -h:常用单位
tar:压缩保留软链接,若非绝对路径则会失效
zip:将软链接替换为原文件,因而更慢更大
-
file命令:查看命令类型
-
file /etc/passwd
-
/etc/passwd: ASCII text
-