Linux常用命令
Linux 系统的文件目录介绍:
- bin:存放二进制可执行文件;
- sbin:只有 root 才能访问;
- etc:存放系统配置文件;
- usr: 用于存放共享的系统资源;
- home:存放用户文件的根目录;
- dev:用于存放设备文件;
- lib:存放共享库及内核模块;
- mnt:临时文件系统的安装点;
- boot:存放用于系统引导时使用的各种文件;
- tmp:用于存放各种临时文件;
- var:用于存放运行时需要改变的数据的文件。
一、基本操作及命令
1.1 linux资源链接
linux资源包下载链接:
pkgs.org
linux 资源包安装详细教程
1.2 软件包管理 – rpm
rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,让Linux易于安装,升级,间接提升了Linux的适用度。
1.2.1 rpm包安装
-
语法:
rpm (选项)(参数) 包名
- 选项说明:
- -i:安装(install);
- -v:显示更详细的信息(verbose);
- -h:打印 #,显示安装进度(hash);
-
参数说明:
- 使用示例:
# 语法
rpm -ivh 包全名.rpm -force -nodeps
##注意一定是包全名。如果是跟包全名的命令,则要注意路径,因为软件包在光盘当中
–force 强制安装
–nodeps 忽略依赖
-
安装目录下的所有rpm包:
rpm -Uvh *.rpm --nodeps --force
-
默认安装路径
RPM 包默认安装路径是可以通过命令査询的,一般安装在如表:
1.2.2 rpm包卸载
卸载是有依赖性的。比如,在安装的时候,要先安装 httpd 软件包,再安装 httpd 的功能模块 mod_ssl 包。那么,在卸载的时候,一定要先卸载 mod_ssl 软件包,再卸载 httpd 软件包,否则就会报错。
语法:
rpm -e 包名
注意: 包名可以包含版本号等信息,但是不可以有后缀.rpm
如果不知道对应的实际包名,执行查询命令:
rpm -qa |grep 服务名称
#示例
rpm -qa |grep emqx
1.3 基础命令
1.3.1 history 显示历史命令
用于显示历史记录和执行过的指令命令。
-
语法:
history 选项 参数
- 参数
- -n #显示最近的n条记录
- -a #将历史命令缓冲区中命令写入历史命令文件中
- -c #将目前的shell中的所有 history 内容全部消除 实际为假删除
- -r #将历史命令文件中的命令读入当前历史命令缓冲区
- -w #将当前历史命令缓冲区命令写入历史命令文件中
- -d #删除历史记录中指定的行
- 常用示例:
#获取历史记录的最新2两条
[root@localhost ~]# history 2
#执行最后一次命令
[root@localhost ~]# !!
#清空当前历史记录(只是清空缓存中的历史记录,伪删除)
[root@localhost ~]# history -c
#将当前缓存中的历史记录写入文件(缓存中的记录是空的-用空的数据写入文件,将文件内部删除)
[root@localhost ~]# history -w
# 删除某行历史记录(这样可以有针对性的保留历史记录) - 删除第25行历史记录
[root@localhost ~]# history -d 25
# !+数字 代表执行历史中第n条命令
[root@localhost ~]# !30
# .!+字符串 代表搜索历史命令最近一个以xxxx字符开头的命令
[root@localhost ~]# !cd
-
关于history的配置文件
(1)所有我们用history命令看到的历史记录,都默认保存在:~/.bash_history;
(2)如果是root用户就是在/root/.bash_history文件里;
(3)直接删除这个文件会清除历史记录,再登陆系统会自动重新生成这个文件
1.3.2 查看cpu型号信息
两种方式:
-
lscpu
-
cat /proc/cpuinfo
1.3.3 查看cpu使用情况
1.3.3.1 查看cpu使用情况 – top
通常使用top命令查看CPU的当前状态,如果是多核CPU,也可以看到每核的信息。
执行命令:
top
执行后按数字1,可以显示多个CPU状态:
%us – 用户空间占用CPU百分比
%sy – 内核空间占用CPU百分比
%ni – 用户进程空间内改变过优先级的进程占用CPU百分比
%id – 空闲CPU百分比
%wa – IO等待占用CPU的百分比
%hi – 硬中断(Hardware IRQ)占用CPU的百分比
%si – 软中断(Software Interrupts)占用CPU的百分比
%us 和 %id 的值比较重要,系统请求压力大时,可以看到这两项的迅速变化
1.3.3.2 查看内存使用情况 – free
linux的内存使用策略:内存是拿来用的,会尽量缓存常用的数据到内存中,提高系统性能,当应用程序需要更多的内存时,再去释放缓存。
# 以人类可读形式显示大小
free -h
# -m 以M为单位显示结果数据
free -m
# -g 以g为单位显示结果数据
free -g
1.3.4 查看系统的内存状况
cat /proc/meminfo
1.3.5 查看系统版本
-
查看内核版本:
uname -a
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
-
查看操作系统位数:
getconf LONG_BIT
1.3.6 cpu架构
-
常见CPU架构
(1)ARM架构 – 低功耗:aarch64、arm64
(2)X86架构 – 高性能+高速度:x86_64、x64、AMD64
(3)MIPS架构:mips -
Linux下查看系统CPU架构:
uname -a
输出中有关键词 aarch64 就是 ARM 架构,有关键词 x86_64 就是 X86 架构
![]()
1.3.6 重启
-
重启服务器:
systemctl reboot
-
重启网络服务:
systemctl restart network
- 重启所有服务器:
systemctl daemon-reload
systemctl restart $(systemctl list-unit-files --state=running | awk -F' ' '{print $1}')
二、查看磁盘状态、端口、系统
2.1 查看磁盘空间占用
2.1.1 查看磁盘状态 : df -h
如果不知道哪个目录占用大小的百分比,可以先查看哪个目录占用空间最大
df -h
,在Use% 列就可以看到现有磁盘占用的空间的百分比大小;
2.1.2 查看各个文件磁盘占用情况:du -sh /*
du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:
du -sh /*
发现 /dev目录占用空间为 52%,占用较大,进入 /dev目录下,查看该目录下面哪个文件占用较大,使用命令
du -sh /*
命令中的 / 表示跟目录,也可以试 /home 等,可根据情况自行修改。
du常用的选项:
-h:以人类可读的方式显示
-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
-s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
-c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
–apparent-size:显示目录或文件自身的大小
-l :统计硬链接占用磁盘空间的大小
-L:统计符号链接所指向的文件占用的磁盘空间大小
-
du -h
-
du -a
使用此选项时,显示目录和目录下子目录和文件占用磁盘空间的大小。
可以看出,默认情况下du只显示./目录占用磁盘空间的大小,而使用-a选项后,它不仅显示了目录(最后一行),而且显示了目录下各个文件占用磁盘空间的大小。
3.
du -s
使用此选项时,du只显示目录所占用磁盘空间的大小,而不显示其下子目录和文件占用磁盘空间的信息。
默认情况下,du不显示目录下文件占用磁盘空间的信息,但它会显示其下子目录占用磁盘空间的信息;而使用-s选项以后,只显示xx目录占用磁盘空间的大小。
4.
du --apparent-size
显示文件或目录自身大小,而不是它们占用的磁盘空间大小。
5.
du -c
使用此选项时,不仅显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
6.
du -lh --max-depth=1
查看当前目录下一级子文件和子目录占用的磁盘容量。
2.1.3 查看inodes容量
当磁盘容量或inode容量任意一个不足时就都会提示 No space left on device。查看后进入占用率高的目录删除无用文件即可。
2.1.4 查看文件数量
inodes 爆满那就查看一下哪些地方文件数量过多。根据上边的信息 / 目录的 inodes 占用率为 100% 所以查看其下文件,将无用文件删除即可,进行删除即可。
for i in /*; do echo $i; find $i |wc -l; done
2.1.5 僵尸进程
若磁盘容量和 inodes 容量都正常但还是没有磁盘空间,则需查看是否存在已被删除的文件,状态为 deleted
lsof | grep deleted
根据进程号,将其 kill 掉即可。若不清楚该进程作用请勿随意 kill
原理:
在linux上被删除的文件仍被其他进程所使用,文件句柄没有完全释放出来,导致空间无法释放出来,在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。
2.2 查看端口 – ss
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具.SS命令可以提供如下信息。
ss [参数]
ss [参数] [过滤]
-
显示TCP连接:
ss -a -t
-
显示UDP连接:
ss -a -u
-
显示Sokets摘要:
ss -s
列出当前的established, closed, orphaned and waiting TCP sockets
4. 显示本地打开的所有端口:
ss -ln
5. 查看进程使用的socket:
ss -pl
6. 找出打开套接字/端口应用程序:
ss -nlp | grep 端口号
如:ss -nlp | grep 6040
7. 匹配远程地址和端口号
> ss dst ADDRESS_PATTERN
> ss dst 192.168.1.1
> ss dst 192.168.21.1:http
> ss dst 192.168.21.1:smtp
> ss dst 192.168.21.1:443
2.3 查看系统信息 – uname
Linux uname(英文全拼:unix name)命令用于显示操作系统信息,例如内核版本、主机名、处理器类型等。uname 可显示电脑以及操作系统的相关信息。
#语法
uname [-amnrsv][--help][--version]
参数说明:
- -a 或–all 显示全部的信息,包括内核名称、主机名、操作系统版本、处理器类型和硬件架构等。。
- -m 或–machine 显示处理器类型。
- -n 或–nodename 显示主机名。
- -r 或–release 显示内核版本号。
- -s 或–sysname 显示操作系统名称。
- -v 显示操作系统的版本。
- –help 显示帮助。
- –version 显示版本信息。
- -p 显示处理器类型(与 -m 选项相同)。
#示例:
uname -a
三、进程查看\杀掉
3.1 查看进程方法 – ps
ps命令以简单列表的形式,报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
ps aux
#a:显示当前终端下的所有进程信息,包括其他用户的进程。
#u:使用以用户为主的格式输出进程信息。
#x:显示当前用户在所有终端下的进程。
- 当知道端口号的时候,使用 lsof -i:端口号查看进程号:
#比如查看1500端口的进程号
lsof -i:1500
2. 当不知道端口号,但是知道程序名称时,使用ps aux查看:
ps -aux | grep 程序名称
3.2 杀死进程 – kill
kill -9 PID
四、文件\目录的创建、查看、移动、删除、传输、链接
4.1 目录查看\创建\切换\移动\压缩\删除
4.1.1 查看目录结构 – ls
ls :list-查看当前目录所有内容
- ls -a :列出目录所有文件,包含以.开始的隐藏文件
- ls -A : 列出除.及…的其它文件
- ls -r :反序排列
- ls -t :以文件修改时间排序
- ls -S :以文件大小排序
- ls -h :以文件易读大小顺序显示
- ls -l :除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出
-
ls -la
列出目录所有文件,包含以.开始的隐藏文件及文件的权限、所有者、文件大小等信息详细
实例:
(1) 按易读方式按时间反序排序,并显示文件详细信息
ls -lhrt
(2) 按大小反序显示文件详细信息
ls -lrS
(3)列出当前目录中所有以”t”开头的目录的详细内容
ls -l t*
例如:
4.1.2 创建\修改文件\目录 – touch
touch命令用于修改文件或者目录的时间属性,包括访问时间和修改时间,若文件不存在,系统会建立一个新的文件。
补充说明:
1.stat * 查看这个目录所有文件的状态。
Access访问时间。Modify修改时间。Change状态改变时间。
2.每个文件在Linux下面都会记录3个主要的修改时间:
• modification time(mtime,修改时间):当文件“内容数据”(指文件里面的内容,而不是属性或权限)更改时,这个时间会更新。
• status time(ctime,状态时间):当文件的“状态”(权限或者属性)改变时,这个时间会更新。
• access time(atime,存取时间):当“该文件内容被取用”(例如使用cat读取了)时,会更新该时间。
(注:ls默认情况下显示的是mtime)
格式:
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
-
创建一个空文件或者更新atime、mtime、ctime
a.如果文件不存在,使用touch命令默认创建一个空文件
b.如果文件存在则更新atime,mtime,ctime为当前时间。
-
使用-a参数,touch文件时,文件存在只会更新atime和ctime为当前时间。
-
使用-m参数,touch文件时,文件存在只会更新mtime和ctime为当前时间
-
使用-d参数,touch文件时,文件存在会将atime,mtime按照设置修改,同时更新ctime时间
-
使用touch -t “[[CC]YY]MMDDhhmm[.ss]”修改文件的atime和mtime
-
使用-at组合参数,只修改atime。
-
使用-mt组合参数,只修改mtime。
-
touch -r file1 file2 将file2的时间属性值修改为file1文件的时间属性
回到目录
4.1.3 创建目录 – mkdir
mkdir 文件夹名称 : 创建文件夹。
mkdir -p 文件夹名称1/名称2/… :创建多级目录,此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
实例:
(1)当前工作目录下创建名为 test 的文件夹
mkdir test
(2)在 tmp 目录下创建路径为 test/t1/t 的目录,若不存在,则创建:
mkdir -p /tmp/test/t1/t
4.1.4 切换目录 – cd
cd(changeDirectory) 命令语法:
cd [目录名]
说明:切换当前目录至 dirName。
实例:
(1)进入要目录
cd /
(2)进入 “home” 目录
cd ~
(3)进入上一次工作路径
cd –
4.2 目录压缩\解压 (文件夹打包)tar\zip
4.2.1 tar命令
tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
常用命令
:
1、压缩:
tar [-z|-j|-J] -c [-v] [-f ] 目标文件名 源文件
2、解压缩:
tar [-z|-j|-J] -x [-v] [-f ] 待加压文件名 [-C 目录]
4.2.1.1 打包成 .tar
tar -cvf 打包后生成的文件名全路径 要打包的目录
当有多个参数时,-f命令参数必须在最后一个,否则会报错,原因是 -f后面跟的是目标文件名称,如果-fc,则会把c当做源文件名称。
-c是表示打包,create 缩写
-v表示显示打包的过程,verbose 缩写
-f指定打包后的文件名,file缩写
4.2.1.2 打包并压缩 .tar.gz
tar -zcvf 打包后生成的文件名全路径 要打包的目录
与<打包成tar>相比,需要额外添加参数标识要进行压缩,例如通过加入-z,可以直接把tar包压缩成gz,一般常用的参数如下,选择任一均可:
-z:gzip指令
压缩命令表示gzip,命令里带-c, 则以 .tar.gz 或 .tgz 结尾来代表 gzip 压缩过的 tar file
解压缩表示ungzip,命令里带-x
-j :bzip2指令,则以 .tar.bz2 结尾,表示采用bzip2压缩
-J 大写,表示xz压缩,则以 .tar.xz 结尾,表示采用bzip2压缩
————————————————
4.2.1.3 解压文件tar
tar -xvf tar文件
#-x是表示还原 一般和-c命令必须同时存在一个
#-v表示显示打包的过程,verbose 缩写
#-f指定打包后的文件名,file缩写
4.2.1.4 解压并解包文件tar.gz
先解压,再解包。在解压时,可以不带-z或-j,linux会自动判断采用了哪种压缩格式,会自动在命令中带入 相应的参数:
tar -xvf tar文件名
[root@localhost test]# ls
test2.tar.bz2
#解压命令中没有带-j,仍能解压
[root@localhost test]# tar -xvf test2.tar.bz2
a.c
[root@localhost test]# ls
a.c test2.tar.bz2
[root@localhost test]#
默认解压时在当前目录,如果要指定目录的话,则加上[-C 目录] 参数,即
tar -xvf tar文件名 -C 目录名称
[test]# tar -zcf hello2.tar.gz -C /paasdata/zzl/test hello 使用-C指定绝对路径前缀 注意:-C命令 与目标文件夹hello之间有空格
[test]# ls
hello hello2.tar.gz hello.tar.gz
[test]# tar -tf hello2.tar.gz
hello/ 此时,压缩文件的目录结构就是不包含绝对路径前缀的
4.2.1.5 查看压缩包结构,不解压
tar -tvf xx.tar.gz
或
tar -tvf xx.tar
4.2.2 zip命令
如果出现这个提示:
-bash: zip: command not found 不能执行ZIP压缩,是因为没有安装ZIP,
运行下这条安装命令即可
yum install zip
4.2.2.1 压缩
linux zip命令参数列表
:
-a 将文件转成ASCII模式
-F 尝试修复损坏的压缩文件
-h 显示帮助界面
-m 将文件压缩之后,删除源文件
-n 特定字符串 不压缩具有特定字尾字符串的文件
-o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
-q 安静模式,在压缩的时候不显示指令的执行过程
-r 将指定的目录下的所有子目录以及文件一起处理
-S 包含系统文件和隐含文件(S是大写)
-t 日期 把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy
- 目录下所有文件和文件夹打包为指定目录下的.zip
zip –q –r-S [zip文件所在目录]xx.zip 解压后放置的目录
# 以上是在安静模式下进行的,而且包含系统文件和隐含文件
zip –q –r xahot.zip /home/wwwroot/xahot
4.2.2.2 解压缩
unzip [压缩文件位置/]xx.zip
#r如:将/home/wwwroot/xahot.zip解压到当前目录
unzip xahot.zip
unzip参 数:
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换。
-f 更新现有的文件。
-l 显示压缩文件内所包含的文件。
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。
-t 检查压缩文件是否正确。
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。
-v 执行是时显示详细的信息。
-z 仅显示压缩文件的备注文字。
-a 对文本文件进行必要的字符转换。
-b 不要对文本文件进行字符转换。
-C 压缩文件中的文件名称区分大小写。
-j 不处理压缩文件中原有的目录路径。
-L 将压缩文件中的全部文件名改为小写。
-M 将输出结果送到more程序处理。
-n 解压缩时不要覆盖原有的文件。
-o 不必先询问用户,unzip执行后覆盖原有文件。
-P<密码> 使用zip的密码选项。
-q 执行时不显示任何信息。
-s 将文件名中的空白字符转换为底线字符。
-V 保留VMS的文件版本信息。
-X 解压缩时同时回存文件原来的UID//GID
4.3 目录(重命名)移动 – mv
mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令等同于DOS系统下的ren和move命令的组合。它的使用权限是所有用户。
mv [options] 源文件或目录 目标文件或目录
#[options]主要参数
#-i:交互方式操作。如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答”y”或”n”,这样可以避免误覆盖文件。
#-f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示,指定此参数后i参数将不再起作用。
- 将/usr/udt中的所有文件移到当前目录(用”.”表示)中:
$ mv /usr/udt/* .
- 将文件test.txt重命名为wbk.txt:
$ mv test.txt wbk.txt
- 把当前目录的一个子目录里的文件移动到另一个子目录里
mv 文件名/* 另一个目录
- 移动当前文件夹下的所有文件到上一级目录
mv * ../
4.4 目录复制 – cp
cp命令是用于复制的。cp(copy) 复制文件或目录。
cp [选项] 源文件 目标文件
选项:
-a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;
-d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;
-i:询问,如果目标文件已经存在,则会询问是否覆盖;
-l:把目标文件建立为源文件的硬链接文件,而不是复制源文件;
-s:把目标文件建立为源文件的软链接文件,而不是复制源文件;
-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);
-r:递归复制,用于复制目录;
-u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用。
最常用的:
# 保留源文件属性复制
cp -a 源文件 目标文件
1.复制文件示例
#建立源文件
[root@localhost ~]# touch cangls
#1. 把源文件不改名复制到 /tmp/ 目录下
[root@localhost ~]# cp cangls /tmp/
#2. 改名复制
[root@localhost ~]# cp cangls /tmp/bols
如果复制的目标位置已经存在同名的文件,则会提示是否覆盖,因为 cp 命令默认执行的是“cp -i”的别名,例如:
[root@localhost ~]# cp cangls /tmp/
cp:是否覆盖"/tmp/cangls"?y
#目标位置有同名文件,所以会提示是否覆盖
-
复制目录示例
复制目录只需使用“-r”选项即可,例如:
#建立测试目录
[root@localhost ~]# mkdir movie
#目录原名复制
[root@localhost ~]# cp -r /root/movie/ /tmp/
-
复制软链接文件
如果源文件不是一个普通文件,而是一个软链接文件。
(1)如果在复制软链接文件时不使用 “-d” 选项,则 cp 命令复制的是源文件,而不是软链接文件;
(2)只有加入了 “-d” 选项,才会复制软链接文件。
(3)请大家注意,“-d” 选项对硬链接是无效的。
#建立一个测试软链接文件/tmp/cangls_slink
[root@localhost ~]# ln -s /root/cangls /tmp/cangls_slink
#1. 复制软链接文件,但是不加"-d"选项
[root@localhost ~]# cp /tmp/cangls_slink /tmp/cangls_t1
#2. 复制软链接文件,加入"-d"选项
[root@localhost ~]# cp -d /tmp/cangls_slink /tmp/cangls_t2
[root@localhost ~]# ll /tmp/cangls_t1 /tmp/cangls_t2
#会发现不加"-d"选项,实际复制的是软链接的源文件,而不是软链接文件
-rw-r--r-- 1 root root 0 6月 14 05:56 /tmp/cangls_t1
#而如果加入了"-d"选项,则会复制软链接文件
lrwxrwxrwx 1 root root 12 6 月 14 05:56/tmp/ cangls_t2-> /root/cangls
-
保留源文件属性复制
当我们使用 “-a” 选项时,目标文件和源文件的所有属性都一致,包括源文件的所有者,所属组、时间和软链接性。
#使用"-a"选项
[root@localhost ~]# cp -a /var/lib/mlocate/mlocate.db /tmp/mlocate.db_2
[root@localhost ~]# ll /var/lib/mlocate/mlocate.db /tmp/mlocate.db_2
-rw-r----- root slocate 2328027 6月 14 02:08 /tmp/mlocate.db_2
-rw-r----- root slocate 2328027 6月 14 02:08 /var/lib/mlocate/mlocate.db
-
复制为软连接\硬链接
“-l” 和 “-s” 选项的源文件只需是普通文件,目标文件就可以直接复制为硬链接和软链接。
(1)如果使用 “-l” 选项,则目标文件会被建立为源文件的硬链接;
(2)如果使用了 “-s” 选项,则目标文件会被建立为源文件的软链接。
[root@localhost ~]# touch bols
#建立测试文件
[root@localhost ~]# ll -i bols
262154-rw-r--r-- 1 root root 0 6月 14 06:26 bols
#源文件只是一个普通文件,而不是软链接文件
[root@localhost ~]# cp -l /root/bols /tmp/bols_h
[root@localhost ~]# cp -s /root/bols /tmp/bols_s
#使用"-l" 和"-s"选项复制
[root@localhost ~]# ll -i /tmp/bols_h /tmp/bols_s
262154-rw-r--r-- 2root root 0 6 月 14 06:26/tmp/bols_h
#目标文件 /tmp/bols_h 为源文件的硬链接文件
932113 lrwxrwxrwx 1 root root 10 6 月 14 06:27/tmp/bols_s -> /root/bols
#目标文件 /tmp/bols_s 为源文件的软链接文件
4.5 目录删除 – rm
使用rm命令要小心。因为一旦文件被删除,它是不能被恢复的。
rm 【选项】 目录
选项说明:
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
-i 进行交互式删除。
-
rm -rf 目录
不管有多少级目录,一并强行删除 -
rm -if 目录
使用i选项来逐个确认要删除的文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件则不会删除。
4.6 数据传输 – scp
Linux如何传输数据至另一台Linux?
命令:
scp [选项] 本机或跨机传输数据
选项说明:
- -C 压缩传输数据
- -p 保留文件属性及权限
- -r 递归复制一个目录。
- -v 详细展示传输数据情况 (包括传输失败的资料)
使用及示例:
#命令
scp [参数] [目标目录或文件] [对方服务器帐号]@[对方服务器IP]:[数据传输目的地位置]
#示例
scp -rCpv /home/backupdatas/datan2020.11.4.tar.gz root@192.168.203.24:/home/backupdatas/
1.执行命令:
2.确认连接:
3.输入访问密码:
4. 显示传输成功后,查看另一个机器目录上数据是否已接受到数据:
(1)传输成功:
(2)查看另一个机器目录上数据是否已接受到数据:
回到目录
4.7 在目录中查找文件 – find
find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。
语法:
find 搜索路径 [选项] 搜索内容
-
按照文件名搜索:
find 命令是完全匹配的,必须和搜索关键字一模一样才会列出。
-
(1) 选项:
-name: 按照文件名搜索;
-iname: 按照文件名搜索,不区分文件名大小;
-inum: 按照 inode 号搜索; - (2)示例:
#在目录下査找文件名是yum.conf的文件
[root@localhost ~]# find /-name yum.conf
/etc/yum.conf
# Linux 中的文件名是区分大小写的,也就是说,搜索小写文件,是找不到大写文件的。
# 如果想要大小通吃,就要使用 -iname 来搜索文件
[root@localhost ~]#find .-iname cangls
./CANGLS
./cangls
# 每个文件都有 inode 号,如果我们知道 inode 号,则也可以按照 inode 号来搜索文件。
#如果知道文件名,则可以用"ls -i"来査找inode号
[root@localhost ~]#ls -i install.log
262147 install.log
#如果知道inode号,则可以用find命令来査找文件
[root@localhost ~]# find.-inum 262147
./install.log
# 按照 inode 号搜索文件,也是区分硬链接文件的重要手段,因为硬链接文件的 inode 号是一致的。
-
按照文件大小搜索
: -size[±]大小:按照指定大小搜索文件
#当前目录下,査找大小刚好是25KB的文件,可以找到
[root@localhost ~]# find.-size 25k
./install.log
#査找所有目录下大于1G的文件
[root@localhost ~]#find / -type f -size +1G
#搜索小于25KB的文件
[root@localhost ~]# find / -type f -size -25k
# 千字节必须是小写的"k",而兆字节必领是大写的"M"
#搜索小于25MB的文件
[root@localhost ~]# find / -type f -size -25M
-
按照文件类型搜索
:
选项:
-type d:查找目录
-type f:查找普通文件
-type l:查找软链接文件
#查找/etc/目录下有哪些子目录
[root@localhost ~]# find /etc -type d
更多详细内容可参考链接:
Linux find命令:在目录中查找文件(超详解)
回到目录
回到末尾
4.8 文件创建\查看\合并命令 – cat
cat命令允许我们创建单个或多个文件,查看文件的内容,连接文件并在终端或文件中重定向输出。
-
语法:
cat [选项] 文件名
- 选项:
- A: 展示所有文件内容
- b: 此选项用于提供具有非空行的数字,并覆盖选项 -n
- e: 等同于选项 -vE
- E: 显示文件行尾
- n: 文件每行前面打印行号.
- s: 此选项将抑制多个空输出行s.
- t: 等同于选项 -vT
- T: 它用于显示特殊的制表符^I
- v: 它用于显示使用的^和M符号的不可打印字符
4.8.1 创建新的文件
cat > 文件名
#示例
cat > test.file
#然后输入文件内容,编辑结束后,按ctrl+d保存退出
4.8.2 显示单个\多个文件内容
- 显示单个文件内内容
cat 文件名
#示例
cat test.file
2. 显示多个文件内容
cat 文件名1 文件名2 ... 文件名n
#示例
cat test.file test1.txt test2.txt
4.8.3 备份单个\多个文件内容到另一个文件
cat命令能够把一个或多个文件的内容拷贝到另外一个文件。
- 备份单个文件内容到另一个文件
cat 指定文件 > 合并文件
#示例
cat test1.txt > test2.txt
# 如果此时合并文件有数据,将会被删除重建,建议新建一个合并文件
2. 备份多个文件内容到另一个文件
cat 指定文件1 指定文件2 ... > 合并文件
#示例
cat test1.txt test2.txt test.file > test.txt
# 如果此时合并文件有数据,将会被删除重建,建议新建一个合并文件
4.8.4 添加单个\多个文件内容到另外一个文件末尾
- 添加单个文件内容到另外一个文件末尾
cat 文件名 >> 目标文件
#示例:
cat test2.txt >> test.file
2. 添加多个文件内容到另外一个文件末尾
cat 文件名1 文件名2 文件名n >> 目标文件
#示例:
cat test2.txt test1.txt >> test.file
4.8.5 查看大文件通过more或者less翻页
4.8.6 查看文件内容展示行号
cat -n 文件名
#示例
cat -n test1.txt
详情链接:
Linux中cat命令的使用方式
4.9 文件软链接和硬链接
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
- 软链接:
- 以路径的形式存在。类似于Windows操作系统中的快捷方式
- 可以跨文件系统 ,硬链接不可以
- 可以对一个不存在的文件名进行链接
- 可以对目录进行链接
-
给文件创建软链接:
ln –s 源文件 目标文件
注意:
它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间。
- 硬链接:
- 以文件副本的形式存在。但不占用实际空间。
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
-
给文件创建硬链接:
ln 源文件 目标文件
注意:** 它会在你选定的位置上生成一个和源文件大小相同的文件。**
4.10 文件编辑 – vi / gedit
五、防火墙开放端口,查看状态,查看开放端口
5.1 firewalld的基本使用命令
-
启动:
systemctl start firewalld
-
关闭:
systemctl stop firewalld
-
查看状态:
systemctl status firewalld
# active (running) 即是开启状态 -
开机禁用 :
systemctl disable firewalld
-
开机启用 :
systemctl enable firewalld
-
查看已开放端口命令:
firewall-cmd --list-all
-
查看所有打开的端口:
firewall-cmd --zone=public --list-ports
- 查询指定端口是否已开 : firewall-cmd –query-port=端口号/协议
-
查看版本:
firewall-cmd --version
5.2 新增防火墙开放端口
(1)新增命令:
firewall-cmd --zone=public --add-port=端口号/协议类型--permanent
说明:
- –zone #作用域
- –add-port=3306/tcp #添加端口,格式为:端口/通讯协议
- –permanent #永久生效,没有此参数重启后失效
firewall-cmd --zone=public --add-port=6041/tcp --permanent
(2)重新加载防火墙:
firewall-cmd --reload
(3)查询指定端口是否已开 : firewall-cmd –query-port=端口号/协议
#示例
firewall-cmd --zone=public --add-port=6041/tcp --permanent
firewall-cmd --reload
firewall-cmd --query-port=6041/tcp
5.3 移除防火墙开放端口
(1)查询指定端口是否已开 : firewall-cmd –query-port=端口号/协议
(2)移除指定端口:firewall-cmd –permanent –remove-port=端口号/协议
(3)重新加载防火墙:
firewall-cmd --reload
(4)查看是否已成功开放端口:
firewall-cmd --list-all
#示例
firewall-cmd --query-port=6041/tcp
firewall-cmd --permanent --remove-port=6041/tcp
firewall-cmd --reload
firewall-cmd --list-all
六、查看与设置时间
6.1 基础命令:
-
系统时间:
(1)查看系统时间:
date
(2)修改系统时间,当系统重新启动的时候就会还原:
date -s '2022-09-12 22:00:00'
-
硬件时间:
(1)查看硬件的时间:
hwclock -r
(2) 修改硬件的时间 也就是永久性修改Linux的时间:
hwclock --set --date '2022-09-12 22:00:00'
3.设置系统时间和硬件时间同步: hwclock –hctosys
6.2 离线下设置服务器时间与网络时间同步
步骤如下:
-
浏览器打开网页:
时间校准网-中国时间-现在
,得到当前具体的时间信息; - 执行linux命令:
#修改硬件时间
hwclock --set --date '2022-09-12 22:00:00'
#设置系统时间和硬件时间同步
hwclock --hctosys
#查看当前时间,看与网页上时间是否一致
date
七、修改访问密码
输入命令:
passwd
输入两遍密码,即可完成密码修改。