Linux常用命令

  • Post author:
  • Post category:linux




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包安装

  1. 语法:

    rpm (选项)(参数) 包名
  2. 选项说明:
  • -i:安装(install);
  • -v:显示更详细的信息(verbose);
  • -h:打印 #,显示安装进度(hash);
  1. 参数说明:

    ·
  2. 使用示例:
# 语法
rpm -ivh 包全名.rpm -force -nodeps
##注意一定是包全名。如果是跟包全名的命令,则要注意路径,因为软件包在光盘当中

–force 强制安装

–nodeps 忽略依赖

  1. 安装目录下的所有rpm包:

    rpm -Uvh *.rpm --nodeps --force
  2. 默认安装路径

    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 显示历史命令

用于显示历史记录和执行过的指令命令。

  1. 语法:

    history 选项 参数
  2. 参数
  • -n #显示最近的n条记录
  • -a #将历史命令缓冲区中命令写入历史命令文件中
  • -c #将目前的shell中的所有 history 内容全部消除 实际为假删除
  • -r #将历史命令文件中的命令读入当前历史命令缓冲区
  • -w #将当前历史命令缓冲区命令写入历史命令文件中
  • -d #删除历史记录中指定的行
  1. 常用示例:
#获取历史记录的最新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
  1. 关于history的配置文件

    (1)所有我们用history命令看到的历史记录,都默认保存在:~/.bash_history;

    (2)如果是root用户就是在/root/.bash_history文件里;

    (3)直接删除这个文件会清除历史记录,再登陆系统会自动重新生成这个文件


回到目录


回到末尾



1.3.2 查看cpu型号信息

两种方式:


  1. lscpu


    1

  2. cat /proc/cpuinfo


    3



1.3.3 查看cpu使用情况



1.3.3.1 查看cpu使用情况 – top

通常使用top命令查看CPU的当前状态,如果是多核CPU,也可以看到每核的信息。

执行命令:

top


·

执行后按数字1,可以显示多个CPU状态:

1

%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


回到目录


回到末尾



1.3.4 查看系统的内存状况

cat  /proc/meminfo

3



1.3.5 查看系统版本

  1. 查看内核版本:

    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
  1. 查看操作系统位数:

    getconf LONG_BIT


    3



1.3.6 cpu架构

  1. 常见CPU架构

    (1)ARM架构 – 低功耗:aarch64、arm64

    (2)X86架构 – 高性能+高速度:x86_64、x64、AMD64

    (3)MIPS架构:mips
  2. Linux下查看系统CPU架构:

    uname -a

输出中有关键词 aarch64 就是 ARM 架构,有关键词 x86_64 就是 X86 架构

1


回到目录


回到末尾



1.3.6 重启

  1. 重启服务器:

    systemctl reboot
  2. 重启网络服务:

    systemctl restart network
  3. 重启所有服务器:
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% 列就可以看到现有磁盘占用的空间的百分比大小;

1



