linux命令大全

Bash命令

shutdown/halt/poweroff/reboot

作用:关闭/重启服务器

参数:shutdown  -h 将系统关机

                -c 取消关机任务

                -r 将系统重启

      #halt      -f 强制关机或重启

      #reboot   -w 模拟重启过程,将过程写入到日志中

 案列:

立即关机:shutdown -h now 等价于halt 等价于halt -f 等价于poweroff

立即重启:shutdown -r now 等价于reboot等价于reboot -w

晚上11点关机   shutdown -h 21:00

5分钟后关机,并通知所有人 shutdown+5 “system will shutdown after 5 minutes”

取消所有关机任务 shutdown -c

whoami命令

作用:打印当前登陆用户

语法:whoami

案列:查询当前登陆的用户名 whoami

who命令

作用:查看当前登陆用户信息

语法:who [参数]

参数:-a 全面信息

      -b 系统最近启动时间

      -l 系统登录进程

      -H 带有列标题打印用户名,终端和时间

     -t 系统上次锁定时间

     -u 已登录用户列表

     -q 列出所有已登录的用户的名称和数量

案列:查看当前登录用户信息 who

      查看当前登录用户信息,并加上标题栏 who -H

      查看当前全部的登录全部用户信息 who -H -a

      查看系统的最近启动时间 who -b

      显示终端属性 who -T -H

      精简模式显示 who -q

W命令

作用:显示已登录用户

语法:w [参数]

参数:-h 不打印头信息

      -u 当显示当前进程和cpu时间时忽略用户名

      -s 使用短输出格式

      -f 显示用户从哪登录

      -o 老式输出

-i 显示IP地址而不是主机名(如果可能)

案列;

显示目前登入系统的用户信息 w

不打印头信息 w -h

显示用户从哪登录 w -f

使用短输出格式 w -s

last命令

作用:显示用户或终端的登录情况

语法:last [选项]

参数:

-R 省略hostname的栏位

-a 把从何处登入系统的主机名称或IP地址,显示在最后一行

-n <显示行数>或-<显示行数> 显示名单的行数

-i 显示IP地址而不是主机名

案列:

显示近期用户或终端的登录情况  last

简略显示,并指定显示的个数 last -n 5 -R   等价于  last -5 -R

最后一列显示主机IP地址 last -n 5 -a -i

users命令

作用:显示当前登录的用户

案列:显示当前登录的用户   users

uname命令

作用:显示系统信息

语法:uname [OPTION]…

参数:-a 显示系统所有相关信息

      -m显示计算机硬件架构

      -n 显示主机名称

      -r 显示内核发行版本号

      -s 显示内核名称

      -v 显示内核版本

      -p 显示主机处理器类型

      -o 显示操作系统名称

      -i 显示硬件平台

案列:显示系统主机名,内核版本,硬件架构等信息

      #uname -a

      仅显示主机名 uname -n

      仅显示内核发行版本 uname -r

      仅显示内核名称 uname -s

      仅显示当前系统的硬件平台 uname -i

      打印操作系统类型 uname -o

sudo命令

作用:以系统管理员的身份执行指令

语法: sudo [参数]

参数: -l 显示当前用户的权限

       -u <用户> 以指定的用户作为新的身份,若不加上此参数,则预设以root作为新的身份

 配置文件:/etc/sudoers 授权用户/组 主机=[[切换到哪些用户或组]]命令

           查看配置文件 sudo visudo

                        #sudo vim /etc/sudoers

案列: 列出当期用户的权限 sudo -l

     指定用户身份执行命令 sudo -u alvin whoami

     以root权限执行上一条命令 sudo !!

id命令

作用 :显示用户ID和组ID

语法:id [参数] [用户名]

参数:-g 显示用户所属群组的ID

      -G 显示用户所属附加群组的ID

      -n 显示用户,所属群组或附加群组的名称

      -r 显示实际ID

      -u 显示用户ID

案列: 显示当前用户的所有信息 id

       显示指定用户信息 id alvin

       显示用户所属群组的ID id -g alvin

       显示用户所属附加群组的ID id -G alvin

hostname命令

作用:显示和设置系统的主机名

语法: hostname [参数]

注意:

环境变量HOSTNAME 也保存了当前的主机名 echo $HOSTNAME

使用hostname可临时设置主机名

永久修改主机名 方法1:修改配置文件 /etc/hostname   /etc/hosts

               方法2:hostnamectl命令 sudo hostnamectl set-hostname<newhostname>

                                一定要修改/etc/hosts

参数:

-a 显示主机别名

-d 显示DNS域名

-f 显示FQDN名称

-i 显示主机的ip地址

-s 显示短主机名称,在第一个点出截断

-y 显示NIS域名

案列:

显示主机名 hostname

临时改变主机名 hostname newname

显示主机的所有IP地址 hostname -I

dmesg命令

作用:显示开机信息

语法:dmesg [参数]

参数:-c 显示信息后,清除ring buffer中的内容

      -s<缓冲区大小>预设值为8196,刚好等于ring buffer的大小

      -n 设置记录信息的层级

案列:显示开机信息 dmesg

                   #dmesg | less

     显示和内存,硬盘,USB,TTY相关给的信息dmesg | grep -i memory

                                             dmesg | grep -i dma

                                             dmesg | grep -i usb

                                             dmesg | grep -i tty

     显示信息级别 dmesg -x emerg ,alert,…

     只输出特定级别的信息 dmesg –lever=err,warn

     显示时间戳 dmesg -T

     显示原始数据 dmesg -r

     清空dmesg 环形缓冲区中的日志 sudo dmesg -c

uptime命令

作用:查看系统启动时间及负载信息

语法:uptime [options]

参数:-p  显示机器正常运行的时间

     -s 系统启动时间,格式为yyyy-mm-dd hh mm.ss

案列 显示当前系统运行负载信息 uptime

     显示系统正常运行时间 uptime -p

     显示系统启动时间 uptime -s

free命令

作用:显示系统内存使用量情况。

语法:free [参数]

参数:-b 以Byte显示内存使用情况

      -k 以kb为单位显示内存使用情况

     -m 以mb为单位显示内存使用情况

     -g 以gb为单位显示内存使用情况

     -s 持续显示内存

     -t 显示内存使用总和

     -h 以易读的单位显示内存使用情况

输出内容介绍:

     Mem 行(第二行)是内存的使用情况

     Swap 行 (第三行)是交换空间的使用情况。

     Total 列显示系统总的可用物理内存和交换空间大小

     Used 列显示已经被使用的物理内存和交换空间

     Free 列显示还有多少物理内存和交换空间可使用

     Shared 列显示被共享使用的物理内存大小。

     Buff/cache 列显示被buffer 和cache使用的物理内存大小

     Available 列显示还可以被应用程序使用的物理内存大小。

案例 以默认的容量单位显示内存使用量信息 free

以MB为单位显示内存使用量信息 free -m

以易读的单位显示内存使用量信息 free -h

以易读的单位显示内存使用量信息,每个3秒刷新一次 free -hs 3

ulimit命令

作用; ulimit命令是shell的内建命令,同来控制shell程序的资源;通过对资源的控制可以达到系统调优的作用。

语法:ulimit [参数]

参数:-a 显示目前资源限制的设定

-c <core文件上限> 设定core文件的最大值,单位为区块。

      -d <数据节区大小> 程序数据节区的最大值,单位为KB

      -f <文件大小> shell所能建立的最大文件,单位为区块。

      -H 设定资源的硬性限制,也就是管理员所设下的限制

      -m <内存大小> 指定可使用内存的上限,单位为KB

      -n <文件数目> 指定同一时间最多可开启的文件数

      -p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。

      -s <堆叠大小> 指定堆叠的上限,单位为KB.

      -S 设定资源的弹性限制

      -t <CPU时间> 指定CPU使用时间的上限,单位为秒/

      -u<程序数目> 用户最多可开启的程序数目。

      -v<虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB

案列: 显示系统资源的设置  ulimit -a

      设置单一用户程序数目上限 ulimit -u  500

     将每个进程可以打开的文件数目加大到4096 ulimit – n 4096

     指定可使用的虚拟内存上限为12800KB  ulinit -v 12800

     指定CPU使用时间的上限为2s  ulinit -t 2

Init命令

作用:切换系统运行级别

案列:

Init 0 关机

Init 1 单用户模式;也就是说只能有一个用户在这边操作

Init 2多用户,没有NFS不联网

Init 3 切换到多用户-命令行模式

Init 4 没有用到

Init 5 图形化界面模式

Init 6 重新启动

pwd命令

作用显示当前路径

rename命令

作用:用字符串替换的方式批量改变文件名

语法:rename ‘s/old-name/new-name/’ files

原字符串:将文件名需要替换的字符串;

目标字符串:将文件名中含有的原字符替换成目标字符串;

文件:指定要改变文件名的文件列表

通配符: ?可替代单个字符

*可替代多个字符

参数:-n 模拟运行,实际命令没进行重命名

      -v输出每步执行信息

      -f 强制改写

案列:将myfile.txt改成myfile.doc    rename ‘s/.txt/.doc/’ myfile.txt

      模拟将file1.txt,file2.txt,file3.txt改为file01.txt,file02.txt,file03.txt,

  #rename -n ‘s/file/file0’ file*

basename命令

作用:提取一个文件完整的路径名的文件名;还可以根据需求删除指定的后缀。

语法:basename NAME [SUFFIX]

      Basename OPTION…NAME…

参数:-a 支持处理多个文件

      -s 删除指定后缀

案例: 提取文件名 basename /ect/passwd

      提取目录名(删除最后的/)basename /usr/local/

      提取多个输入 base -a /etc/passwd /uer/local/

      删除指定后缀 basename /etc/sysctl.conf .conf

                   basename -s .conf /etc/sysctl.conf

dirname命令

作用:去除文件名中的非目录部分  等价于 他会把一个路径名中的目录部分提取出来

语法:dirname [OPTION] NAME…

案列:提取文件的路径:dirname /usr/bin/cat

      提取目录的路径:dirname /home/liangxu/commands

Chattr命令

作用:更改文件属性 (除了读写执行普通权限之外,还有很多隐藏的权限属性,下面列出来)

语法: chattr [-pRVf] [-+=aAcCdDeijPsStTuFx] [-v version] files...

属性:A:即Atime,告诉系统不要修改对这个文件的最后访问时间

      S:  即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。

      a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

      b:  不更新文件或目录的最后存取时间。

      c:  将文件或目录压缩后存放。

      d:当dump程序执行时,该文件或目录不会被dump备份

      D:  检查压缩文件中的错误

      i:即immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

      s:  彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。

      u:  当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。

      t:文件系统支持尾部合并(tail - merging)

         X:可以直接访问压缩文件的内容。

参数:-R递归处理目录下的所有文件

      -v 设置文件或目录版本

      -V 显示指令执行过程

      +开启文件或目录的该项属性

      -关闭文件或目录的该项属性

      =指定文件或目录的该项属性

案列:防止某个关键文件被修改 chattr +i file.txt

      解锁  chattr -i file.txt

      只允许文件追加内容(对日志文件特别有用)  chattr +a file.txt

      对一个目录中的所有文件添加限制  chattr -R +i dir

      查看文件属性 lsattr file.txt

file命令

作用:识别文件类型

语法:file [参数] 文件

参数:-b 列出文件类型,不显示文件名称

      -c 详细显示指令执行过程

      -f 指定名称文件,显示多个文件类型信息、

      -L 直接显示符号连接所指向的文件类别

      -m 指定魔法数字文件

      -z 尝试去解读压缩文件的内容

      -i 显示MIME类别

案列; 查看文件的类型 file file.txt    file dir   file /dev/sda

      查看文件类型,但不显示文件名 file -b file.txt

      显示MIME类别  file -i file.txt

      查看某个符号链接文件(快捷方式)的类型 file /dev/cdrom

      直接查看某个符号链接文件(快捷方式)所对应的目标文件的文件类型

   file -L /dev/cdrom

md5sum命令

作用:生成和校验文件的MD5值

语法: md5sum [OPTION]…[FILE]…

参数: -b 以二进制模式读取文件

       -t 以文本模式读入文件内容

       -c 根据已生成的msd5值,对现存文件进行校验

       --status 校验完成后,不生成错误或正确的提示信息,可以通过命令的返回值来判断

案列: 生产file.txt文件的md5值 md5sum file.txt

       不同模式计算同一个文件的md5值 md5sum-b file.txt  ; md5sum-t file.txt

       将生成md5值重定向到指定的文件 md5sum file.txt > file md5

       Md5校验  md5sum -c file.md5

       Md5校验,不显示任何输出,用返回码表示成功与否

   md5sum-c –status file.md5

   echo $?

stat命令

作用:显示文件或文件系统的详细信息

语法:stat [OPTION]…FILE…

参数:-L支持符号链接

      -f 显示文件系统的信息

      -t 以简洁的方式输出

三种时间:atime : access time访问时间

读取文件(more/less/cat/tail),修改文件(vim/nano)时改变

          mtime : modify time 修改时间

(vim/nano)时改变

          ctime : change time 状态改变时间 

修改文件(vim/nano),文件属性变化(chmod / chown)时改变。

案列:查看文件file.txt的信息 stat file.txt

      查看file.txt文件所在文件系统信息 stat -f file.txt

      以简洁方式输出信息 stat -t file.txt

tree命令

作用:以树状图列出目录内容

语法:tree [参数]

参数:-a 显示所有文件和目录

      -L 层级显示

      -t 用文件和目录的更改时间排序

      -r 用文件和目录的更改时间倒序排序

      -f 在每个文件或目录之前,显示完整的相对路径名称

      -d 显示目录名称而非内容

案列:显示当前目录下的文件和目录  tree

      显示所有文件和目录 tree -a

      只显示目录 tree -d

      只显示n层目录 (n为数字)tree -L 2

      显示权限信息 tree -p

      用文件和目录的更改时间排序 tree -t

      以相反次序排序 tree -r

      显示完整的相对路径  tree -f

locate命令

作用:快速查找文件或目录