2.1.2 查看各个文件磁盘占用情况:du -sh /*

du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:

du -sh /*


发现 /dev目录占用空间为 52%,占用较大,进入 /dev目录下,查看该目录下面哪个文件占用较大,使用命令

du -sh /*


1

命令中的 / 表示跟目录,也可以试 /home 等,可根据情况自行修改。

1


du常用的选项:


-h:以人类可读的方式显示

-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小

-s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小

-c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和

–apparent-size:显示目录或文件自身的大小

-l :统计硬链接占用磁盘空间的大小

-L:统计符号链接所指向的文件占用的磁盘空间大小


  1. du -h


    1

  2. du -a

    使用此选项时,显示目录和目录下子目录和文件占用磁盘空间的大小。

可以看出,默认情况下du只显示./目录占用磁盘空间的大小,而使用-a选项后,它不仅显示了目录(最后一行),而且显示了目录下各个文件占用磁盘空间的大小。

3

3.

du -s

使用此选项时,du只显示目录所占用磁盘空间的大小,而不显示其下子目录和文件占用磁盘空间的信息。

默认情况下,du不显示目录下文件占用磁盘空间的信息,但它会显示其下子目录占用磁盘空间的信息;而使用-s选项以后,只显示xx目录占用磁盘空间的大小。

1

4.

du --apparent-size

显示文件或目录自身大小,而不是它们占用的磁盘空间大小。

1

5.

du -c

使用此选项时,不仅显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和

2

6.

du -lh --max-depth=1

查看当前目录下一级子文件和子目录占用的磁盘容量。



2.1.3 查看inodes容量

当磁盘容量或inode容量任意一个不足时就都会提示 No space left on device。查看后进入占用率高的目录删除无用文件即可。

2



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 [参数] [过滤]

1

  1. 显示TCP连接:

    ss -a -t


    1
  2. 显示UDP连接:

    ss -a -u


    1
  3. 显示Sokets摘要:

    ss -s

列出当前的established, closed, orphaned and waiting TCP sockets

2

4. 显示本地打开的所有端口:

ss -ln


3

5. 查看进程使用的socket:

ss -pl


5

6. 找出打开套接字/端口应用程序:

ss -nlp | grep 端口号


如:ss -nlp | grep 6040

6

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

1


回到目录


回到末尾



三、进程查看\杀掉



3.1 查看进程方法 – ps

ps命令以简单列表的形式,报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

ps aux
#a:显示当前终端下的所有进程信息,包括其他用户的进程。
#u:使用以用户为主的格式输出进程信息。
#x:显示当前用户在所有终端下的进程。

在这里插入图片描述

  1. 当知道端口号的时候,使用 lsof -i:端口号查看进程号:
#比如查看1500端口的进程号
lsof -i:1500

1

2. 当不知道端口号,但是知道程序名称时,使用ps aux查看:

ps -aux | grep 程序名称

2



3.2 杀死进程 – kill

kill -9 PID

3


回到目录


回到末尾



四、文件\目录的创建、查看、移动、删除、传输、链接



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

实例:

(1) 按易读方式按时间反序排序,并显示文件详细信息

ls -lhrt

(2) 按大小反序显示文件详细信息

ls -lrS

(3)列出当前目录中所有以”t”开头的目录的详细内容

ls -l t*

例如:

1



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][文件或目录…]
  1. 创建一个空文件或者更新atime、mtime、ctime

    a.如果文件不存在,使用touch命令默认创建一个空文件

    b.如果文件存在则更新atime,mtime,ctime为当前时间。

    1
  2. 使用-a参数,touch文件时,文件存在只会更新atime和ctime为当前时间。

    2
  3. 使用-m参数,touch文件时,文件存在只会更新mtime和ctime为当前时间

    3
  4. 使用-d参数,touch文件时,文件存在会将atime,mtime按照设置修改,同时更新ctime时间

    4
  5. 使用touch -t “[[CC]YY]MMDDhhmm[.ss]”修改文件的atime和mtime

    5
  6. 使用-at组合参数,只修改atime。

    6
  7. 使用-mt组合参数,只修改mtime。

    7
  8. touch -r file1 file2 将file2的时间属性值修改为file1文件的时间属性

    8


    回到目录



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缩写

1



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压缩

————————————————

1



4.2.1.3 解压文件tar
tar -xvf tar文件
#-x是表示还原 一般和-c命令必须同时存在一个
#-v表示显示打包的过程,verbose 缩写
#-f指定打包后的文件名,file缩写

1



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

  1. 目录下所有文件和文件夹打包为指定目录下的.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参数将不再起作用。
  1. 将/usr/udt中的所有文件移到当前目录(用”.”表示)中:
$ mv /usr/udt/* .
  1. 将文件test.txt重命名为wbk.txt:
$ mv test.txt wbk.txt
  1. 把当前目录的一个子目录里的文件移动到另一个子目录里
mv  文件名/*  另一个目录
  1. 移动当前文件夹下的所有文件到上一级目录
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
#目标位置有同名文件,所以会提示是否覆盖
  1. 复制目录示例

    复制目录只需使用“-r”选项即可,例如:
#建立测试目录
[root@localhost ~]# mkdir movie
#目录原名复制
[root@localhost ~]# cp -r /root/movie/ /tmp/
  1. 复制软链接文件

    如果源文件不是一个普通文件,而是一个软链接文件。

    (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
  1. 保留源文件属性复制

    当我们使用 “-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
  1. 复制为软连接\硬链接

    “-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 进行交互式删除。


  1. rm -rf 目录

    不管有多少级目录,一并强行删除

  2. 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.执行命令:

1

2.确认连接:

1

3.输入访问密码:

3

4. 显示传输成功后,查看另一个机器目录上数据是否已接受到数据:

(1)传输成功:

1

(2)查看另一个机器目录上数据是否已接受到数据:

1


回到目录



4.7 在目录中查找文件 – find

find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。

语法:

find 搜索路径 [选项] 搜索内容


  1. 按照文件名搜索:

    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 号是一致的。

  1. 按照文件大小搜索

    : -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

  1. 按照文件类型搜索

    :

    选项:

    -type d:查找目录

    -type f:查找普通文件

    -type l:查找软链接文件
#查找/etc/目录下有哪些子目录
[root@localhost ~]# find /etc -type d

更多详细内容可参考链接:

Linux find命令:在目录中查找文件(超详解)



回到目录


回到末尾



4.8 文件创建\查看\合并命令 – cat

cat命令允许我们创建单个或多个文件,查看文件的内容,连接文件并在终端或文件中重定向输出。

  1. 语法:

    cat [选项] 文件名
  2. 选项:
  • A: 展示所有文件内容
  • b: 此选项用于提供具有非空行的数字,并覆盖选项 -n
  • e: 等同于选项 -vE
  • E: 显示文件行尾
  • n: 文件每行前面打印行号.
  • s: 此选项将抑制多个空输出行s.
  • t: 等同于选项 -vT
  • T: 它用于显示特殊的制表符^I
  • v: 它用于显示使用的^和M符号的不可打印字符



4.8.1 创建新的文件

cat > 文件名
#示例
cat > test.file  
#然后输入文件内容,编辑结束后,按ctrl+d保存退出

1



4.8.2 显示单个\多个文件内容

  1. 显示单个文件内内容
cat  文件名
#示例
cat  test.file  

1

2. 显示多个文件内容

cat  文件名1 文件名2 ... 文件名n
#示例
cat test.file  test1.txt test2.txt  

1



4.8.3 备份单个\多个文件内容到另一个文件

cat命令能够把一个或多个文件的内容拷贝到另外一个文件。

  1. 备份单个文件内容到另一个文件
cat 指定文件 > 合并文件
#示例
cat test1.txt > test2.txt
# 如果此时合并文件有数据,将会被删除重建,建议新建一个合并文件

1

2. 备份多个文件内容到另一个文件

cat 指定文件1 指定文件2 ...   > 合并文件
#示例
cat test1.txt   test2.txt test.file > test.txt
# 如果此时合并文件有数据,将会被删除重建,建议新建一个合并文件

1



4.8.4 添加单个\多个文件内容到另外一个文件末尾

  1. 添加单个文件内容到另外一个文件末尾
cat 文件名 >> 目标文件
#示例:
cat  test2.txt >> test.file

2

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),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

  1. 软链接:
  • 以路径的形式存在。类似于Windows操作系统中的快捷方式
  • 可以跨文件系统 ,硬链接不可以
  • 可以对一个不存在的文件名进行链接
  • 可以对目录进行链接
  • 给文件创建软链接:

    ln –s 源文件 目标文件

注意:

它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间。

  1. 硬链接:
  • 以文件副本的形式存在。但不占用实际空间。
  • 不允许给目录创建硬链接
  • 硬链接只有在同一个文件系统中才能创建
  • 给文件创建硬链接:

    ln 源文件 目标文件

注意:** 它会在你选定的位置上生成一个和源文件大小相同的文件。**

·


回到目录


回到末尾



4.10 文件编辑 – vi / gedit


Linux 文档编辑:vi和gedit


回到目录


回到末尾



五、防火墙开放端口,查看状态,查看开放端口



5.1 firewalld的基本使用命令

  1. 启动:

    systemctl start firewalld
  2. 关闭:

    systemctl stop firewalld
  3. 查看状态:

    systemctl status firewalld

    # active (running) 即是开启状态
  4. 开机禁用 :

    systemctl disable firewalld
  5. 开机启用 :

    systemctl enable firewalld
  6. 查看已开放端口命令:

    firewall-cmd --list-all
  7. 查看所有打开的端口:

    firewall-cmd --zone=public --list-ports
  8. 查询指定端口是否已开 : firewall-cmd –query-port=端口号/协议
  9. 查看版本:

    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

3



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

1


回到目录


回到末尾



六、查看与设置时间



6.1 基础命令:

  1. 系统时间:

    (1)查看系统时间:

    date


    (2)修改系统时间,当系统重新启动的时候就会还原:

    date -s '2022-09-12 22:00:00'
  2. 硬件时间:

    (1)查看硬件的时间:

    hwclock -r


    (2) 修改硬件的时间 也就是永久性修改Linux的时间:

    hwclock --set --date '2022-09-12 22:00:00'


    3.设置系统时间和硬件时间同步: hwclock –hctosys



6.2 离线下设置服务器时间与网络时间同步

步骤如下:

  1. 浏览器打开网页:

    时间校准网-中国时间-现在

    ,得到当前具体的时间信息;
  2. 执行linux命令:
#修改硬件时间
hwclock --set --date '2022-09-12 22:00:00'
#设置系统时间和硬件时间同步
hwclock --hctosys 
#查看当前时间,看与网页上时间是否一致
date

1

1


回到目录


回到末尾



七、修改访问密码

输入命令:

passwd


输入两遍密码,即可完成密码修改。

1


回到目录


回到末尾





回到目录



版权声明:本文为weixin_44462773原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。