语法:locat [参数] [文件

参数: -i 忽略大小写

案列:查找系统中所有file.txt 文件

     #locate file.txt

      搜索路径中包含/etc/sh的文件

     #locate /etc/sh

      查找和whereis相关的所有文件

     #locate whereis

      查找/home/liangxu/commands/locate 目录下所有以f开头的文件,不区分大小写

     #locate -i locate/f

cat命令

作用:在终端上显示文件内容

语法:cat [OPTION]…[FILE]…

参数:-n 显示行数(空行也编号)

      -s 去除重复的空行

      -b 显示行数 (空行不编号)

      -E 每行结束处显示$符号

      -T 将TAB字符显示为 ^l符号

案列:查看file.txt文件内容

#cat file.txt

      查看多个文件内容

#cat file1.txt file2.txt

      查看file.txt文件内容,并显示行数编号

#cat -n file.txt

      去除重复的空行

#cat -s file.txt

      重定向文件内容

#cat file.txt > file1.txt  如果file1.txt不存在,则创建,并且内容会被覆盖

#cat file.txt >> file1.txt  如果file1.txt不存在,则创建,并且内容会被追加到末尾

      将file1.txt 和 file2.txt 合并为一个文件

#cat file1.txt file2.txt > combinedfile.txt

      使用cat创建文件(按键Enter入文本,完成后按CRTL+D保存文件)

#cat > file.txt

join命令

作用:连接两个文件

语法:join [OPTION]…FILE1 FILE2

参数:

-a1或-a2 除了显示共同域的记录之外,-a1显示第一个文件没有共同域的记录,-a2显示第二个文件中没有共同域的记录

-o 设置结果显示的格式

-t 改变域的分割符

-v1或-v2不显示共同域的记录之外,-v1显示第一个文件没有共同域的记录,-v2显示第二个文件中没有共同域的记录

-j 指定一个域作为匹配字段

案列:

连接两个文件: 默认以第一列作为连接字段  join file1.txt file2.txt

               显示左边文件中的所有记录(右边文件中没有匹配的不显示) join -a1 file1.txt file2.txt

               显示右边文件中的所有记录(左边文件中没有匹配的不显示) join -a2 file1.txt file2.txt

               全连接(显示左边和右边所有记录)join -a1 -a2 file1.txt file2.txt

指定输出字段:join -o 1 2 1 3 2 3 file1.txt file2.txt

指定分隔符: join -t ‘’ file1.txt file2.txt

tr命令

作用: 转换或删除文件中的字符

语法:tr [OPTION]…SET1 [SET2]

参数:-c 反选设定字符。也就是符合SET1的部分不做处理,不符合的剩余部分才进行转换。

      -d 删除子集合中出现的所有字符

      -s 缩减连续重复的字符成指定的单个字符

可以使用的字符类:

字母和数字 [:alnum:]

字母 [:alpha:]

案列:

大小写转换 

tr “[a-z]” “[A-Z]” < file.txt  等价于 cat file.txt | tr a-z A-Z  等价于 echo “Hello World” | tr [:lower:] [:upper:]

(大小写互换) echo “Hello World” | tr ‘[A-Za-z]’ ‘[a-zA-Z]’

删除字符

删除小写字母 echo “abcABdefCD” | tr -d “[a-z]”

删除数字  echo “abcABdefCD123” | tr -d 0-9

删除空格和tab符  echo “   Hello World “ | tr -d ‘[ \t]’

删除不在指定集合中的字符  echo -e “abc123*&\n def888” | tr -d -c ‘0-9 \n’

删除重复字符,只保留一个

压缩重复的空白行  echo -e “1\n\n2\n\n\n3” | tr -s ‘\n’

删除字符集中的重复字符 echo “Hellooo Linuxxxxx” | tr -s “[ xo]”

将多个连续空格合并为一个空格,并将空格替换为破折号‘-’  echo “2022   05  16” | tr -s ‘ ‘  ‘-‘

将制表符转换为空格

echo -e “hello\tworld” | tr ‘\t’ ‘ ‘

service命令

service 命令仅支持基本的 LSB 操作(start、stop、restart、try-restart、reload、reload-or-restart、try-reload-or-restart、force-reload、status、condrestart)。对于其他操作,请尝试使用 systemctl。

作用:控制系统服务

语法:service [参数]

参数:--status-all 显示所有服务的状态

     启动服务 start

     停止服务 stop

     重新启动服务 restart

     查看服务运行状态 status

     重新载入服务配置 reload

案列 查看系统中所有服务现在的运行状态 service --status-all

     查看sshd 运行状态 service sshd status

     启动sshd服务  service sshd start

    停止sshd服务  service sshd stop

    重启sshd服务 service sshd restart

vmstat命令

作用:显示虚拟内存状态

语法:vmstat [选项] [时间间隔] [次数]

参数:-m :显示slab信息

      -n:只在开始时显示一次各字段名称。

      -s:显示内存相关统计信息及多种系统活动数量

      #delay:刷新时间间隔,如果不指定,只显示一条结果。

      #count:刷新次数。如果不指定刷新ci

      -d :显示磁盘相关统计信息。

      -p:显示指定磁盘分区统计信息

      -S:使用指定单位显示。参数有k, K, m, M, 分别代表1000,1024,1000000,1048576字节(byte).默认单位为K(1024bytes)

案列:

#vmstat 显示虚拟内存的使用情况

#vmstat 1 指定状态信息刷新的时间间隔为1秒

#vmstat -a 显示活跃和非活跃内存统计信息

#vmstat -f 显示从系统启动以来的fork数量

#vmstat -s 显示内存使用的详细信息

#vmstat -d 显示磁盘相关统计信息(磁盘的读/写情况)

#vmstat-p /dev/sda1 查看/dev/sda1磁盘分区的读/写情况

#sudo vmstat -m 显示系统的slabinfo

iostat命令

作用:监视系统输入输出设备和CPU的使用情况

语法:iostat [参数] [设备]

参数:-c 仅显示CPU使用情况

      -d 仅显示设备利用率

      -k 显示状态以千字节每秒为单位,而不使用块每秒

      -m 显示状态以兆字节每秒为单位

      -p 仅显示块设备和所有被使用的其他分区的状态

      -t 显示每个报告产生是的时间

      -x 显示扩展状态

案列:显示所有设备负载情况 iostat

     每隔2秒显示一次,总共显示3次 iostat 2 3

     显示指定磁盘信息iostat -d sda1

     显示tty和Cpu信息 iostat -t

     以M为单位显示所有信息 iostat -m

     查看TPS和吞吐量信息 iostat -d -k 11

     查看磁盘I/O的详细情况 iostat -x /dev/sda1

     查看设备使用率(%util),响应时间(await)

     查看cpu状态 iostat -c 1 3

ipcs命令

作用:显示进程间通讯设备的信息

语法:ipcs [参数]

参数

默认的输出信息 -a

打印出使用共享内存进行进程间通信的信息 -m

打印出使用消息队列进行进程间通信的信息 -q

打印出使用信号进行进程间通信的信息 -s

案列:

显示所有的IPC   ipcs     ipcs -a

输出信息的详细变化时间 ipcs -t

输出ipc方式的进程ID ipcs -p

输出ipc方式的创建者/拥有者ipcs -c

输出当前系统下ipc各种方式的状态信息ipcs -u

查看各个资源的系统限制信息ipcs -l

ipcrm命令

作用:删除一个或更多的消息队列,信号量集或者共享内存标识。

语法:ipcrm [options]

案列:通过id删除共享内存 ipcrm -m 262144

      通过key删除共享内存ipcrm -M 0X55

      通过id删除消息队列 ipcrm -q 252432

通过key删除消息队列 ipcrm -Q 0X88

      通过id删除信号量 ipcrm -s 242438

      通过key删除信号量 ipcrm -S 0X65

      删除所有共享内存,信号量和消息队列 ipcrm -a

      删除所有共享内存,信号量和消息队列,并且显示过程 ipcrm -v -a

route命令

作用:显示并设置路由

语法:

参数:-n :不要使用通讯协定或主机名称,直接使用IP或port number

      -net:表示后面接的路由为一个网域:

      -host:表示后面接的为连接到单部主机的路由

     -netmask:与网域有关,可以设定netmask决定网域的大小

-gw:gateway的简写,后续接的IP的数值噢,与dev不同

-dev:如果只是要指定由哪一块网卡连线出去,则使用这个设定,后面接eth0等

Flag:

U up 表示此路由当前为启动状态

H host,表示此网关为一主机

G gateway,表示此网关为一路由器

R reinstate route,使用动态路由重新初始化

D dynamically,此路由是动态性地写入

M Modified,此路由是由路由守护程序或导向器动态修改

!表示此路由当前为关闭状态

案例:

显示当前路由 route     route -n

添加网关/设置网关 route add -net 224.0.0.0 netmask 240.0.0.0 dev ens33

屏蔽一条路由 route add -net 224.0.0.0 netmask 240.0.0.0 reject

删除路由记录 route del -net 224.0.0.0 netmask 240.0.0.0

             route del -net 224.0.0.0 netmask 240.0.0.0 reject

ping命令

作用:测试主机间网络连通性

语法:ping [参数] 目标主机

参数:-c 指定发送报文的次数

      -i 指定收发信息的时间时间

      -s 设置数据包的大小

      -t 设置存活数值TTL的大小 linux系统的TTL值为64或255

案列:测试与百度网站的连通性 ping www.baidu.com

      连续 ping 4次 ping -c 4 www.baidu.com

    连续 ping 4次,间隔3秒 ping -c 4 -i 3 www.baidu.com

测试局域网连通性 ping 192.168.107.128

设置数据包为1024字节,TTL为255 ping -s 1024 -t 255 www.baidu.com

traceroute命令

作用:追踪数据包在网络上的传输时的全部路径

语法:tranceroute [参数] [域名或者IP]

参数:-m <存活数值>设置检测数据包的最大存活数值TTL的大小

      -n 直接使用IP地址而非主机名称

      -p <通信端口>设置UDP传输协议的通信端口

      -r 忽略普通的Routing Table ,直接将数据包送到远端主机上

      -w 设置等待远端主句回报的时间

案列:追踪本地数据包到百度的传输路径 traceroute www.baidu.com

      跳数设置 traceroute -m 7 www.baidu.com

      显示ip地址,不查主机名 traceroute -n www.baidu.com

      把探测包的个数设置为值4 traceroute -q 4 www.baidu.com

      把对外发探测包的等待响应时间设置为3秒 traceroute -w 3 www.baidu.com

      探测包使用的基本UDP端口设置6888  traceroute -p 6888  www.baidu.com

      绕过正常的路由表,直接发送到网络相连的主机 traceroute -r www.baidu.com

Ifconfig命令

重启后配置参数会实现。

参数 :

#add<地址>设置网络设备IPv6的IP地址

#del<地址>删除网络设备IPv6的IP地址

#down关闭指定的网络设备

#up启动指定的网络设备

IP地址  指定网络设备的IP地址

案列:

显示网络设备信息 ifconfig

关闭打开指定网卡ifcong eth0 down/up

配置IPV4地址:sudo

 ifcong eth0 192.168.1.156 #为网卡eth0配置IP地址

 ifcong eth0 192.168.1.156 netmask 255.255.255.0 #加上子网掩码

 ifcong eth0 192.168.1.156 netmask 255.255.255.0 broadcast 192.168.1.255 #再加上广播包

为网卡配置和删除IPV6地址

ifcong eth0 add 33ffe:3240:800:1005:2/63 #为网卡eth0设置IPv6地址

ifcong eth0 del 33ffe:3240:800:1005:2/63 #为网卡eth0删除IPv6地址

修改MAC地址

ifcong eth0 down/up

ifcong eth0 hw ether 00:AA:BB:CC:DD:EE

启用和关闭ARP协议

ifcong eth0 arp #开启

ifcong eth0 -arp #关闭

设置最大传输单元 ifcong eth0 mtu 1500 #设置能通过的最大数据包大小为1500bytes

ifup/ifdown命令

作用:激活/禁用网路接口

语法:ifup(网络接口)

      Ifdown(网络接口)

案列:sudo ifup ens33

      Sudo ifdown ens33

ftp命令

作用:文件传输协议客户端

语法:ftp [参数] [主机名或IP]

增加ftp写权限:

第一步:sudo gedit /etc/vsftpd.conf

第二步:去除#write_enable=YES前的#

第三步:sudo service vsftpd restart

案列:

安装ftp sudo apt install vsftpd

建立FTP连接 ftp 192.168.107.133

下载一个文件 get file.txt

下载多个文件 mget file1.txt file2.txt

上传一个文件 put newfile.txt

上传多个文件mput newfile1.txt newfile2.txt

sftp命令

作用:交互式文件传输程序

语法:sftp [参数] [IP或主机名]

案列:

使用SFTP进行连接服务器 sftp liangxu@192.168.107.133

指定端口连接 sftp -P 30 liangxu@192.168.107.133

查看sftp支持的命令 help  等价于  ?

从远程服务器下载文件到本地 get file.txt

从远程服务器下载目录到本地 get -r dir

从本地上传文件到远程服务器 put newfile.txt

从本地上传目录到远程服务器 put -r newdir

执行本地Shell命令 !command  !echo hello world

退出    bye  等价于  exit

lftp命令

作用:一款优秀的文件客户端程序

语法:lftp(选项)(参数)

案列:

登陆远程服务器 lftp liangxu@192.168.107.133

查看lftp支持的命令 help 等价于 ?

从远程服务器下载文件到本地 get file.txt

                           # mget file*.txt

                           #mget -c *.txt

从远程服务器下载目录到本地 mirror dir

从本地上传文件到远程服务器 put newfile.txt

                           # mput newfile*.txt

从本地上传目录到远程服务器 mirror -R newdir

退出 bye  等价于 exit

wget命令

作用:文件下载

语法:wget [option]…[URL]…

参数:

-i 下载指定文件里列出的地址

-O 下载后重命名文件

-c 打开断点续传

-b 启动后转入后台执行

-P指定保存路径

案列:

使用wget下载单个文件 wget https://cn.wordpress.org/latest-zh_CN.zip

使用wget下载多个文件 vim urllist.txt  wget -i urllist.txt

下载后以不同的文件名保存 wget -O wp.zip https://cn.wordpress.org/latest-zh_CN.zip

下载后保存到指定目录 wget -P dir https://cn.wordpress.org/latest-zh_CN.zip

Wget限速下载 wget –limit-rate=300k https://cn.wordpress.org/latest-zh_CN.zip

打开断点续传功能 wget -c https://cn.wordpress.org/latest-zh_CN.zip

使用wget后台下载 wget -b https://cn.wordpress.org/latest-zh_CN.zip

     #tail -f wget-log 查看下载进度

scp命令

作用:远程拷贝文件

参数: -r 递归复制整个目录

       -p 保留原文件的修改时间,访问时间和模式

       -P 制定数据传输用到的端口号

案列:从远程复制文件到本地

      #scp liangxu @192.168.107.128:/home/liangxu/commands/scp/file.txt .

      从远程复制目录到本地

     #scp -r liangxu @192.168.107.128:/home/liangxu/commands/scp/dir/ .

     上传本地文件到远程机器指定目录

     #scp newfile.txt liangxu@192.168.107.128: /home/liangxu/commands/scp/

上传本地目录到远程机器指定目录

   #scp -r newdir/ liangxu@192.168.107.128: /home/liangxu/commands/scp/

使用指定的端口号传输数据

 #scp -P 2222 liangxu @192.168.107.128:/home/liangxu/commands/scp/file.txt .

保留文件的最后修改时间及访问时间

#scp -p liangxu @192.168.107.128:/home/liangxu/commands/scp/file.txt .

host命令

作用:域名查询

语法:host [参数] [域名]

参数:

-a 显示详细的DNS信息

-v 显示指令执行的详细信息

案列:查询域名对应的IP地址 host www.baidu.com

     显示执行域名查询的详细信息  host -v www.baidu.com

     显示详细的DNS信息 host -a www.baidu.com

tcpdump命令

作用:监听网络流量

案列:

监视第一个网络接口上所有流过的数据包 tcpdump

监视指定网络接口的数据包  tcpdump -i ens33

显示指定数量包 tcpdump -c 20

精简模式显示10个包 tcpdump -c 10 -q

监听指定主机的数据包(主机名)tcpdump host www.baidu.com

监听指定主机的数据包(IP地址)tcpdump host 192.168.107.133

监听指定端口号的数据包,并以文本形式展示 tcpdump -i any port 22 -A

nc命令

作用:设置路由器

参数:-v 显示指令执行过程

      -w<超时秒数>设置等待连线的时间

      -z 使用0输入/输出模式,只在扫描通信端口时使用

      -n 直接使用IP地址,而不通过域名服务器。

      -u 使用UDP传输协议

      -I 使用监听模式,,管控传入的资料

案列:扫描指定ip的TCP端口,范围1-100 nc -v -z -w2 192.168.107.133 1-100

     扫描指定ip的UDP端口,范围1-100 nc -u -z -w2 192.168.107.133 1-100

扫描指定端口 nc -nvv 192.168.107.133 22

监听某个端口 nc -l 1234

连接某个端口 nc 192.168.107.133 1234

set/unset命令

作用:设置/删除shell变量

语法:set[参数][变量]

      #unset[参数][变量]

参数set  -a 标示已修改的变量,以供输出至环境变量

    #unset  -f 仅除删函数

            -v 仅删除变量

案列 显示所有的shell’变量  set

     设置环境变量 第一步 定义新的环境变量 declare myenv=’666’

                  第二步 将定义的变量输出为环境变量set -a myenv

                  第三步 查看是否设置成功 env | grep myenv

     删除环境变量 unset -v myenv

                  Unset myenv #优先删除变量

history命令

作用:显示与管理历史命令记录

语法:history [参数]

参数:-c 清空命令记录

      -d 删除指定序号的命令记录

      -n 读取命令记录

案列:显示执行过的全部命令记录 history

      显示执行过的最近5条命令 history 5

      重新执行2039命令  !2039

      重新执行上一条命令  !!

      将搜索与你输入相匹配的最近一个命令,并重新执行它 !ls

      调用命令历史记录的递归搜索   ctrl+r

      如果想要删除特定命令 history -d 1234

      清空全部历史记录   history -c

login/logout命令

作用:登入/登出系统

exit命令

作用:退出终端/ssh连接

案例:退出终端/SSH连接 exit    等价于    ctrl+d

xargs命令

作用:过滤器

参数:-n:多行输出

      -d:自定义一个定界符

      -l:指定一个替换字符串{}

      -t:打印出xargs执行的命令

      -p:执行每一个命令时弹出确认

案列:多行输入单行输出 cat file.txt | xargs

     多列输出 cat file.txt | xargs -n3

      自定义一个分隔符 echo “helloX helloX helloX hello” | xargs -dX

      执行每一个命令时弹出确认echo “helloX helloX helloX hello” | xargs -dX -p

      指定一个替换字符串{}  cat arg.txt | xargs -I {} echo {}

     打印出xargs 执行的命令 ls | xargs -t -l {} echo {}

     将当前目录下所有.txt文件移动到dir 目录下 find. -name “*.txt” | xargs -I {} mv {} dir

使用wget下载url-list.txt下所有的URL cat url-list.txt | xargs wget -c

exec命令

作用:调用并执行指定的命令

语法:exec[参数][命令]

参数:-c 执行指定的命令

案列:调用并执行指定的命令 exec -c echo hello world

      结合find命令使用 find . -name”*.txt” -exec ls {} \;

alias/unalias命令

作用:设置/取消命令别名

案列:查看系统已经设置的别名 alias

      给命令设置别名alias “rm=rm -i”

      取消别名:unalias

type命令

作用:显示指定命令的类型

语法:type [参数][命令]

参数:-a 可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。

      -p 只返回外部命令信息,相当于which命令

      -f 只返回shell函数的信息

      -t 返回指定类型的信息

类型:alias 别名

     #keyword关键字,Shell保留字

     #function函数,Shell函数

     #builtin 内建命令,Shell内建命令

     #file 文件,磁盘文件,外部命令

     #unfound 没有找到

案列:查看命令类型

别名:type -t ls

文件:type -t cut

关键字:type -t for

内建命令:type -t pwd

显示包含该命令的所有位置 type -a pwd

时间相关

date命令

作用:显示或设定系统日期和时间

参数:-d <字符串>显示字符串所指的日期与时间,字符串前后必须加上双引号;

      -s <字符串>根据字符串来设置日期与时间。字符串前后必须加上双引号;

      -u 显示目前的格林威治时间

日期格式字符串列表:

案列:

以默认格式显示当前时间和日期  date

以指定格式输出当前时间和日期date +“%Y%m%d %H:%M:%S”

显示时间的同时加入更多信息

显示昨天的日期 date -d yesterday +”%Y%m%d”

同理,也可以查看类型日期 date -d next-month +%Y%m%d

                        #date -d last-year + %Y%m%d

                        #date -d “7 days” + %Y%m%d

日期的加减操作         #date -d “+1 year” + %Y%m%d

                      #date -d “+1 day” + %Y%m%d

                      #date -d “-1 month” + %Y%m%d

设置日期与时间       #date --date ”12:34:56”

                     #date -s ”12:34:56”

cal命令

作用:显示日历

语法:cal [参数][月份][年份]

参数:-1 显示一个月的月历

     -3 显示系统前一个月,当前月,下一月的月历

     -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)

     -y 显示当前年份的日历

案列:

显示当前月份日历 cal  等价于  cal -1

显示近期三个月的日历      cal -3

显示指定年月的日历    cal 5 2021

显示指定年份的全部日历 cal -y 2021

                      #cal 2021

显示自1月1日的天数  cal -j

crontab命令

作用:定时执行任务

语法:crontab [参数]

参数:

-e 编辑该用户的计时器设置

-l 列出该用户的计时器设置

-r 删除该用户的计时器设置

-u 指定要设定计时器的用户名称

使用crontab设置任务:

未设置的字段以星号*占位

  • 例:15,代表第1分钟到第5分钟执行(其余类推)

/  例: */10,代表每10分钟执行(其余类推)

,例:1,3,5,代表第1,3,5分钟执行(其余类推)

字段说明:

#minute  表示分钟,0-59

#hour 表示小时,0-23

#day 表示日期,1-31

#month 表示月份,1-12

#week 表示星期,0-7

#command 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件

案列:

创建,编辑计划任务 crontab -e

查看当前计划任务 crontab -l

删除该用户的计划任务 crontab -r

计划任务实例:

每一分钟执行一次/bin/ls   ***** /bin/ls

每小时的第3和第15分钟执行/usr/bin/pwd  3,15 **** /usr/bin/pwd

每月每天的午夜0点30分,3点30分,6点30分…执行echo“haha”:

30

每两个小时重启一次smb

at/atq/atrm命令

作用:时间执行一个任务

语法:at [参数][脚本][时间]

参数:-d 删除系统中的等待作业(等效于atrm命令)

-c 打印任务的内容

-q 使用指定的队列

-f 将指定文件提交等待作业

-t 以时间的形式提交运行作业

案列:

查看系统中的等待作业 atq

删除系统中的等待作业 at -d 1    等价于 atrm 1

交换式创建任务 at 5 pm   echo “hello world”

                         保存ctrl+d

                         取消ctrl+c

立即执行脚本  at -f script.sh now

5分钟后执行脚本 at -f script.sh now+5 min

在17:00执行脚本 at -f script.sh 17:00

在2022年7月1日执行脚本at -f script.sh 07/01/2022

time命令

作用:显示命令执行时所消耗的时间

语法:time [参数] [命令]

时间:

real:是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。

user: 是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。

sys:是指花费在内核模式中的CPU时间,代表在内核中系统调用所花费的时间,这也是真正由进程使用的CPU时间。

案列:显示命令date的时间统计结果 time date

watch命令

作用:周期性执行命令

语法:watch [参数][命令]

参数:-n 指定间隔的时间

      -d 高亮显示变化的区域

案列:重复执行uptime命令   watch uptime

      每隔1秒执行一次uptime,并高亮显示变化的数字 watch -n 1 -d uptime

      监测当前目录中file文件的变化  watch -d “ls -l | grep file”

      监测磁盘inode和block数目变化情况 watch -n 1 -d “df -i; df”

bc命令

作用:数字计算器

语法:bc [选项]

案列:进入计算器 bc

计算:加减乘除  + - * /

      平方 ^  10^10

      平方根  sqrt   sqrt(100)

      设置小数位 scale  echo “scale=2;(2.3444-1.234)/1” | bc

      进制转换  echo ”obase=10;ibase=2;110110” | bc

退出:quit

ls命令

 

ls命令是list的意思:列出,列表等可以查看当前目录下的子目录和子文件(不包含隐藏文件)

linux操作系统中,所有的隐藏文件都是 .开头的

ls -a

a是all的意思,表示所有。

列出包含隐藏文件在内的所有文件。

ls -l

表示长格式输出 long format

ls -al   等同于 ls -a + ls -l 的功能      可以简写为ll -a

ll -a /home/powernode   可以指定查看某个目录下的所有文件详情

ls命令扩展

作用:显示目录信息

语法:ls [OPTION]…[FILE]…

参数:-a 显示所有文件及目录(包括以 . 开头的隐藏文件)

      -l 使用长格式列出文件及目录信息

      -r 将文件以相反次序显示(默认依英文字母次序)

      -t 根据最后的修改时间排序

      -h 以人类可读的格式显示数字大小

      -A同-a,但不列出 .(当前目录)及 ..(父目录)

      -S 根据文件大小排序

      -R递归列出所有子目录

      -F 在列出的文件名称后加-符号;例如可执行档则加*,目录则加 /

案列:列出当前目录所有文件(包括隐藏文件)ls -a

      列出当前目录文件的详细信息 ls -l

      列出根目录下所有文件 ls /

      列出当前目录下所有文件和目录的详细信息(包括子目录内容)ls -Lr

      列出当前目录下所有以f开头的文件的详细信息 ls -l f*

      列出当前目录下所有文件,并根据修改时间倒序排列 ls -ltr

      列出目前工作目录下所有文件及目录;目录于名称后加 /,可执行档于名称后加*

      列出当前目录详细信息并以可读大小显示文件大小 ls -lh

DevOps实战派

1. 不带参数运行ls

不带参数运行ls会只列出文件或者目录。看不到其他信息输出。

2. 使用长清单模式

使用-l字符(小写L字符),会显示当前目录内容的长列表。在接下来的例子中,我们会结合-l参数(这个参数经常使用)来得到更好的结果。

3. 显示文件大小ls -lh

以字节为单位看大小可能会不方便。6.5M读起来比6727680字节更简单。要这么做,我们可以使用-h与-l结合的参数。

另外一个可以这么做的参数是–si。这个参数和-h参数类似,但是-si以1000为单位,而-h以1024为单位。

4. 排序文件大小ls -lhS

在我们可以显示文件大小之后,我们希望以文件大小排序。我们可以使用-S参数来这么做。这列表会从大到校排序

5. 测量大小

ls可以通过使用[root@R9MB ~]# ls -l --block-size=M改单位大小。这里的SIZE是:

K = Kilobyte

M = Megabyte

G = Gigabyte

T = Terabyte

P = Petabyte

E = Exabyte

Z = Zettabyte

Y = Yottabyte

比如,我们希望使用MB作为单位大小。所以语法就会像这样:

[root@R9MB ~]# ls -l --block-size=M

6. 显示隐藏文件ls -a

在Linux中,以”.”(点号)开头的文件是隐藏文件。为了在ls命令中显示它,我们可以使用-a选项。

7. 只列出目录条目ls -d */

如果我们希望只列出目录,我们可以使用-d选项。

8. 不打印所有者信息ls -lg

要这么做,我们使用-g选项。

9. 不打印组信息ls -lG

-g隐藏了拥有者信息,—G会隐藏组信息。

10. 打印UID和GID ls -n

如果你想以数字方式列出项的所有者和所有组(即UID和GID),我们可以带-n选项使用ls命令。

11. 不带颜色打印

一些Linux发行版已经对ls命令启用彩色。这会使ls以各种颜色打印列表。如果你不想要这样,你可以使用 --color=never 参数。

[root@R9MB tmp]# ls --color=never

12. 打印每个文件的索引号 ls -li

为了打印索引或者大家俗称的inode号,我们可以使用-i选项。索引号会显示在第一列。

13. 增加 / (斜线) 标记目录 ls -p

要这么做,使用-p选项。

14. 排序时反转顺序 ls -r

你或许需要在列出条目时反转顺序。要这么做,你可以使用-r选项。

15. 递归列出子目录 ls -R

带-R参数后,你可以列出包含它子目录的目录。

16. 扩展名排序 ls -lX ls -l --sort=extension

你可以使用-X参数或者–sort=extension来通过扩展名来排序(这样对于筛选不同类型的文件很有用)。

17. 通过修改时间列出 ls -lt

使用-t选项会按修改时间排序,新的文件在前。

18. 列出你的主目录 ls ~

要列出你的主目录,你可以用”~”(波浪号)来代表它。这样你就不必输入完整的目录名。让我们假设家文件名为/home/pungki,那么波浪号就对/home/pungki有意义了。

19. 列出父目录

无论你在那个目录,你可以列出父目录而不必输入完整路径。这是个例子。ls ../

这回列出1层之上的目录内容。 ls ../../

这回列出2层之上的目录内容(译注:可不支持“…”来代表2层之上)。

20. 打印ls命令版本

使用–version参数打印它。 [root@R9MB /]# ls --version

文件权限

cd命令

cd命令:change directory

          引入绝对路径/相对路径

          引入快捷键 cd .. 回到上级目录    cd .. /..回到上级目录的上级目录

                             cd ~   回到主目录     cd /回到根目录

                             cd /home/powernode  切换到/home/powernode目录下

cd命令扩展

作用:切换目录

语法:cd [参数] 目录

几个特殊目录 :

~ 用户家目录

. 当前目录

.. 当前目录的上一级目录

/ 根目录

 - 上一次所在的目录

 相对路径与绝对路径:

     起始路径为/的称为绝对路径;起始路径不是为/的称为相对路径

案列:

切换到dir目录 cd dir

切换到上两级目录 cd../..

切换到家目录 cd ~

             cd

切换到上一次所在的目录 cd -

mkdir新建目录

mkdir abc (mkdir是新建目录的命令,abc是一个目录名)在当前目录下新建目录abc

mkdir -p a/b/c (-p参数表示,一次创建多重目录)

mkdir -p a/kk/ff (虽然a已经存在了,但是不会报错,直接在目录下新建kk目录,kk目录下新建ff目录)

Mkdir附赠

作用:创建目录 注意:默认状态下,如果要创建的目录已经存在,则提示已存在,而不会继续创建目录。新建的目录与它所在目录下的文件有重名也不行

语法:mkdir [OPTION]… DIRECTORY

参数:-p 递归创建多级目录

      -m 建立目录的同时设置目录的权限

      -v显示目录的创建过程

案列:mkdir abc (mkdir是新建目录的命令,abc是一个目录名)在当前目录下新建目录abc

       创建多个目录 mkdir dir2 dir3 dir4

                    mkdir dir{5..7}

       递归创建目录 mkdir -p dir7/dir8/dir9

       在dir1目录下建立子目录dir10,并且设置文件权限700   mkdir -m 700 dir1/dir10

       显示目录的创建过程 mkdir -v dir{11..13}

删除目录

删除目录的时候,必须添加-r参数,这个-r表示删除一个目录,或者递归删除目录下的所有子目录以及子文件。

rm -r x (删除当前目录下的x目录,以及x目录下所有的子目录),但是这种方式需要用户自己输入y进行确认删除。

rm -rf x(强行删除x目录以及x目录下所有的子目录,并且不询问。包括子文件也全部删除。)

cp命令

作用:复制文件或目录

语法:cp [OPTION]…[-T] SOURCE DEST

      cp [OPTION]…SOURCE…DIRECTORY

      cp [OPTION]…-t DIRECTORY SOURCE…

参数:-f 若目标文件已经存在,则会直接覆盖

      -i 若目标文件已经存在,则会询问是否覆盖

      -a 通常在复制目录的时候,它保留链接,文件属性,并复制目录下的所有内容

      -r递归复制文件和目录

      -b覆盖已存在的文件目录前将目标文件备份

      -v 详细显示cp 命令执行的操作过程

案列:复制文件 cp file1.txt file2.txt

      复制目录 cp -r dir1 dir2

      复制文件,若目标文件已存在,则询问是否覆盖 cp -i file1.txt file2.txt

      复制文件,若目标文件已存在,则直接覆盖,不提示 cp -f file1.txt file2.txt

      复制文件,若目标文件已存在,则先进行备份 cp -b file1.txt file2.txt

      复制目录,并且保留源目录所有属性都一致 cp -a dir1 dir2

目录拷贝

cp 目录名1 目录名2

目录名1 是拷贝源 目录名2 是拷贝到哪里

 -rf (-r递归拷贝,-f强行拷贝)

cp -rf a abc (将当前目录下的a目录拷贝到当前目录下的abc目录当中)

cp -rf /home/powernode/a /home/powernode/x (将/home/powernode/a目录拷贝到/home/powernode/x目录下)

文件拷贝

cp a.txt aa.txt (复制当前目录下的a.txt文件,粘贴到当前目录下并且生成新文件aa.txt)

cp file1 file2    file1 就是被拷贝的文件 file2 就是粘贴之后的文件  file1和 file2可以添加路径 cp被拷贝文件的路径 粘贴到哪里的路径

Touch命令

明确:一个文件包含有4个时间属性,可用stat命令查看(Access time访问时间,Modify time)

作用:1.改变已有文件的时间戳属性(注意:在修改文件的时间属性的时候,用户必须是文件的属性,或拥有写文件的访问权限)

      2.创建新的空文件

语法:touch [OPTION]…FILE…

参数:-a 改变文件的读取时间记录

      -m改变文件的修改时间记录

      -r使用参考文件的时间记录,与—file的效果一样

      -c不创建新文件

      -d使用指定字符串表示时间格式

      -t设定文件的时间记录,格式与date命令相同

--no-create 不创建新文件

案列:创建一个空文件 touch file.txt  (前提:file.txt文件不存在)

      创建多个空文件 touch file1.txt file2.txt file3.txt

                     Touch file{1..3}.txt

修改文件的access时间 touch -a file.txt

修改文件的modify时间 touch -m file.txt

强制避免创建新文件 touch -c nofile.txt  等价于 touch --no-create nofile.txt

将访问和修改时间从一个文件复制到另一个文件 touch file.txt -r ref_file.txt(参照的文件)

修改文件时间(支持字符串修改)大白话等价于 想要任意的指定一个时间不是改成当前的系统时间有两种方式可以更改,一种是使用-d选项它可以使用字符串的方式来改变时间戳:

   1,改成明天的当下时间 touch -d “tomorrow” file.txt

   2.tomorrow字符串也可改成yesterday next month 等等都是可以的

另一种是使用-t选项,把它改成任意一个时间节点:

时间改成2022年的1月1号的10:30的55秒:touch -t 2201011030.55 file.txt

新建文件

touch 文件名 例如:touch hello.java 表示在当前目录下新建一个文件hello.java

touch a.txt b.txt  c.txt 一次性在当前目录下,新建多个文件,文件名之间采用空格分隔。

删除文件

rm 文件名

rm a.txt(删除当前目录下的a.txt文件)。这种方式会询问,是否删除,输入y表示删除,输入n表示不删除。

不想让系统询问你是否删除,怎么进行强行删除呢? -f 参数可以做到。

rm -f a.txt (强行删除a.txt文件,不询问)

删除多个文件

rm -f b.txt c.txt(强行删除b.txt和c.txt文件,不询问)

rm -f *.java(删除所有.java结尾的文件,模糊匹配的方式。)  - 通配符

rm命令附赠

作用:删除文件或目录

语法:rm [OPTION]…[FILE]…

参数:-f忽略不存的文件,不会出现警告信息

      -i删除前会询问用户是否操作

      -r/-R 递归删除

      -v显示指令的详细执行过程

案列:删除一个文件 rm file.txt

      删除一个目录 rm -r dir

      强制删除文件/目录(不带提示)rm -f file.txt

      删除当前目录下所有文件 rm-rf *

      删除前逐一询问确认 rm -I file1.txt file2.txt file3.txt

rmdir命令

作用:删除空目录

语法:rmdir[OPTION]…DIRECTORY…

参数:-p用递归的方式删除指定的目录路径中的所有父级目录,非空则报错

      -v 显示命令的详细执行过程

案列: 删除空目录 rmdir dir

       递归删除多重目录 rmdir -p dir1/dir/2/dir3

       显示指令详细执行过程 rmdir -v dir

移动mv

mv Hello.java x (将当前目录下的Hello.java文件移动到x 目录下

mv /home/bjpowernode/Hello2.java /home/bjpowernode/x (将/home/bjpowernode/Hello2.java移动到/home/bjpowernode/x 目录下

mv x f (将x目录移动到f目录下)

mv扩充

作用:1.移动文件

      2.重命名文件

语法:mv [OPTION]…[-T] SOURCE DEST

      mv [OPTION]…SOURCE…DIRECTORY

      mv [OPTION]…-t DIRECTORY SOURCE…

参数:-i 若存在同名文件,则向用户询问是否覆盖

      -f 覆盖已有文件时,不进行任何提示

      -b 当文件存在时,覆盖前为其创建一个备份

      -u当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作

案列:1.将文件file.txt 移动到目录dir中   mv file.txt /dir

      2.将file.txt重命名为newfile.txt  mv file.txt newfile.txt

      3.将目录dir1移动到目录dir2中(前提是目录dir2已经存在,若不存在则改名)

#mv dir1 dir2

      4.将文件file1.txt 改名为file2.txt,如果file2.txt已经存在,则询问是否覆盖

#mv -i file1.txt file2.txt

      5.将文件file1.txt改名为file2.txt,如果file2.txt已经存在,则直接覆盖

# mv -f file1.txt file2.txt

      6.文件被覆盖前做备份 mv -b file1.txt file2.txt

      7.源文件比目标文件新时才执行更新 mv -u file1.txt file2.txt

      8.移动当前文件夹下的所有文件到上一级目录  mv* ../

      9.将当前目录的一个子目录里的文件移动到另一个子目录 mv dir3/* dir2

mount命令

作用: 把文件系统挂载到目录

语法: mount [参数] [设备] [挂载点]

参数:-o 挂载方式 loop:用来把一个文件当成磁盘分区挂接上系统。

                  #ro:采用只读方式挂载设备

                  #rw:采用读写方式挂载设备

                  #iocharset:指定访问文件系统所用字符集

      -t 指定挂载类型

案列:查看当前系统中挂载的所有文件系统信息 mount

      查看指定类型挂载的文件系统  mount -t tmpfs

      将U盘挂载到指定目录 sudo fdisk -l  ;  sudo mount /dev/sdb /mnt/udisk

      只读模式挂载  sudo mount -o ro /dev/sdb /mnt/udisk

      将iso 镜像挂载到/mnt/iso目录 sudo mount -o loop /home/liangxu

                                  #command/mount/mydisk.iso /mnt/iso

umount命令

作用:卸载文件系统

语法:umount [参数]

参数:-v 执行时显示详细的信息

案列:通过设备名卸载 umount -v /dev/sdb

      通过挂载点卸载 umount -v /media/liangxu/ALVIN/

dd命令

作用:拷贝及切换文件

语法:dd 参数 对象

基本格式

参数:

#if=文件名 输入文件名,默认为标准输入。即指定源文件。

#of=文件名 输出文件名,默认为标准输出。即指定目的文件。

#ibs=bytes 一次读入 bytes个字节,即指定一个块大小为bytes个字节。

#obs=bytes 一次输出 bytes个字节,即指定一个块大小为bytes个字节。

#bs=bytes 同时设置读入/输出的块大小为bytes个字节

#cbs=bytes 一次转换bytes个字节,即指定转换缓冲区大小。

#skip=blocks从输入文件开头跳过blocks个块后再开始复制

#seek=blocks 从输出文件开头跳过blocks个块后再开始复制

#count=blocks 仅拷贝blocks个块,块大小等于ibs/obs指定的字节数

#conv=<关键字> 指定关键字

                           #conversion 用指定的参数转换文件

                    

案列:

生成一个指定大小(500M)的新文件

#dd if=/dev/zero of=file1.txt bs=500M count=1

拷贝指定文件的前50个字节

#dd if=file2.txt of=dfile2.txt bs=50 count=1

拷贝指定文件的内容,并将所有字符转换成大写后输出到新文件中

#dd if=file3.txt of=dfile3.txt conv=ucase

由标准输入设备读入字符串,并将字符串转换成大写后,再输出到标准输出设备

#dd conv=ucase (按ctrl+d 结束)

Linux中查找文件的哪几种方式

Linux中查找文件是最基础的能力了,如何高效的查找出自己想要的文件呢?这个就很重要啦!首先,先不要着急使用find命令,除了速度慢,也影响硬盘性能。因此,首先使用whereis和locate命令来查,找不到的时候再使用find命令来查找

【目录】

一 whereis(只查找特定目录)

二 locate(记得更新数据库)

三 find(虽然不快,但用起来是真香)

 一 whereis命令使用方式和参数介绍

[root@achao ~]# whereis --help

用法:

 whereis [选项] [-BMS <dir>... -f] <名称>

定位某个命令的二进制文件、源码和帮助页文件。

选项:

 -b         只搜索二进制文件

 -B <目录>  定义二进制文件查找路径

 -m         只搜索手册和信息

 -M <目录>  定义 man 和 info 查找路径

 -s         只搜索源代码

 -S <目录>  定义源代码查找路径

 -f         终止 <目录> 参数列表

 -u         搜索不常见记录

 -l         输出有效查找路径

 -h, --help     显示此帮助

 -V, --version  显示版本

更多信息请参阅 whereis(1)。

  whereis命令为什么查找比较快,只是因为它只负责查找特定目录下的而已。

[root@achao ~]# whereis passwd

passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1ossl.gz /usr/share/man/man1/passwd.1.gz

    将全部的文件名都列了出来。

[root@achao ~]# cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

[root@achao ~]# whereis -l | wc -l

63

参数-l输出有效的查找路径总计是63个。

二 locate命令使用方式和参数介绍

[root@achao ~]# locate --help

Usage: locate [OPTION]... [PATTERN]...

Search for entries in a mlocate database.

  -A, --all              only print entries that match all patterns

  -b, --basename         match only the base name of path names

  -c, --count            仅统计找到文件的数量

  -d, --database DBPATH  use DBPATH instead of default database (which is

                         /var/lib/mlocate/mlocate.db)

  -e, --existing         only print entries for currently existing files

  -L, --follow           follow trailing symbolic links when checking file

                         existence (default)

  -h, --help             print this help

  -i, --ignore-case      忽略大小写

  -l, --limit, -n LIMIT  limit output (or counting) to LIMIT entries

  -m, --mmap             ignored, for backward compatibility

  -P, --nofollow, -H     don't follow trailing symbolic links when checking file

                         existence

  -0, --null             separate entries with NUL on output

  -S, --statistics       don't search for entries, print statistics about each

                         used database

  -q, --quiet            report no error messages about reading databases

  -r, --regexp REGEXP    search for basic regexp REGEXP instead of patterns

      --regex            patterns are extended regexps

   【注意事项】

    locate命令是在数据库中查找的,而CentOS建立的数据库是每天更新一次,当你使用此命令找不到想要的文件时候,记得更新一下数据库哦!使用updatedb命令。

[root@achao ~]# updatedb #需要等一会的

2.1 使用-c统计找到文件名的数量

[root@achao ~]# locate -c passwd

132

 2.2 使用参数-S查找数据库文件的相关信息

[root@achao ~]# locate -S

数据库 /var/lib/mlocate/mlocate.db:

  10,374 文件夹

  135,260 文件

  6,893,506 文件名中的字节数

  3,304,908 字节用于存储数据库

 locate命令特别适合你记不清楚文件的全名的时候使用,输入一个大概便可以查找来,帮助你找到文件。

 三 find命令

  3.1 参数-mtime使用

[root@achao ~]# find / -mtime 0

/dev/pts/0

/dev/ptmx

......

[root@achao ~]# find /var/ -mtime +4 | head -2

/var/

/var/lib

[root@achao ~]# find /var/ -mtime -4 | head -2

/var/lib/dnf/history.sqlite

/var/lib/dnf/history.sqlite-shm

[root@achao ~]# find /var/ -mtime 4 | head

/var/spool/anacron/cron.weekly

    解释:0代表从现在开始到24小时之前。

             +4:代表大于等于5天前的文件

              -4:代表小于4天内的文件。

              4:代表4-5天哪一天的内容。

   3.2 参数-user查找用户创建的文件

#查找出/home下属于普通用户admin创建的文件有哪些

[root@achao ~]# find /home/ -user admin

   3.3 参数-type查找文件类型

#找出/boot目录下的文件有哪些

[root@achao ~]# find /boot/ -type f

/boot/grub2/device.map

/boot/grub2/i386-pc/adler32.mod

/boot/grub2/i386-pc/affs.mod

/boot/grub2/i386-pc/afs.mod

......

查找目录使用d,链接文件使用l,FIFO使用p等

3.4 参数-size查找文件的大小

#找出/boot目录下文件大小大于20M的文件

[root@achao ~]# find /boot/ -type f -size +20M

/boot/initramfs-5.14.0-452.el9.x86_64.img

/boot/initramfs-0-repue-a8c01f26de674924981097b9b6076345.img

/boot/initramfs-5.14.0-452.el9.x86_64kdump.img

 3.5 参数-name查找文件名

[root@achao ~]# find / -name passwd | wc -l

8

[root@achao ~]# find / -name "*passwd*" | wc -l

132

[root@achao ~]#

 3.6 参数-perm查找特殊权限的文件

 例如查找SUID与SGID的文件

[root@achao ~]# find / -perm 6000

   3.7 参数-exec command额外进行的操作

[root@achao ~]# find /boot/ -size +20M -type f -name "init*" -exec cp {} /root/dufu/ \;

[root@achao ~]# ls -l /root/dufu/

总用量 227156

-rw-------. 1 root root 138491826  7月  2 01:36 initramfs-0-rescue-a8c01f26de674924981097b9b6076345.img

-rw-------. 1 root root  59111761  7月  2 01:36 initramfs-5.14.0-452.el9.x86_64.img

-rw-------. 1 root root  34999808  7月  2 01:36 initramfs-5.14.0-452.el9.x86_64kdump.img

将/boot目录下文件大于等于20M的以init*开头的文件复制到/root/dufu目录下边。这一个组合命令在工作中非常的重要,一定要多加练习,用的时候真的很香。

Find

使用find命令可以在指定目录下搜索文件。可以使用不同的选项来指定搜索的文件类型,大小,修改时间等条件

Find命令扩展

作用:搜索指定文件

语法:find [路径] [参数] [条件]

案列:全盘搜索系统中所有以conf结尾的文件

# find / -name *.conf

      在 /etc目录中搜索所有大于1k大小的文件

# find /etc -size =1k

      在/home目录中搜索所有属于指定用户的文件

# find /home -user liangxu

      搜索当前目录下所有的文件

# find -type f

       搜索当前目录下所有权限为664的文件,并列出来

# find -perm 664 -exec ls -l {} \;   重点exec

       列出当前工作目录中的所有文件,目录以及子文件信息

# find .

       在当前目录下搜索所有指定后缀的文件,后缀不需要大小写。

#find . -iname “*.txt”

       在当前目录下搜索所有后缀不是.txt的文件

# find . ! -name “*.txt”

       搜索当前工作目录中的所有7天内被修改过的文件,并删除

#find . -mtime -7 -exec rm -I {} \;

Whereis

使用whereis命令可以在系统中搜索指定的命令的位置。

Whereis命令扩展

作用:查找命令的二进制程序,源代码文件和man手册页等相关文件路径

案列:查找ls命令的程序路径和man手册页位置 whereis ls

      查找ls命令的二进程程序路径 whereis -b ls

      查找ls命令的man手册页路径 whereis -m ls

Which命令

使用which命令也可以在系统中搜索指定的命令的位置。

which命令扩展

作用 :查找命令文件所在的位置

语法:which [-a] filename…

案列:查找文件所在位置

      Which bash

      Which ls

      Which fdisk

Linux中硬链接和软链接

Linux中,链接文件的方式有两种,一种是类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,我们通常叫软链接或者符号链接(symbolic link);另一种是通过文件系统的inode链接来产生新文件名,而不是产生新的文件,这种称为硬链接(hard link),本篇我们就分别聊一下这两种链接的区别。

 一 硬链接

硬链接就是在某个目录下新增一个文件名链接到某个inode号的关联记录。

#查看/etc/passwd的inode值及链接数量

[root@achao dufu]# ll -i /etc/passwd

17864914 -rw-r--r--. 1 root root 2195 May 16 21:11 /etc/passwd

#创建硬链接

[root@achao dufu]# ln /etc/passwd ./

[root@achao dufu]# ll -i passwd

17864914 -rw-r--r--. 2 root root 2195 May 16 21:11 passwd

[root@achao dufu]# ll -i /etc/passwd

17864914 -rw-r--r--. 2 root root 2195 May 16 21:11 /etc/passwd

   通过观察,我们发现,inode值完全相同。同时,第三列的值由1变为2,这个字段的含义是有多少个文件名链接到此inode值。

    这种做法的好处就是安全,如果删除任何一个文件,可以通过另一个文件名来读取到正确的文件数据

[root@achao dufu]# ls

passwd

[root@achao dufu]# echo test data >> passwd

[root@achao dufu]# grep "test data" /etc/passwd

test data

[root@achao dufu]#

    同时,不论修改哪一个文件,都会写入到相同inode与区块中。以上就是验证结果。

    总结:设置硬链接,磁盘的空间与inode的数目是不会发生改变。因为硬链接只是在某个目录下的区块多写了一个关联数据而已。是不会消耗inode数量。

[root@achao dufu]# mkfs.ext4 /dev/sdb2

[root@achao dufu]# cd

[root@achao ~]# mount /dev/sdb2 dufu/

[root@achao ~]# cd dufu/

#创建硬链接失败

[root@achao dufu]# ln /etc/passwd ./

ln: failed to create hard link ‘./passwd’ => ‘/etc/passwd’: Invalid cross-device link

[root@achao dufu]# blkid | grep /dev/sdb2

/dev/sdb2: UUID="4247c4b8-b697-4244-847e-24a0419dce3e" TYPE="ext4" PARTLABEL="libai" PARTUUID="38dc55b0-3fec-422c-9d16-6d7261f23822"

[root@achao dufu]# lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda               8:0    0   20G  0 disk

├─sda1            8:1    0    1G  0 part /boot

└─sda2            8:2    0   19G  0 part

  ├─centos-root 253:0    0   17G  0 lvm  /

  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]

sdb               8:16   0    2G  0 disk

├─sdb1            8:17   0  500M  0 part

└─sdb2            8:18   0  477M  0 part /root/dufu

sr0              11:0    1  8.8G  0 rom  /run/media/root/CentOS 7 x86_64

[root@achao dufu]# blkid | grep /dev/mapper/centos-root

/dev/mapper/centos-root: UUID="3e18702c-c96f-4867-ac20-66c6dba53b71" TYPE="xfs"

    【注意事项1】不能跨文件系统创建硬链接。

[root@achao ~]# ln /boot libai/

ln: ‘/boot’: hard link not allowed for directory

    【注意事项2】硬链接不能链接目录。因为链接到的目录需要连同被链接目录下面的所有数据都建立连接。如果修改或者新建文件,两边目录下边的内容又要建立一次,环境会变得复杂。因此目前暂时是不支持的。

图片 二 软连接

    相比较硬链接,软链接就很好理解啦,这个就是Windows上创建的快捷方式,也就是建立一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名。因此,源文件删除或者移动,软链接就会失效。

[root@achao ~]# ln -s /etc/passwd testfile

[root@achao ~]# ll -i /etc/passwd /root/testfile

17861462 -rw-r--r--. 1 root root 2195 Jul  4 01:03 /etc/passwd

33574987 lrwxrwxrwx. 1 root root   11 Jul  4 01:46 /root/testfile -> /etc/passwd

    通过观察,发现两个文件指向了不同的inode,当然也就是两个独立的文件。而且链接文件的重要内容就是它会写上目标文件的文件名。发现大小是11B。

    软链接能链接整个目录无压力

[root@achao ~]# ln -s /boot/* libai/

[root@achao ~]# ll libai/

total 4

lrwxrwxrwx. 1 root root  9 Jul  4 02:14 aaa -> /boot/aaa

lrwxrwxrwx. 1 root root 34 Jul  4 02:14 config-3.10.0-862.el7.x86_64 -> /boot/config-3.10.0-862.el7.x86_64

lrwxrwxrwx. 1 root root  9 Jul  4 02:14 efi -> /boot/efi

......

[root@achao ~]# ln -sf /boot libai

[root@achao ~]# ll libai/

total 4

lrwxrwxrwx. 1 root root  9 Jul  4 02:14 aaa -> /boot/aaa

lrwxrwxrwx. 1 root root  5 Jul  4 02:17 boot -> /boot

lrwxrwxrwx. 1 root root 34 Jul  4 02:14 config-3.10.0-862.el7.x86_64 -> /boot/config-3.10.0-862.el7.x86_64

lrwxrwxrwx. 1 root root  9 Jul  4 02:14 efi -> /boot/efi

lrwxrwxrwx. 1 root root 10 Jul  4 02:14 grub -> /boot/grub

lrwxrwxrwx. 1 root root 11 Jul  4 02:14 grub2 -> /boot/grub2

     参数-f:如果目标文件存在,就主动的将目标文件删除后再建立。

图片 三 测试用例

[root@achao ~]# cd libai/

#制作测试文件testfile

[root@achao libai]# cp /root/dufu/testfile .

#查看inode数量

[root@achao libai]# df -i | head -2

Filesystem               Inodes  IUsed   IFree IUse% Mounted on

/dev/mapper/centos-root 8910848 125234 8785614    2% /

#设置硬链接

[root@achao libai]# ln testfile testfile_h

#查看inode,发现没有发生变化

[root@achao libai]# df -i .

Filesystem               Inodes  IUsed   IFree IUse% Mounted on

/dev/mapper/centos-root 8910848 125234 8785614    2% /

#查看创建硬链接inode值相同

[root@achao libai]# ll -i testfile*

53433525 -rw-r--r--. 2 root root 12 Jul  4 01:58 testfile

53433525 -rw-r--r--. 2 root root 12 Jul  4 01:58 testfile_h

#创建软连接

[root@achao libai]# ln -s testfile testfile_s

#查看inode值,发现软连接的inode值发生变化,说明是一个新的文件

[root@achao libai]# ll -i testfile*

53433525 -rw-r--r--. 2 root root 12 Jul  4 01:58 testfile

53433525 -rw-r--r--. 2 root root 12 Jul  4 01:58 testfile_h

53433527 lrwxrwxrwx. 1 root root  8 Jul  4 02:01 testfile_s -> testfile

#查看inode值,发现从8785614变成了8785613

[root@achao libai]# df -i .

Filesystem               Inodes  IUsed   IFree IUse% Mounted on

/dev/mapper/centos-root 8910848 125235 8785613    2% /

#删除源文件

[root@achao libai]# rm testfile

rm: remove regular file ‘testfile’? y

#查看硬链接,发现查看成功

[root@achao libai]# cat testfile_h

hello world

#查看软连接,发现参看文件内容失败

[root@achao libai]# cat testfile_s

cat: testfile_s: No such file or directory

[root@achao libai]# ll

total 4

-rw-r--r--. 1 root root 12 Jul  4 01:58 testfile_h

lrwxrwxrwx. 1 root root  8 Jul  4 02:01 testfile_s -> testfile

[root@achao libai]#

    【注意】通过颜色也能区别,红色就说明异常。

    正常的软链接颜色如下显示

四 总结

    通过比较,发现硬链接还是比较安全的,但是硬链接的限制比较多呀!反倒是软连接的应用比较广泛,这一点同学们是要了解以下的。以上就是今天的内容啦,简单容易理解,在实际生产环境中应用很是常见,是需要掌握的。

系统中通过inode来区分两个文件。查看文件的inode号: ls -i HelloWorld.java

软链接=快捷方式

in -s Hello.java Hello.java2

Hello.java是目标文件。Hello.java2文件是软连接,属于快捷方式

软件接和目标文件实际上是两个文件,在软连接中存储的是目标文件的路径。软连接关联的目标文件如果被删除,软连接这个快捷方式也就失效了。

可以通过查看inode号,来证明软连接是两个不同的文件 ls -li Hello.java Hello.java2

硬链接

in Hello.java Hello.java2

主要是用来做:重要文件备份

目标文件删除之后,硬链接只要在,文件其实就没有被删除。或者说硬链接删除之后,目标文件还在。总结一句话:目标文件或者硬链接只要有一个存在,文件就没有被真正的删除。

硬链接机制和复制粘贴还不一样,复制粘贴之后的文件,修改其中之一,另一个不会变,但是硬链接就不一样了。

ln命令

作用:为文件创建快捷方式

语法:ln [参数] 源文件 目标文件

参数:-s 对源文件建立符号链接,而非硬链接

案列:创建软连接 ln -s file.txt sfile.txt

      创建硬链接 ln file.txt hfile.txt

tar是在linux系统当中完成压缩和解压缩的命令。压缩后的文件又被称为归档文件。

tar命令

tar命令语法格式:tar 参数 要压缩的或解压的文件或目录

tar命令的常用参数:z:指定是否使用gzip压缩方式压缩。 (扩展名通常为:tar.gz 特点速度最快)
                                 j:是否需要用bzip2压缩方式压缩。 (扩展名通常为:tar.bz2 特点体积最小)
                                 c:创建压缩(create)
                                 x:解压缩
                                 v:是否在压缩的过程中显示文件
                                 f:指定归档文件名(file)。f参数后面必须紧跟文件名,不能在f参数后面再加其他参数。
                                 t:查看tarfile里面的文件
                                 C:指定解压到的具体目录
                         注意:c , x , t ,这三个参数不能共存,只能出现一个。
                     

tar命令扩展

作用:打包/解压工具

参数:-c 新建打包文件

      -x解压文件,配合-C解压到对应的文件目录

      -f (压缩或解压时)指定要处理的文件

      -j 通过bzip2方式压缩或解压,最后以tar.br2为后缀。压缩后大小

      -z 通过gzip方式压缩或解压,最后以tar.gz为后缀。

      -v 显示操作过程

      -t 查看打包文件中内容

      -C dir指定压缩/解压缩的目录,若无指定,默认是当前目录。

案列:

将当前目录下所有.txt文件打包(未压缩),并显示操作过程。

#tar -cvf files.tar *.txt

打包文件之后,使用gzip方式压缩

#tar -zcvf files.tar.gz *.txt

解压文件到当前目录

#tar -zxvf files.tar.gz

解压文件到家目录下

#tar -zxvf files.tar.gz -C dir

列出压缩包里的内容

#tar -tf files tar.gz

zip/unzip

作用:压缩/解压文件

语法:zip 参数 文件

     unzip 参数 文件

参数:zip -r 递归处理,将指定目录下的所有文件和子目录一并处理

         -v 显示指令执行过程

         -d 更新压缩包内文件

     unzip -l 显示压缩文件内所包含的文件

           -v 显示指令执行过程

           -d <目录> 指定文件解压缩后所要存储的目录

案列:

压缩:

将指定目录及其内容全部文件都打包成zip格式压缩包文件

#zip -r dir.zip dir

      将当前目录下所有txt文件全部压缩成files.zip

#zip files.zip *.txt

      将newfile.txt添加到files.zip压缩包

#zip -dv files.zip newfile.txt

解压:

查看压缩文件中包含的文件

#unzip -l files.zip

查看显示的文件列表还包含压缩比率

#unzip -v files.zip

检查zip文件是否损坏

#unzip -t files.zip

解压files.zip到当前目录

#unzip files.zip

解压files.zip到指定目录

#unzip files.zip -d udir/

gzip/gunzip命令

作用:压缩/解压文件

语法:gzip [参数] 文件

      #gunzip [参数] 压缩包

参数:-d 解开压缩文件

     # -k 保留原文件

     # -l 列出压缩文件的相关信息

     #-r 递归处理,将指定目录下的所有文件及子目录一并处理

     #-v 显示指定执行过程

     #-t 测试压缩文件是否正确无误

案列:

压缩指定的文件,原文件将被删除

#gzip file.txt

压缩指定的目录

#gzip -r dir

显示指定压缩包的压缩信息

#gzip -l file.txt.gz

解压指定的压缩包文件

#gzip -dv file.txt.gz

#gunzip -v file.txt.gz

递归解压目录

#gzip -dr dir.gz

#gunzip -r dir.gz

压缩指定的文件,原文件不被删除

#gzip -k file.txt

测试指定的压缩包文件内容是否损坏,能够正常解压

#gunzip -t file.txt.gz

压缩

压缩一个文件   tar-zcvf mytxt.tar.gz log1.txt

压缩多个文件   tar-zcvf mytxt2.tar.gz log1.txt log2.txt log3.txt   
                         tar -zcvf mytxt3.tar.gz *.txt

压缩目录 tar-zcvf mytxt4.tar.gz test 【将test目录压缩为mytxt4.tar.gz】

解压

查看归档文件 tar -tf mytxt.tar.gz

tar -zxvf mytxt.tar.gz【解压到当前目录下】tar -zxvf mytxt.tar.gz -C test【将mytxt.tar.gz压缩包解压到test目录】

echo命令

输出字符串  /输出变量 /输出多行 /输出特殊字符

echo命令扩展

作用:在终端输出字符串

语法:echo [OPTION]…[STRING]…

参数:-n 不输出结尾的换行符

      -e “\a” 发出警告音

      -e “\b”删除前面的一个字符

      -e “\c” 结尾不加换行符(\后面的字符不会输出)

      -e “\f”换行,光标仍停留在原来的坐标位置

      -e “\n”换行,光标移至行首

      -e “\r” 光标移至行首,但不换行(会覆写行开头的字符)

      -E 禁止反斜杠转义,与-e参数功能相反

案列:输出一段普通字符串 echo “hello world”

                         #echo hello world

      输出变量提取后的值 echo $PATH

      取消转义 echo\$PATH

      将输出结果重定向到文件 echo “hello world” > file.txt

      显示命令执行结果 echo ‘date’

     输出带有换行符的内容(开启转义) echo -e“a\nb\nc”

printf命令

作用:格式化输出结果

语法:printf FORMAT [ARCUMENT]… 

      printf OPTION

转义序列:

序列

\a       警告字符,通常为ASCII的BEL字符

\b       后退

\c       不显示输出结果中任何结尾的换行字符,而且任何留在参数里的字符,任何接下来的参数以及任何留在格式字符串中的字符都被忽略。

\f       换页

\n       换行

\r       回车

\t       水平制表符

\v       垂直制表符

\\       反斜杠字符

格式替代符:

符号

%c    ASCll字符,显示相对应参数的第一个字符

%d,%l  十进制整数

%E 浮点格式

%e 浮点格式

%g

%G

%s  字符串

%u  不带正负号的十进制

%x  不带正负号的十六进制,使用a至f表示10至15

%%  字面意义的%

%X 不带正负号的十六进制,使用A至F表示10至15

案列:常见格式化字符

      打印良许基本信息

输出重定向

>:以覆盖的形式写到文件中   >>:以追加的形式写到文件中

凡是在控制台上能够打印出来的,统一都可以重定向,可以将其打印到控制台的行为重定向到文件或其他设备。 ls -al > ls.txt

输入重定向

<:将文件内容输入给某个命令,这是一种默认的行为,通常

命令行文本搜索工具

grep命令

在某段内容中搜索  例如:grep 0 a.txt  (在a.txt中搜索0)

基本用法:   grep ‘pattern’ file      ‘pattern’ 表示要匹配的字符串或模式。File表示要搜索的文件名,

搜索多个文件:grep ‘pattern’ file1 file2   grep ‘pattern’ *.txt  file1和file2 表示要搜索的多个文件名。也可以使用通配符*.txt

递归搜索目录:grep -r ‘pattern’  dir        -r表示递归搜索目录。 Dir表示要搜索的目录。

显示匹配行的前几行或后几行   grep -A 2 ‘pattern’ file #显示匹配行后2行
                                                  grep -B 2 ‘pattern’ file #显示匹配行前2行
 grep -C 2 ‘pattern’ file #显示匹配行前后各2行       -A-B-C这三个选项后面必须跟一个数字,表示要显示的行数。

同时输出匹配结果的行号   grep -n ‘pattern’ file  -n表示只输出匹配结果所在的行号。

忽略大小写 grep -i ‘pattern’ file  -i 表示忽略大小写

找出不匹配的行 grep -v ‘pattern’ file  -v 输出不匹配模式的行

使用正则表达式匹配 grep -E ‘pattern’ file

管道 |

将前面命令的输出作为后面命令的输入,可以叠加

ps命令

作用:显示进程状态

语法:ps [options]

参数:-A 显示所有进程

      -a 显示所有终端机下执行的程序 

      -x 通常与a这个参数一起用,可列出较完整信息

     -e 列出程序时,显示每个程序所使用的环境变量

     -f 用ASCII 字符显示树状结构,表达程序间的相互关系

     -u <用户识别码> 列出属于该用户的程序的状况,也可使用用户名称来指定

信息说明:USER,用户名称    PID,进程号      %CPU,该进程所占用内存百分比

          %MEM,该进程所占用内存百分比    VSZ,进程所占用的虚拟内存大小

          RSS,进程所占用的实际内存大小   TTY,该进程运行在哪个终端上面,若与终端无关,则显示        

          STAT,进程状态  R 运行

                          S 可中断睡眠

                          D uninterruptible sleep 不可中断睡眠

                          T 停止

                          Z 僵死

          START,进程启动时间      TIME,进程实际占用CPU的时间

        COMMAND, 该进程对应的执行程序

案例:

显示当前系统所有进程状态:ps -aux #列出目前所有的正在内存当中的程序

                         #ps -A  #显示所有进程信息

                         #ps -ef #显示所有进程信息,连同命令行

树形显示所有进程 ps -axf

查找特定进程信息 ps -aux | grep ssh

显示指定用户信息 ps -u lilianghu

配合less命令使用 ps aux | less

结合管道操作符与sort命令,依据处理器使用量(第三列)情况降序排序

# ps aux | sort -rnk 3

pstree命令

作用:以树状图显示进程

语法: pstree [参数]

参数:-a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示

      -c 不使用精简标示法

      -G 使用VT100终端机的列绘图字符

      -h 列出树状图时,特别标明现在执行的程序

案列:以树状图显示进程   pstree

      显示该进程的完整指令及参数,遇到相同的进程名可以压缩显示 pstree -a

      显示当前所有进程的进程号和进程id  pstree -p

      同时显示用户名称 pstree -u

pgrep命令

作用:检索当前正在运行的进程

语法:pgrep [参数] [模式]

参数:-d 设置一个字符串,用于分割输出的每个进程ID

      -f 模式参数仅用于匹配进程名

      -l 列出进程名及进程ID

      -u 选择仅匹配指定有效用户ID进程

案列:查找ssh进程的pid  pgrep sshd

      指定分隔符输出   pgrep sshd -d’ ‘

      查询用户liangxu启动的sshd进程的PID  pgrep -u liangxu sshd

      显示进程名称和PID  pgrep -l sshd

      使用正则表达式  pgrep ‘^sshd$‘-l

      匹配所有的参数列表 pgrep -f ssh

lsof命令

作用:查看进程打开的文件

语法:lsof [参数] [文件]

参数:-a 列出打开文件存在的进程

      -c <进程名> 列出指定进程所打开的文件

      -g 列出GID号进程详情

      -d <文件号>列出占用该文件号的进程

      +d <目录>列出目录下被打开的文件

      +D<目录>递归列出目录下被打开的文件

      -n<目录>列出使用NFS的文件

      -i <条件>列出符合

      -p<进程号>列出指定进程号所打开的文件

      -u 列出uid号进程详情

案列;查看当前系统中全部文件与进程对应信息  lsof

     显示指定目录中被调用的文件信息  lsof +d /home

     递归显示指定目录中全部被调用的文件信息 lsof +D /home

     查看谁正在使用某个文件(说查找某个文件相关的进程) lsof /bin/bash

     列出某个用户打开的文件信息 lsof -u liangxu

     列出某个程序进程所打开的文件信息 lsof -c bash

     通过某个进程号显示该进行打开的文件 lsof -p 1930

     根据文件描述列出对应的文件信息 lsof -d 1

jobs/bg/fg命令

作用:终端任务调度

案列:列出当前shell的任务 jobs -l

      将test2.sh调至前台运行 fg %2

      将当前进程切到后台运行 ctrl +z

      恢复test2.sh在后台运行 bg 2

       杀死test3.sh  kill %3    kill pid 

kill命令

作用:发送信号到进程

语法;kill [option]<pid>[…]

常用信号:HUP 1 终端断线

          INT 2中断 (同ctrl+c)

        QUIT 3退出 (同ctrl+\)

       TERM 15 终止

       KILL 9强制终止

       CONT 18 继续(与STOP相反,fg/bg命令)

       STOP 19 暂停(同ctrl +Z)

参数: -l 列出系统支持的信号

案列:列出系统支持的所有信号列表 kill -l

     不指定信号  kill 1951

     得到指定信号的数值  kill -l SIGKILL

     杀死指定进程    kill -9 1951

     杀死指定用户所有进程 kill -9$(ps -ef | grep liangxu)

killall命令

作用:使用进程名称来杀死进程

语法:killall [参数] [进程名称]

参数:-l 打印所有已知信号列表

      -u 杀死指定用户的进程

案列:杀死所有sleep进程 killall sleep

      查看kill all支持的所有信号 killall -l

     发送指定信号 killall -9 sleep

     杀死指定用户所有进程 sudo killall -u harry

nice/renice命令

作用:调整进程的优先级

语法:nice [参数][命令]

      renice [参数][命令]

参数  nice -n 后面接一个数值,范围在-20-19

      #renice -g 指定进程组id

             -p 改变该程序的优先权等级,此参数为预设值

             -u 指定开启进程的用户名

案列 查看nice值  ps -l

     设置优先级为15

                  #nice -n 15 vim &

                  #nice -15 vim &

     根据pid重新设置进程的nice值   renice 6 -p 5200

将liangxu的进程nice值全部设置为-5  renice -5 -u liangxu

nohup命令

作用:后台运行程序

案列:让进程在后台运行 nohup ./test &

      输出重定向到file.txt 文件 nohup ./test > file.txt 2>&1 &

包管理器

apt 命令

作用:包管理器

语法:apt [选项] 软件包

案列:列出所有可更新的软件清单 sudo apt update

      升级软件可更新的软件包 sudo apt upgrade

      单独升级某个安装包sudo apt upgrade vim

      安装软件包 sudo apt install bat

      删除软件包 sudo apt remove bat

      打印软件包信息 sudo apt show bat

     清理不在使用的依赖和库文件sudo apt autoremove

     列出已安装的所有软件包sudo apt list –installed

apt-get命令

作用:包管理器

语法:与apt 类似

apt与apt-get异同点

apt=apt-get, apt-cache和apt-config中最常用命令选项的集合

apt视觉功能更好

apt替换部分apt-get系统命令,但不是全部

建议首先使用apt

export命令

作用:设置或显示环境变量

语法:export [选项]文件

参数:-f 代表[变量名称]中为函数名称

      -n 删除指定的变量,变量实际上并未删除,只是不会输出到后续指令的执行环境中

      -p 列出所有的shell赋予程序的环境变量

注意:export 的作用效果仅限于本次登录

      如果想永久生效,可修改配置文件 /etc/profile #所有用户

                                    ~/.bashrc #当前用户

     案列:列出当前所有的环境变量 export -p

        定义环境变量 export MYENV

        定义环境变量赋值 export MYENV=7

        修改环境变量PATH export PATH=$PATH:/usr/local/mysql/bin

source命令

作用 在当前shell环境中从指定文件读取和执行命令

该命令通常用命令“ . ”来替代

语法:source [文件]

案列:读取和执行bashrc文件

      Source ~/.bashrc

      执行刚修改的初始化文件,使之立即生效 source /etc/profile

查看系统进程

ps 【命令参数】
常用参数:   -e :显示当前所有进程
             -f : 显示UID,PPID, C与STIME 栏位信息

sleep命令

用于暂停程序的执行一段时间 语法 sleep NUMBER [SUFFIX]
其中,NUMBER 为需要暂停的时间,单位是秒;SUFFIX 则可以是以下之一: s :秒(默认)  m :分  h:小时 d:日
例如:#暂停3秒 sleep 3 #暂停1分钟 sleep 1m

进程管理

进程是应用程序运行的时候产生的

在Linux中,运行某个命令或者启动服务,都会有一个进程;

每一个进程在系统中会分配一个唯一的ID号(PID)

当程序结束的时候,PID会被回收,下一次其他的程序运行时可能会将ID分配出去

进程的权限来自于用户的权限,继承用户的权限;哪个用户运行,那么进程就继承哪个用户的UID和GID

ps查看静态进程

PID:进程ID号

TTY:得到终端的方式

                     pts表示伪终端(远程ssh连接、图形化登录)

                     tty[1-6]  表示终端设备,显示屏直连,tty2表示有桌面的环境

                     ? 表示没有终端,是内核进程

TIME:表示进程的持续时间;0表示刚刚发起或者一直在运行

CMD:运行的命令

       ps -ao user,%cpu,%mem,command

ps -ef === ps -aux

              -e 查看所有进程

              -f  查看用户 PID  PPID C(cpu资源占比) STIME(系统启动时间) command

--sort:指定排序的参数;例如 ps -aux --sort=-%cpu  按照cpu占比大小进行降序

                                                 ps -aux --sort=%cpu   | tail

                     eg:ps -aux --sort=-%cpu  | head  查看cpu占比最高的进程

                              ps -aux --sort=%cpu  | tail   查看cpu占比最高的进程

       RHEL9中,有考题会考到,编写一个脚本监控系统状态,监控CPU和内存的资源状态

Top实时查看系统进程

默认每3秒刷新一次

       -d 指定刷新间隔时间(top -d 2)

       -p 查看指定pid的进程状态

top - 11:38:40 up 9 days,  2:42,  2 users,  load average: 0.00, 0.00, 0.00

load average:平均负载时间(每分钟、每5分钟、每15分钟)

       和CPU相关

       以单核CPU为例:

              以每分钟为例

              如果负载小于1,表示CPU空闲

              如果负载等于1,表示CPU全力运行

              如果负载大于1,表示CPU超负荷

进程有父进程和子进程的概念

系统中有两个较为特殊的进程:僵尸进程、孤儿进程

如果是僵尸进程,一定要特别重视,会消耗系统的cpu 内存资源

如果是孤儿进程,不会占用系统的cpu 内存资源,PID为1的进程会接管孤儿进程然后关闭它

产生的原因:

系统中的进程有父进程的概念,父进程会派出子进程干活;

孤儿进程:(父进程退出了,子进程还在干活;父进程先一步比子进程退出)

产生原因:用户手动关闭父进程或者程序BUG导致父进程比子进程先退出

派出来的子进程在干活中,父进程可能因为程序BUG或者特殊原因退出了,子进程就成为了孤儿进程。这个时候系统PID为1的进程会接管孤儿进程(rhel7是init,rhel7以后是systemd,是系统启动运行的第一个进程,也是系统的守护进程),然后关闭孤儿进程。

僵尸进程:(子进程已经干完活了,要告诉父进程我的活儿已经干完了,需要父进程接受我的信息,释放我)

产生原因:程序BUG或者人为故意放出病毒,子进程干完活儿了向父进程发送退出的信息,父进程没接收到,进程就会一直向父进程发送,成为僵尸进程

0.4 us,  0.6 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.2 hi,  0.1 si,  0.0 st

us:用户空间占用cpu百分比

              例如shell程序、开启的应用软件、桌面等

sy:内核空间占用cpu百分比

              例如系统分配内存、执行的IO操作等

ni:用户自定义优先级的进程占用cpu百分比           

id:cpu的空闲百分比

wa:等待磁盘IO操作的时间

       时间越长,表示cpu和磁盘的性能差距越大,要检测是不是系统有非常的IO

hi:硬中断

       表示硬盘、网卡等硬件设备发送CPU的中断消息,CPU处理消耗的时间

si:软中断

       表示软件发送CPU的中断消息,CPU处理消耗的时间

st:虚拟机等待cpu的时间

       只有当系统是虚拟机的时候关注此项

top命令过程可以使用一些交互式的命令

       1 查看每个逻辑cpu的资源信息

       M 按照占用内存的百分比进行排序

       m 查看内存进度条模式的百分比

       P     按照CPU的百分比进行排序

       c     显示命令的名称

       T     根据占用的时间进行排序

       k 杀死pid

top命令

用于查看正在运行的系统进程信息的命令。它会实时地显示系统资源使用情况

top命令扩展

作用:实时显示进程动态

参数:-d 指定每两次屏幕信息刷新刷新之间的时间间隔(单次为秒)

      -c 切换显示命令名称和完整命令行

      -p 通过指定监控进程ID来仅仅监控某个进程状态

      -n 信息更新最大次数

快捷键: c 显示进程决对路径

        #P根据CPU使用率排序

        #M 根据物理内存使用率排序

        #1 显示每个核的CPU状况

案例:实时显示进程动态 top

      显示完整的进程信息 top -c

      指定信息刷新时间为5秒  top -d 5

      仅监控进程1877的状态  top -p 1877

      设置信息更新次数 top -n 2

僵尸进程

僵尸进程:在操作系统中,僵尸进程(Zombie Process)是指一个已经执行结束的进程,但其进程描述符仍然留在进程列表中

,它不再执行任何其他操作,但仍然占用一定内存空间。

uptime命令

显示系统运行时间

free命令

用于查看物理内存和交换分区的使用情况

磁盘使用情况

df命令(disk free缩写)

用于显示当前文件系统的磁盘空间使用状况,剩余多少空间。以及文件系统的挂载点,磁盘大小,已用空间,可用空间,使用占比等信息。Df命令是disk free的缩写

df命令扩展

作用:显示磁盘空间使用情况

语法:df [OPTION]…[FILE]…

参数:-a 显示所有文件系统,包含所有的具有OBlocks 的文件系统

      -h 以容易阅读的方式显示

      -i 显示inode信息

      -t <文件系统类型>只显示指定类 型的文件系统

      -T 输出时显示文件系统类型

案列;

显示磁盘空间使用情况   df

以易读方式显示磁盘空间使用情况 df -h

显示指定文件/目录所在分区的磁盘使用情况 df /home

显示指定文件类型的磁盘使用情况  df -t squashfs

以inode 模式来显示磁盘使用情况  df -i

显示所有信息  df -a

列出文件系统的类型   df -T

du命令

用于显示文件或目录占用的磁盘空间大小。Du命令是disk usage的缩写  4表示占用4个字节的空间。

du命令扩展

作用:查看磁盘使用空间

语法:du [OPTION]…[FILE]..

参数 -a 显示目录中所有文件大小

     -h 以易读方式显示文件大小

案列:

列出当前目录下所有文件和目录的容量大小 du

以易读方式显示dir文件夹及其子文件夹大小 du -h dir

以易读方式显示dir文件夹内所有文件大小 du -ah dir

显示文件file.txt 所占用的磁盘空间 du file.txt

仅显示目录的总大小

#du -s dir      等价于    du  --max-depth=0 dir

显示指定目录下每个文件或目录的容量大小,并且以易读方式显示   du -sh dir

重启reboot命令

Sync命令

作用:强制将更改的内容立刻写入磁盘。

关机

shutdown -h now 和 poweroff 都是用于关机的区别在于   :shutdown -h now 命令会向系统发送信号,通知所有正在运行的进程停止运行,并保存当前的状态,然后关闭系统。通常会在关机前向所有用户发送通知消息。
Poweroff命令相较于shutdown -h now 更为强制,它会立即关闭系统电源。使用poweroff命令时需要特别小心,因为它可能会丢失尚未保存的数据。

curl命令

模拟用户访问,模拟浏览器行为
例如:curl http://www.baidu.com (可查看百度首页的前端代码)
curl 命令是Linux系统中的一个用于发送HTTP请求的工具。它支持各种协议,包括HTTP,HTTPS,FTP,IMAP,SMTP等,可以用于从网络中获取数据,上传文件等。
curl [options] <URL>   其中URL表示要请求的目标地址。
常用选项: -i:  显示响应头信息。
                   -I:  只显示响应头信息,不显示响应体
                   -X:设置请求方法,包括GET,POST,PUT,DELETE等
                   -d:设置请求体数据(POST请求)
                   -H:  设置请求头信息
                   -o/-O下载文件,并保存到本地。
                   -u:设置认证信息
                   -A:设置User-Agent
                   -s:静默模式,不输出进度信息

curl命令扩展

作用:文件传输工具

语法:curl [参数] 网址

参数:-o 指定新的本地文件名

      -O 保留远程文件的原始名

      -u通过服务端配置的同户名和密码授权访问

      -l 打印HTTP响应头信息

      -A 设置用户代理标头信息

      -b 设置用户cookie信息

      -C 支持断点续传

      -s 静默模式,不输出任何信息

      -T 上传文件

案列:

获取指定网站的网页源码 curl www.baidu.com

保存网页 curl -o Baidu.html  www.baidu.com

下载指定网站中的文件 curl -O https://cn.wordpress.org/latest-zh_CN.zip

下载文件并重命名 curl -o wp.zip  https://cn.wordpress.org/latest-zh_CN.zip

断点续传 curl -C --O https://cn.wordpress.org/latest-zh_CN.zip

打印指定网站的HTTP响应头信息 curl -I https://cn.wordpress.org/latest-zh_CN.zip

通过ftp下载指定文件服务器中的文件 curl -u liangxu:123456 ftp://www.baidu.com/file.txt

上传文件 curl -T newfile.txt -u 用户名:密码 ftp://www.baidu.com/dir/

wget命令

语法:wget 资源地址

netstat查看网络连接状态及端口

查看所有的网络连接状态: netstat -a
netstat -an 添加-n参数的目的是:不将端口和IP地址转换为名称,而是直接显示数字格式的IP地址和端口号

显示系统网络状态中的TDP连接信息 netstat -at

显示系统网络状态中的UDP连接信息 netstat -au


LISTENING 状态:表示该端口已占用,正在监听,等待客户端的连接
CONNECTED状态:表示网络连接已建立,但并没有开始数据传输。
ESTABLISHED状态:表示网络已连接,数据在传输中。
TIME_WAIT状态:表示连接已经被终止,在双方都完成数据传输后,该连接会进入‘TIME_WAIT’状态,并等待一段时间后关闭。

只查看所有处于监听状态的连接:  netstat -l
只查看所有TCP连接状态:  netstat -lt
只查看所有UDP连接状态:  netstat -lu
查看所有处于CONNECTED连接状态:  netstat -o
查看指定端口的网络连接状态:netstat -an | grep 端口号

显示所有端口的统计信息 netstat -s

显示TCP或UDP端口的统计信息 netstat -st   netstat -su

输出中显示PID和进程名称:netstat -p

显示系统网络状态中的UDP连接端口号使用信息 netstat -apu

显示网卡当前状态信息 netstat -i

显示网络路由表状态信息 netstat -r

找到某个服务所对应的连接信息 netstat -ap | grep ssh

查看文件内容

查看文件内容的常见命令 cat more
和less  head和tail nl tailf

cat命令

语法:cat 【选项】...【文件】...
常用选项:
-n 对输出的所有行编号
-b对输出的所有行编号(不含空白行)
-t将制表符(tab)显示为^I
-e在每行结束处显示$
-s当连续空白行数量大于1是,合并为1个空白行

cat命令会一次性将文件的完整内容全部显示出来,不适合大文件

查看文件所有内容/查看文件所有内容,并且添加行号/查看文件所有内容,添加行号,但空白行不加行号
一次查看多个文件 cat a.txt b.txt    使用cat合并文件 cat a.txt b.txt > c.txt  加上行号之后输出到另一个文件  cat -n a > b
清空文件内容 cat /dev/null > c

tac命令

作用:反向显示文件内容

语法:tac [参数] [ 文件]

案列:tac file.txt

more命令

more命令和cat命令相同点和不同点:
相同点:more和cat在开始读取文件的时候,都是一次性的将文件全部内容装载到缓存中。
不同点:cat是一次性的全部输出打印。More可以进行部分打印(一屏一屏的打印)
用法:  more [选项] <文件>…
 常用选项:
   -<number> 每个屏幕的行数
   +<number> 从行号开始显示文件
   +/<pattern>从匹配的位置前两行开始显示内容
  -p 以清楚原有内容的方式进行翻页。
 常用操作:
    回车键  显示下一行  /空格键 显示下一页 / ctrl + b  显示上一页 / = 显示行号  / :f 显示文件名的同时显示行号  / q 退出more命令
  案例4:查看进程,每5条为一屏,翻屏时清空原内容
                     ps -ef | more -5 -p

more命令扩展

作用:分页显示文本文件内容

语法:more [options] file…

基本操作 回车:下滚一行  ;  空格:下翻一页

参数:

-num 指定每屏显示的行数

+num 从第num行开始显示

-p 先清除屏幕再显示文本文件的剩余内容

-c与-p相似,不滚屏,先显示内容再清除旧内容

-s 多个空行压缩成一行显示

案列:分页显示指定的文本文件内容

#more ~/.bashrc

      先进行清屏操作,随后以每次10行内容的格式显示指定的文本文件内容

#more -c -10 ~/.bashrc

      分页显示指定的文本文件内容,遇到连续两行以上空白行的情况,则以一行空白行显示

#more -s ~/.bashrc

      从第10行开始,分页显示指定的文本文件内容

#more +10 ~/.bashrc

ss命令

作用: 显示活动套接字 ss -at

语法:ss [参数]

案列:

显示TCP套接字 ss -at

显示UDP套接字 ss -au

显示套接字使用概况 ss -s

列出所有打开的网络连接端口 ss -l

查看进程使用的socket  ss -pl

找出打开套接字/端口应用程序 ss -lp | grep 6010

查看主机监听的端口 ss -tnl

解析IP和端口号 ss -tlr

telnet命令

作用:明文远程登入服务器,不安全,命令需要安装,不如ssh

语法:telnet [参数] [主机] [端口]

案列:

登录远程主机 telnet 192.168.107.133

指定端口 telnet 192.168.107.133 6379

ssh命令

作用:远程连接工具

语法:ssh [参数] [主机]

参数:-l <登录名>指定连接远程服务器的登录用户名

      -p<端口> 指定远程服务器上的端口

配置文件:/etc/ssh/sshd_config

案列:

登陆远程服务器 ssh 192.168.0.0

以liangxu身份远程登陆服务器

ssh -l liangxu 192.168.0.10

ssh liangxu@192.168.0.10

指定端口及用户名登陆服务器 ssh -p 2222 liangxu@192.168.0.10

远程执行命令  ssh 192.168.0.10 date

less命令

less也是对文件或其它输出进行分页显示的工具,使用less时,可以使用【pageup】【pagedown】等按键的功能来往前往后翻看文件。。。
用法:less 【选项】文件
常用选项:-g 只标志当前搜索道德
                  -I 忽略搜索时的大小写
                  -m显示显示类似more命令的百分比
                  -N显示每行的行号
                  +num 从第num行开始显示
常用操作:
/字符串:向下搜索字符串的功能
?字符串:向上搜索字符串的功能
n:重复前一个搜索(与/或?有关)
N反向重复前一个搜索(与/或?有关)
y向前滚动一行
回车键向后滚动一行
u向前滚动半页
d向后滚动半页
b向前翻一页
空格键 向后翻一页
g 移动到第一行
G移动到最后一行
=显示详细信息(第几行,共多少行,内容的字节数量等)
v使用vim编辑器进行编辑
q退出less命令
【pagedown】向下翻动一页
【pageup】向上翻动一页

less命令扩展

作用:分页显示文本内容

语法:less [参数] 文件

快捷操作:

空格键  下翻一页

回车键   下滚一行

#j   下滚一行

#k   上滚一行

#b    回翻一页

#f    下翻一页

#q     退出

/word  搜索word关键词

案列:

查看文件  less ~/.bashrc

查看多个文件 less ~/.bashrc ~/bash_history     :n 浏览下一个文件 ; :p浏览前一个文件

查看历史命令并使用less命令分也显示   history | less

less命令标记兴趣点

在感兴趣的位置添加标记:
    先按m键(set mark)
    输入标记名称,例如标记名子为x
需要回到感兴趣的位置时:

先按 ' 键( goto mark)
输入标记名称x

less命令实时监控文件动态变化

第一步:在窗口1中执行:less+F log.txt
第二步:在窗口2中执行:ps -ef >> log.txt
注意:在监控的过程中,按ctrl+c是终止监控,可以继续使用less命令的相关操作。按大写F,再次进入监控模式。
注意:log.txt是一个文件名,只有机器自动写入或通过输出重定向写入的才可以被监控

less命令查看多个文件

less log.txt log2.txt
 
输入:n跳转到log2.txt
 输入:p跳转到log.txt

less命令结合管道一起使用  
ps -ef | less -N

head命令

head命令:显示文件头部内容
 用法:heead [选项] …[文件}…
 将每个指定文件的前10行输出到标准输出
如果指定了多于一个文件,在每块输出之前附加文件名称作为头部
 参数:
-c输出前几个字符
-n指定行数
-q不显示包含给定文件名的文件头

head命令扩展

作用:显示文件开头的内容

参数:-n <数字>定义显示行数

      -c <数字>指定显示头部内容的字符数

案列:

显示文件的前10行内容(默认)

#head ~/.bashrc

显示文件的前5行内容

#head -n 5 ~/.bashrc

显示文件除了最后6行的全部内容

#head -n -6 ~/.bashrc

显示文件的前20个字符

#head -c 20 ~/.bashrc

显示文件除了最后30个字符的全部内容

#head -c -30 ~/.bashrc

tail命令

tail命令:显示文件尾部内容
 用法:tail [选项] …[文件}…
 显示每个指定文件的最后10行输出到标准输出
如果指定了多于一个文件,程序会在每段输出的开始添加相应文件名作为头部
 参数:
-c输出最后几个字符
-f随文件增长即时输出新增数据
-n指定行数
-q不输出文件名的头

tail命令扩展

作用:查看文件尾部内容

语法:tail [OPTION]…[FILE]…

参数:-c N输出文件尾部的N(N为整数)个字节内容

      -f 显示文件最新追加的内容

      -n N输出文件的尾部N(N位数字)行内容

案列:

显示 file.txt文件的最后10行内容 

#tail file.txt

显示 file.txt文件的最后20行内容

#tail -n 20 file.txt

显示 file.txt文件从第20行至文件末尾

#tail +20 file.txt

显示 file.txt文件的最后10个字符

#tail -c 10 file.txt

动态显示文件的最后10行内容

#tail -f file.txt

nl命令

nl命令是比较专业的显示行号的命令。
nl -b a所有行添加行号,包括空白行;
nl -b t给行添加行号,不包括空白行(默认行为,和直接使用nl一样效果)
nl -n ln行号在自己栏位左侧显示;
nl -n rn行号在自己栏位的右侧显示:
nl -n rz显示行号,行号栏位不满时,自动补0;
nl -w行号栏位的占用的位数。

nl命令扩展

作用:添加行号

语法:nl [OPTION]…[FILE]…

参数:

-b a 也给空行添加行号(类似cat -n)

-b t 空行不显示行号

-n 列出行号表示的方法: -n ln 行号在屏幕的最左方显示

                        -n rn 行号在自己栏位的最右方显示,且不加0

                        -n rz 行号在自己栏位的最右方显示,且加0

-w 行号栏位的占用的位数

案列:

用nl列出file.txt的内容

#nl file.txt

用nl列出file.txt的内容,空行也加上行号

#nl -b a file.txt

行号在自己栏位的最右方显示,且加0对齐格式

#nl -b a -n rz file.txt

行号宽度设置为3

#nl -b a -n rz -w 3 file.txt

空行不显示行号

#nl -b t file.txt

wc命令

作用:统计文本信息

语法:wc [OPTION]…[FILE]…

参数:

-w 统计字数,或 --words : 只显示字数。一个字被定义为由空白,跳格或换行字符分隔的字符串

-c 统计字节数,或 --bytes或--chars:   只显示Bytes数

-l 统计行数,或 --lines;只显示列数

-m 统计字符数

-L 打印最长行的长度(不包含不可见字符)

案列:

统计file.txt文件的行数,字数,以及字节数   

#wc file.txt

统计file.txt文件的字数

#wc -w file.txt

统计file.txt文件的字符数

#wc -m file.txt

统计file.txt文件的字节数

#wc -c file.txt

统计file.txt文件的行数

#wc -l file.txt

打印file.txt文件最长行的长度

#wc -L file.txt

使用管道统计文本行数

#cat file.txt | wc -l

split命令

作用:文件分割

语法:split [OPTION]…[FILE[PREFIX]]

参数:

指定每多少行切成一个小文件  -<行数>

                            -l 行数

指定每多少字节切成一个小文件 -b<字节>

使用数字作为后缀  -d

指定后缀长度 (默认为2)-a

[输出文件名]设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号

案列:

将file1.txt每2行切割成一个小文件

#split -2 file1.txt

将file2.txt每10KB切割成一个小文件

#split -b 10k file2.txt

以数字作为后缀,并指定后缀宽度为3

#split -b 10k -d -a 3 file2.txt

为分割后的文件指定文件名的前缀

#split -b 10k -d -a 3 file2.txt split_file

tailf命令

与 tail -f不同的是,如果文件不增长,他不会去访问磁盘文件。tailf特别适合哪些便携机上跟踪日志文件,因为它能省电,因为减少了磁盘访问。Tailf命令不是个脚本,而是一个用C代码编译后的二进制执行文件,

linux用户管理

Linux系统中超级用户是root,通过超级用户root可以创建其他用户,Linux是一个支持多用户的操作系统。在实际使用中,一般会分配给开发人员专属的账户,这个账户只拥有部分权限,如果权限太高,操作的范围过大,一些误操作可能导致系统崩溃,或者数据不安全,所以多用户机制就是一种系统安全策略。
在Linux系统中任何一个用户都对应:一个用户名+一个口令。用户使用系统时需要输入用户名和口令进行登录,登录成功后就可以进入自己的主目录(主目录就是自己的工作目录)。
用户账号管理主要包括以下三个方面:
 用户组的管理
 用户的管理
为用户主目录之外的目录授权

groups命令

作用:显示一个用户所加入的所有用户组

语法:groups 用户

案列:显示alvin用户所加入的所有组

用户组的管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
用户组的管理涉及用户组的添加,修改和删除。
用户组的添加,修改和删除实际上就是对/etc/group文件的更新
使用root账户查看当前系统的用户组有哪些 cat /etc/group
每一个用户组四部分组成:组名:密码标识:GID:该用户组中的用户列表

查看当前登录的账号属于哪一组  groups
查看某个用户属于哪一组 groups root

groupadd命令

作用:创建新的用户组

语法:groupadd [参数] 用户组

参数:-g 指定新建工作组的id

      -r 创建系统工作组

案列:创建一个新的用户组 groupadd work

      创建一个新的用户组,并指定GID号码 groupadd -g 1234 family

      创建一个新的用户组,设定为系统工作组 groupadd -r grouptest

用户组的添加

语法:groupadd [选项] 组名
常用选项
-g 可以通过这个选项来指定新用户组的标识号GID

用户组的修改

修改组标识号
groupmod -g 102 dev2
修改组名
groupmod -n dev3 dev2  #将dev2修改为dev3

groupdel命令

作用:删除用户组

语法:groupdel [参数] [群组名称]

案列:删除指定用户组 groupdel family

用户组的删除

删除用户组  groupdel dev3

用户管理工作涉及用户的添加,修改和删除

useradd命令

作用 创建并设置用户信息

语法:useradd [参数] 用户名

参数:-d<登入目录>指定用户登入时的目录。

      -g<群组>初始群组

      -G<群组>非初始群组

      -m自动创建用户的家目录。

      -M 不要创建用户的家目录

      -N 不要创建以用户名称为名的群组

      -s 指定用户登入后所使用的shell

四个重要文件:

/etc/passwd 保存用户信息  /etc/shadow 保存用户密码  /etc/group  保存组信息 /etc/gshadow  保存组密码

案列:

直接创建新用户 useradd user1

常用创建方法  useradd -m -s /bin/bash user2

自动创建家目录 useradd -m username

指定家目录 useradd -m -d /new/dir username

指定用户ID useradd -u 1500 username

指定组ID useradd -g group username

分配多个组 useradd -g group -G group1,group2 username

指定登录shell  useradd -s /bin/bash username

自定义注释 useradd -c “Test User Account” username

adduser命令

作用:创建用户账户

语法:adduser [参数] 用户名

案列:创建一个新用户 adduser newuser

添加用户

添加用户就是在系统中创建一个新账号,然后为新账号分配用户组,主目录等资源。
语法:useradd [选项] 用户名
选项:
 -d 指定新用户的主目录
 -g 指定新用户属于哪个组 (主组)
 -G可以给新用户添加附加组
注意:当新建用户时,没有指定组,也没有指定工作目录时:默认的组名:和自己用户名一样 默认的主目录:/home/用户名

userdel命令

作用:删除用户账户

语法:userdel [参数] 用户名

参数:-r 删除用户主目录及其中的任何文件

案列:

删除指定用户账户信息 userdel liangxu

删除指定的用户账户信息及家目录 userdel -r liangxu

删除用户

删除用户并连同主目录一块删除 userdel -r zhangsan  -r选项的作用是连同该用户主目录一块删除

passwd命令

作用:修改用户的密码

语法:passwd [参数] 用户名

参数:-d 删除已有密码

      -l 锁定用户的密码值,不允许修改

      -u 解锁用户的密码值,允许修改

      -e 下次登陆强制修改密码

      -k 用户在期满后能仍能使用

      -S查询密码状态

案列:

修改当前登录用户的密码值 passwd

修改指定用户的密码值 passwd liangxu

锁定指定用户的密码值,不允许其进行修改 passwd -l liangxu

解锁指定用户的密码值,允许其进行修改 passwd -u liangxu

强制指定的用户在下次登陆时必须重置其密码 passwd -e liangxu

删除指定用户的密码值 passwd -d liangxu

查看指定用户的密码状态 passwd -S liangxu

设置密码

给用户lisi设置密码   passwd lisi

注意:增加用户就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow,/etc/group等

通过查看/etc/passwd文件可以看到系统中有哪些用户。
用户名:密码:用户id:组id:用户备注信息:主目录:shell程序路径
密码会单独存储在/etc/shadow文件中

su命令

作用 :切换用户身份

语法:su [参数] 用户名

参数:- 完全身份变更

      -c 执行完指定的指令后,即恢复原来的身份

      -f 适用于csh与tsch ,使shell不用去读取启动文件

      -l 改变身份时,也同时变更工作目录

      -m 变更身份时,不要变更环境变量

      -s 指定要执行的shell

案列:切换超级用户 su    su root

      变更账号为alvin并保留在当前工作目录 su alvin

      变更账号为alvin并改变工作目录至alvin的家目录 su-alvin

    变更账号为alvin并在执行whomai指令后退出变回源使用者 su -c whoami alvin

                  

切换用户

从root账户切换到普通账户
从普通用户切换到超级管理员需要密码。密码输入时不回显。
注意切换到普通用户之后,该普通用户默认只对自己的主目录有权限,主目录之外的目录是没有权限的。

usermod命令

作用: 修改用户账号信息

语法:usermod [参数] 用户名

参数;  -c<备注>修改用户账号的备注文字

      -d<登入目录>修改用户登入时的家目录

      -e<有效期限>修改账号的有效期限

      -f<缓冲天数> 修改在密码过期后多少天即关闭该账号

      -g<群组>修改用户所属的群组

      -G<群组>修改用户所属的附加群组

      -l<账号名称>修改用户账号名称

      -L锁定用户密码,使密码无效

      -s <shell> 修改用户登入后所使用的shell

      -u<uid> 修改用户ID

      -U 解除密码锁定

案列:修改指定用户的家目录路径 usermod -d /home/hometest alvin

      修改指定用户的UID号码 usermod -u1234 alvin

      修改指定用户的名称  usermod -l harry alvin

      锁定指定用户的账户  usermod -L alvin

      解锁指定用户的账户  usermod -U alvin

修改用户

修改用户就是对用户名,用户主目录,用户组等进行修改。
语法:usermod [ 选项] 用户名
 -d 指定新用户的主目录
 -g指定新用户属于哪个组(主组)
 -G可以给新用户添加附加组
 -l指定新的用户名(小写)
修改用户名 :usermod -l zhangsi zhangsan
修改主目录: -m 选项很重要,当有了这个选项之后,目录不存在时会新建该目录  usermod -d /usr/zhangsan2 -m zhangsan
修改所属组:usermod -g dev1 zhangsan
锁定用户: usermod -L zhangsan
解锁用户:usermod -U zhangsan

chmod命令

作用:改变文件或目录权限(只有文件的属主和超级用户root才能执行此命令)

语法:chmod [OPTION]…MODE[MODE]…FILE…

      chmod [OPTION]…OCTAL.MODE FILE…

      chmod [OPTION]…--reference=RFILE FILE…

两种模式:符号模式;数字模式

参数: -R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)

案列:将文件file.txt 设置为所有人都可读取

# chmod a+r file.txt

      将当前目录下所有文件及递归目录文件设置为所有人可读取

#chmod -R a+r *

      将 file.txt 设置为只有该文件拥有者才可以执行

#chmod u+x file.txt

       将 file.txt 设置为文件拥有者机器同组人员可写入,但其他人不可写入

#chmod ug+w,o-w file.txt

将 file.txt 设置为所有人都可读可写可执行

#chmod a+r,a+w,a+x file.txt ; chmod 777 file.txt

将 file.txt 设置为文件拥有者可读可写可执行,此外的其他人可读可执行。

#chmod 755 file.txt

      将 file.txt 设置为文件拥有者可读可写,此外的其他人都没任何权限。

#chmod u=rw,go= file.txt

为用户主目录之外的目录授权

1.创建目录 mkdir /java
2.给目录授权   # -R表示递归设置权限,该目录下所有的子目录以及子文件
chmod -R 775 /java
3.创建组 groupadd dev
4.把目录赋予组 chgrp -R dev /java
5.创建用户  useradd xiaoming
6.设置密码 passwd xiaoming
7.给用户添加附加组 usermod -G dev xiaoming

文件权限

为了保证系统中每个文件的安全,可以做到不同的用户对同一个文件具有不同的操作权利。而通常这个权利包括3个
读的权利(Read,简称r)
写的权利(Write,简称w)
执行的权利(eXecute,简称x)
具体的权限值:rwx(读,写,执行)。这个我们已知,“不同用户”指的是哪些用户呢?包括3类
文件拥有者(User,简称U):该文件的创建人
同组用户(Group,简称G):和创建人在同一组的用户
其他组用户(Other,简称O)和创建人不在同一组的用户
这就是非常著名的UGO模型。也就是说一个文件的权限包括三组:
第一组U:我们可以给文件的创建者设置rwx权限
第二组G:我们可以给文件的创建者的同组人员设置rwx权限
第三组O:我们可以给和文件的创建者不在同一组的人员设置rwx权限

查看文件权限

采用 ls-l 命令可以查看文件的具体权限

基于UGO设置文件权限

修改权限的命令是chmod , 如果采用UGO方式修改权限的话,大致语法是这样的:
给同组人员添加写权限:  chmod g+w hello.java
给同组人员和其他组人员添加写权限:  chmod g+w,o+w hello.java
删除同组人员和其他组人员写权限:  chmod g-w,o-w hello.java

基于421设置文件权限

421采用数字来表示不同的权限
4代表读 2代表写 1代表执行
例如:如果让一个用户读写,执行权限都有的话,就是4+2+1=7,那么2这个数字代表rwx的权限都具备,如果是5就表示4+1的组合,表示有r和x的权限。如果是6就表示4+2的组合,表示有r和w的权限。如果是0就表示无任何权限。
通过421这几个数字的不同组合来表示不同的权限,那么它有几种不同的组合呢?
0 无权限
1 x
4 r
5 r+x
6 r+w
7r+w+x
也就是说一共6个数字
语法:chmod 三个数字 文件名

chgrp命令

作用:更改文件用户组

语法:chgrp [参数] [目录]

参数:-v显示指令执行过程

      -R 递归处理,将指定目录下的所有文件及子目录一并处理

      --reference 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。

案列:改变文件的用户组

# sudo chgrp alvin file.txt

      改变文件的用户组,并显示命令执行过程

# sudo chgrp -v alvin file.txt

      根据参照文件改变文件的用户组

# sudo chgrp --reference=reffile.txt file.txt

      将dir及其子目录下的所有文件的用户组改为alvin

#sudo chgrp -R alvin dir

chown命令

作用:改变文件或目录的用户和用户组

语法:chown [参数] 所属主 所属组 文件

参数:-R 对目前目录下的所有文件与目录进行相同的变更

      -c 显示所属信息变更信息

案列:改变file.txt文件的所属主与所属组

#sudo chown alvin:alvin file.txt

      只改变file.txt文件的所属主

#sudo chown alvin file.txt

      只改变file.txt文件的所属组

#sudo chown :alvin file.txt

      改变指定文件的所属主与所属组,并显示过程

#sudo chown -c liangxu:liangxu file.txt

      改变指定目录及其内所有子文件的所属主与所属组

#sudo chown -R alvin:alvin dir

chown修改文件拥有者

使用chown命令修改指定文件或目录的拥有者和所属组。
chown [选项]…[所有者][:[所属组]] 文件…
其中,所有者和所属组可以是用户名或用户ID,组名或组ID,如果省略:和所属组,则默认为修改文件的所有者
下面是一些常用选项
-R :递归修改,包括子目录和文件

软件的安装与卸载

RPM包

yum安装

yum软件仓库是为了进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术。

yum的关键之处是要有可靠的respository(保证能够连接互联网,还需要保证它是一个互联网上正常可用的仓库)
它能够从指定服务器自动下载rpm包并安装。Yum能够自动解决软件依赖性问题,一次性安装所有依赖的软件包。
Yum安装与卸载的相关命令
安装命令:yum -y install 软件名
升级命令:yum -y install 软件名
升级所有软件:yum -y install
卸载命令:yum remove 软件名
列出可安装的软件包: yum list installed
查询某个软件包:yum list 软件名
根据关键字搜索软件包:yum search Keyword
清除缓存: yum clean all

Dnf

1.更新系统软件包   dnf update
dnf 和yum都是包管理器,它们的作用是安装,升级,删除软件包以及解决软件包依赖关系。它们的区别如下:
语法不同:dnf命令的语法更加简洁,而yum命令的语法相对较长。更高效的算法。
性能不同:dnf命令在处理软件包时的性能比yum命令更好,因为dnf使用了
依赖关系处理不同:dnf命令再处理软件包依赖关系时更加智能,能够自动选择最佳的依赖关系解决方案。
使用的库不同:dnf命令使用了更加现代化的libdnf库,而yum命令使用了较老的yum库
可用插件不同:dnf命令支持更多的插件,可以实现更多的功能。
总的来说,dnf命令时yum命令的升级版本,它在性能,依赖关系处理和可用插件等方面都更加优秀

开启远程连接

需要修改相关配置,来开启 /etc/ssh/sshd_config
使用vim编辑sshd_config文件中的passwordAuthcation ,将no修改为yes 。
重启sshd服务:service sshd restart

防火墙的设置

如果访问不到Nginx服务,则需要在防火墙中进行端口得开放操作

查看防火墙的启动状态 systemctl status firewalld
关闭防火墙 systemctl stop firewalld
开启防火墙 systemctl start firewalld
查看开放的端口号firewall-cmd --list-all
在防火墙中设置开放的端口号firewall-cmd --zone=public --add-port=80/tcp  --permanent
开启端口后,需要重启防火墙才生效 firewall-cmd --reload

Shell

Linux操作系统内置的一种编辑语言

Linux操作系统是一种开放源代码的类UNIX操作系统,它的结构分为内核,Shell和应用程序三个层次。
1.内核层
内核是Linux系统的核心部分,它负责管理系统各种硬件设备,文件系统,内存管理和进程管理等核心任务。Linux内核设计了良好的模块化结构,可以动态地加载和卸载内核模块,这使得内核可以兼容各种不同地硬件设备和外围设备。
2.Shell层
Shell是Linux系统地命令行解释器,它负责将用户输入地命令解释并执行。最常用地是Bash Shell,它提供了各种丰富地功能和处理和处理能力,如通配符,重定向,管道,变量等等。
3.应用层
应用层是Linux系统上地各种应用程序和服务,包括文本编辑器,图形界面,web服务器,邮件服务器,数据库服务器等。在Linux系统中,应用程序通常以开放源代码方式呈现,用户可以自由学习和使用,也可以根据需求自己编写,修改或扩展。

shell编程本质上就是编写具有一定业务逻辑的shell命令。这一大堆的shell命令编写到xxx.sh文件中。我们把xxx.sh文件叫做:shell脚本。(shell脚本就是可执行文件。)
shell脚本比较著名的功能是自动化处理。

文本处理工具

熟悉grep,cut,sort,uniq,tee,diff,paste,tr等小工具和shell中的通配符的使用

grep行过滤工具

作用:文本搜索工具

语法:grep [参数] 文件

 Grep是行过滤工具;用于根据关键字进行行过滤

语法:

Grep  [选项]  ‘关键字’  文件名

常见选项:-i: 不区分大小写

          -v:查找不包含指定内容的行,反向选择

          -w:按单词搜索

          -o:打印匹配关键字

          -c:统计匹配的次数

          -n:显示行号

          -r:逐层遍历目录查找

          -A:显示匹配行及后面多少行

          -B: 显示匹配行及前面多少行

          -C: 显示匹配行前后多少行

          -I:只列出匹配的文件名

          -L:列出不匹配的文件名

          -e:使用正则匹配

          -E: 使用扩展正则匹配

          ^key:以关键字开头

           Key$:以关键字结尾

           ^$:匹配空行

           --color=auto :可以将找到的关键词部分加上颜色的显示

--color=auto 颜色显示

1.正常过滤关键字:[root@R9MB tmp]# grep 'root' passwd 但是没有颜色区分

2.加选项临时搞个颜色区分:[root@R9MB tmp]# grep --color=auto 'root' passwd

3.给命令设置别名alias临时搞个颜色区分:

[root@R9MB tmp]# alias grep='grep --color=auto'

[root@R9MB tmp]# grep 'root' passwd

4.想要永久生效并且针对所有用户;改全局文件[root@R9MB tmp]# vim /etc/bashrc

增加alias grep='grep --color=auto'

已登录用户重新读取文件[root@R9MB tmp]# source /etc/bashrc

-n过滤关键字在文件中是第几行

[root@R9MB tmp]# grep -n 'root' passwd

-i忽略大小写匹配

[root@R9MB tmp]# grep -n -i 'root' passwd

或这些表达:

[root@R9MB tmp]# grep -ni 'root' passwd

^过滤文件中以某某开头的行

[root@R9MB tmp]# grep '^root' passwd

$过滤文件中以某某结尾的行

[root@R9MB tmp]# grep 'bash$' passwd

-v过滤文件中不以某某开头的行

[root@R9MB tmp]# grep -v '^root' passwd

[root@R9MB tmp]# grep -niv '^root' passwd

过滤关键字在文件中前X行;后X行;前后X行(场景:查日志)

-A   after  后   ; -B  before 前 ; -C前后

过滤关键字在文件中前3行

[root@R9MB tmp]# grep -nB 3 '^ftp' passwd

过滤关键字在文件中后3行

[root@R9MB tmp]# grep -nA 3 '^ftp' passwd

过滤关键字在文件中前后3行

[root@R9MB tmp]# grep -nC 3 '^ftp' passwd

-w过滤包含某单词的行

[root@R9MB tmp]# grep -w 'hello' passwd

案列:

搜索某个文件中,包含某个关键词的内容

#grep liangxu /etc/passwd

搜索多个文件中,包含某个关键词的内容

#grep liangxu /etc/passwd /etc/shadow

搜索多个文件中,包含某个关键词的内容 ,不显示文件名称

#grep -h liangxu /etc/passwd /etc/shadow

递归搜索,不仅搜索指定目录,还搜索其内子目录内是否有关键词文件

#grep -r| hello *

输出在某个文件中,包含某个关键词行的数量

#grep -c root /etc/passwd /etc/shadow

忽略大小写

#grep -i LIANGXU /etc/passwd

在文件中查找要搜索的内容,并显示行号

#grep -n liangxu /etc/passwd

反向查找

#grep -v liangxu /etc/passwd

只列出符合匹配的文件名,不列出具体的匹配行

#grep -l hello *

搜索某个文件中,精准匹配到某个关键词的内容

#grep -x hello file1.txt  ;  grep -x hello file3.txt

判断某个文件中,是否包含某个关键词,通过返回状态值输出结果(0为包含,1为不包含),方便在Shell脚本中判断和调用

#grep -q hello file1.txt  ; grep -q hello file2.txt

egrep命令

作用: 查找指定的字符串

语法: egrep [参数] [文件]

参数:同grep

案列:查找包含一个或一个以上‘a’的内容

# egrep ‘a+’ file.txt

      查找包含linux或666的内容

#egrep ‘linux|666’ file.txt

      查找包含linux整体的内容

#egrep ‘(linux)’ file.txt

      查找包含一个或多个linux整体的内容

#egrep ‘(linux)+’ file.txt

      查找包含两个linux整体的内容

#egrep ‘(linux){2}’ file.txt

      查找以#开头的内容

#egrep ‘^#’ file.txt

      查找以linux 结尾的内容

#egrep ’linux$’ file.txt

      查找包括abc或abd的内容

#egrep ‘ab[cd]’ file.txt

sed工具

作用:批量编辑文本文件

语法:sed [选项] [动作] 文件名

参数:-n 仅显示script 处理后的结果

      -e 以选项中指定的script来处理输入的文本文件

      -i 此选项会直接修改源文件,要慎用

动作:a :新增 ; c : 取代 ; d :删除 ; i  : 插入;p :打印 ; s :取代

案列:

输出文件内容

            仅输出第2行 sed -n ‘2p’ file.txt

            输出3,5行  sed -n ‘3,5p’ file.txt

            搜索含有an 关键字的行 sed -n ‘/an/p’ file.txt

删除文件内容

           删除第2-4行的数据  sed ‘2,4d’ file.txt

           删除含有an关键字的行 sed ‘/an/d’ file.txt

      在第2行后追加nice  sed ‘2a nice’ file.txt

      在第2行前插入一行数据 sed ’2i 123456789’ file.txt 

      整行数据替换 sed ’2c asdfgh’ file.txt

                 替换2-5行内容 sed ’2,5c data changed’ file.txt

字符串替换   全局替换,把liangxu改为alvin    sed ‘s/liangxu/alvin/g’ file.txt

             只替换第3行 sed ‘3s/liangxu/alvin/g’ file.txt

             多个条件 sed -e ‘s/liangxu//g;s/alvin//g’ file.txt

将操作写入文件sed -i ‘3s/liangxu/alvin/g’ file.txt

awk命令

作用:文本和数据进行处理的编辑语言

语法:awk’条件1{动作1} 条件2{动作2}..’ file.txt

参数:-F 指定输入时用到的字段分隔符

      -v 自定义变量

-f 从脚本中读取awk命令

-m对val值设置内在限制

案列:

   显示第1和第3列的内容 df -h | awk ‘{print $1 “\t” $3}’

   指定冒号为分隔符,显示第1和第3列的内容

awk -F : ‘{print $1 “\t” $3}’ /etc/passwd

   指定冒号为分隔符,显示系统中所有UID号码大于500的用户信息(第3列)

awk -F : ‘$3>=500’ /etc/passwd

   搜索/etc/passwd有liangxu关键字的所有行

awk -F : ‘/liangxu/’ /etc/passwd

   搜索/etc/passwd有liangxu关键字的所有行,并显示对应的shell

awk -F : ‘/liangxu/{print $7}’ /etc/passwd

   BEGIN与END的使用

#head /etc/passwd | awk -F : ‘BEGIN {print “name\tuid”} {print $1 “\t” $3} END {print “from file /etc/passwd”}’

cut列过滤工具

cut是列截取工具,用于列的截取

语法:

cut 选项 文件名

常见选项:

-c:以字符为单位进行分割,截取

-d:自定义分隔符,默认为制表符\t

-f:与-d一起使用,制定截取哪个区域

cut命令扩展

作用:从文件中提取文本的一部分

语法:cut OPTION…[FILE]…

参数:

-b 以字节为单位进行分割,仅显示行中指定直接范围的内容

-c 以字符为单位进行分割,仅显示行中指定范围的字符

-d 自定义分隔符,默认为制表符”TAB”

-f 显示指定字段的内容,与-d一起使用

-n 取消分割多字节字符

--complement补足被选择的字节,字符或字段

--out-delimiter指定输出内容是字段分割符

案列:

提取file1.txt第2列的内容

#cut -f 2 file1.txt

#cut -f2 file1.txt

提取file1.txt除第2列外的其他内容

#cut -f2 --complement file1.txt

使用-d选项指定字段分割符

#cut -f2 -d”:”file2.txt

提取第2,3,4,6个字节

#cut -b 2-4,6 file3.txt

提取指定数量字符

提取第1个到第3个字符   cut -c1-3 file3.txt

提取前2个字符   cut -c-2 file3.txt

提取第4个之后的字符  cut -c4- file3.txt

截取passwd文件冒号符号首列

[root@R9MB tmp]# cut -d ':' -f1 passwd

截取passwd文件冒号符号首列和尾列

[root@R9MB tmp]# cut -d ':' -f1,7 passwd

[root@R9MB tmp]# cut -d ':' -f1,7 passwd | head

截取passwd文件第1个到第5个字符列

[root@R9MB tmp]# cut -c1-5 passwd

截取passwd文件从第10个开始往后全部截取字符列

[root@R9MB tmp]# cut -c10- passwd

截取passwd文件第5个到第10个字符列

[root@R9MB tmp]# cut -c5-10 passwd

sort工具

Sort工具用于排序;它将文件的每一行作为一个单位,从首字符向后,依次按ASCll码进行比较,最后将它们按升序输出。

Sort 选项 文件

选项有:

-u:去除重复行

-r:降序排列,默认是升序

-o:将排序结果输出到文件中,类似重定向符号>

-n:以数字排列,默认是按字符排序

-t:分隔符

-k:第N列

-b:忽略前导空格。

-R:随机排序,每次运行的结果均不同

sort命令扩展

作用:对文件内容进行排序

语法:sort [参数] 文件

参数:-n 依照数值的大小排序

      -t <分割字符>指定排序时所用的栏位分隔字符

      -k 指定需要排序的栏位

      -r 以相反的顺序来排序

案列:按字母顺序排序 sort file1.txt

      反向排序 sort -r file1.txt

      按数字大小排序 sort -n file1.txt

      以冒号:为间隔符,对指定的文件内容按照数字大小对第3列进行排序 sort -t : -k 3 -n file3.txt

按数字排序1.txt文件以冒号分隔符第3列字符列=按照用户的uid进行升序排列

[root@R9MB tmp]# sort -n -t ':' -k3 1.txt

按照用户的uid进行降序排列

[root@R9MB tmp]# sort -n -r -t ':' -k3 1.txt

[root@R9MB tmp]# sort -nr -t':' -k3 1.txt

按照用户的uid进行降序排列并输出到另一个文本

[root@R9MB tmp]# sort -nr -t':' -k3 1.txt -o 2.txt

对文本里内容去重且排序

[root@R9MB tmp]# sort -u 3.txt

uniq工具

uniq用于去除连续的重复行

常见选项:

-i:忽略大小写

-c:统计重复行次数

-d:只显示重复行

uniq命令扩展

作用:去除文件中的重复行

语法:uniq [OPTION]…[INPUT[OUTPUT]]

参数:-c 打印每行在文本中重复出现的次数

      -d 只显示有重复的记录,每个重复记录只出现一次

      -u 只显示没有重复的记录

案列:删除连续文件中连续的重复行 uniq file.txt

      打印每行在文件中出现重复的次数 uniq -c file.txt

      只显示有重复的记录,且每个记录只出现一次 uniq -d file.txt

      只显示没有重复的记录 uniq -u file.txt

去除连续重复行

[root@R9MB tmp]# uniq 3.txt

tee工具

tee工具是从标准输入读取并写入到标准输出和文件,即:双向覆盖重定向(屏幕输出|文本输入)

选项:-a双向追加重定向

[root@R9MB tmp]# echo 999|tee 11.txt

[root@R9MB tmp]# echo 888|tee -a 11.txt

888

[root@R9MB tmp]# cat 11.txt

999

888

[root@R9MB tmp]#

diff工具(没懂)

diff工具用于逐行比较文件的不同

注意:diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配

语法:

Diff  [选项] 文件1 文件2

常用选项

-b 不检查空格

-B不检查空白行

-i不检查大小写

-W忽略所有的空格

--normal正常格式显示(默认)

-c上下文格式显示

-u合并格式显示

diff命令扩展

作用:比较文件的差异

语法:diff [OPTION]…FILES

参数:y 以并列的方式显示文件的异同之处

     #c 显示全部内文 ,并标出不同之处

     #u 以合并的方式来显示文件内容的不同

     -W 设置宽度

显示提示:

-add  a

-change  c

-delete  d

| 前后2个文件内容有不同

< 后面文件比前面文件少了1行内容

>后面文件比前面文件多了1行内容

+ 比较的文件的后者比前者多一行

- 比较的文件的后者比前者少一行

!比较的文件两者有差别的行

案列:

比较两个文件 diff file1.txtx file2.txt

并排格式输出 diff -y -W 50 file1.txt file2.txt

上下文格式输出 diff -c file1.txt file2.txt

统一格式输出 diff -u file1.txt file2.txt

生成补丁 diff file1.txt file2.txt > file.patch

打补丁 patch file1.txt file.patcch

Diff目的:file1如何改变才能和file2匹配

paste工具

paste工具用于合并文件行

常用选项;

-d:自定义间隔符,默认是tab

-s:串行处理,非并行

[root@R9MB tmp]# paste file1 file2

[root@R9MB tmp]# paste -d ';' file1 file2

paste命令扩展

作用:合并两个或多个文件

语法:paste [OPTION]…[FILE]…

参数:

-d 默认域的分割符是空格或tab键,设置新的域分隔符

-s 将每个文件粘贴成一行

- 从标准输入中读取数据

案列:

将file1.txt和file2.txt 粘贴成一个新的文件

#paste file1.txt file2.txt

顺序不一样,结果不一样

#paste file2.txt file1.txt

多文件拼接

#paste file1.txt file2.txt file3.txt

设置域分隔符为:粘贴成新的文件

#paste -d”:” file1.txt file2.txt

    将每个文件粘贴成一行

#paste -d”:”  -s file1.txt file2.txt

从标准输入中读取数据,每行显示4个文件名

#ls | paste -d” ”- - - -

tr工具

tr用于字符转换,替换和删除;主要用于删除文件中控制字符或进行字符转换

语法:

用法1:命令的执行结果交给tr处理,其中string1用于查询,string2用于转换处理

# commands | tr ‘string1’ ‘string2’

用法2:tr处理的内容来自文件,记住要使用 ‘<’ 标准输入

# tr ‘string1’ ‘string2’ < filename

用法3:匹配string1进行相应操作,如删除操作

#tr options ‘string1’ < filename

常用选项:

-d删除字符串1中所有输入字符

-s删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串

将文件里小写字母替换成大写字母

[root@R9MB tmp]# tr 'a-z' 'A-Z' < 1.txt

将文件里所有数字替换成@符号

[root@R9MB tmp]# tr '0-9' '@' < 1.txt

将文件里冒号斜杠(:/)替换成#符号

[root@R9MB tmp]# tr ':/' '#' < 1.txt

将文件里小写字母删除

[root@R9MB tmp]# tr -d 'a-z' < 1.txt

将文件里除了字母以外所有符号删除

[root@R9MB tmp]# tr -d ':/, 0-9' < 1.txt

[root@R9MB tmp]# tr -d '[:/, 0-9]' < 1.txt

截取IP地址

[root@R9MB ~]# ifconfig ens160 | grep 'netmask'| tr -d 'a-z '|cut -c1-14

192.168.23.132

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值