1、命令格式;
如果用户要使用Linux,可通过CLI方式执行命令。在Linux中,一般命令的通用语法格式如下:
COMMAND [OPTIONGS...] [ARGUMENTS...]
中括号表示可以省略,每个部分之间有一个或多个空格。
每个部分详细说明:
1)COMMAND:命令,表示可执行命令,常见的命令有二进制格式文件,或者脚本程序文件(本身是一定格式的文本文件,但需要由解释器解释才能运行),如:ls
2)OPTIONS:选项,可以用来调整命令的运行特征;
3)[]中括号中的内容表示可以省略,一般命令都支持一个或多个选项,选项分为三种风格:
I、UNIX风格选项:用一个短横线(dash)开始,后面跟一个字母,又称短选项,支持多个选项进行组合,
如:-a,-lh
II、GNU风格选项:用两个短横线开始,后面跟一个单词,一般不支持多个选项组合,又称长选项,如:
--all,--verbose
III、BSD风格选项:一个字母,但前面不加短横线,支持多个选项组合,支持此风格的命令对上面两种风格来说不太多。如:a,aux
4)ARGUMENT:参数,表示命令的作用对象,比如文件名,用户名,网卡名等,有的命令支持有多个参数,参数健使用空白字符分隔。
2、常用命令;
1)ls — List :显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
语法
ls(选项)(参数)
选项
-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
-A:显示除影藏文件“.”和“..”以外的所有文件列表;
-C:多列显示输出结果。这是默认选项;
-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
-F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;
-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;
-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
-f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;
--file-type:与“-F”选项的功能相同,但是不显示“*”;
-k:以KB(千字节)为单位显示文件大小;
-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-m:用“,”号区隔每个文件和目录的名称;
-n:以用户识别码和群组识别码替代其名称;
-r:以文件名反序排列并输出目录内容列表;
-s:显示文件和目录的大小,以区块为单位;
-t:用文件和目录的更改时间排序;
-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
--full-time列出完整的日期与时间;
--color[=WHEN]:使用不同的颜色高亮显示不同类型的。
参数
目录:指定要显示列表的目录,也可以是具体的文件。
实例
显示当前目录下非影藏文件与目录
[root@localhost ~]# ls
anaconda-ks.cfg
显示当前目录下包括影藏文件在内的所有文件列表
[root@localhost ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .pki .tcshrc .viminfo
输出长格式列表
[root@localhost ~]# ls -l
总用量 4
-rw-------. 1 root root 1241 5月 22 19:36 anaconda-ks.cfg
显示文件的inode信息
索引节点(index inode简称为“inode”)是Linux中一个特殊的概念,具有相同的索引节点号的两个文本本质上是同一个文件(除文件名不同外)。
[root@localhost ~]# ls -i -l anaconda-ks.cfg
33574979 -rw-------. 1 root root 1241 5月 22 19:36 anaconda-ks.cfg
水平输出文件列表
[root@localhost /]# ls -m
bin, boot, data, dev, etc, home, lib, lost+found, media, misc, mnt, opt, proc, root, sbin, selinux, srv, sys, tmp, usr, var
修改最后一次编辑的文件
最近修改的文件显示在最上面。
[root@localhost /]# ls -t
boot tmp run etc dev sys proc root var usr sbin lib64 lib bin home media mnt opt srv
显示递归文件
[root@localhost ~]# ls -R
.:
anaconda-ks.cfg
打印文件的UID和GID
[root@localhost /]# ls -n
总用量 16
lrwxrwxrwx. 1 0 0 7 5月 22 19:28 bin -> usr/bin
dr-xr-xr-x. 5 0 0 4096 5月 27 18:55 boot
drwxr-xr-x 2 0 0 47 5月 24 21:37 data
drwxr-xr-x 20 0 0 3200 6月 10 19:42 dev
drwxr-xr-x. 76 0 0 8192 6月 10 19:42 etc
drwxr-xr-x. 2 0 0 6 4月 11 2018 home
lrwxrwxrwx. 1 0 0 7 5月 22 19:28 lib -> usr/lib
lrwxrwxrwx. 1 0 0 9 5月 22 19:28 lib64 -> usr/lib64
drwxr-xr-x. 2 0 0 6 4月 11 2018 media
drwxr-xr-x. 2 0 0 6 4月 11 2018 mnt
drwxr-xr-x. 2 0 0 6 4月 11 2018 opt
dr-xr-xr-x 131 0 0 0 6月 10 19:42 proc
dr-xr-x---. 3 0 0 163 6月 9 21:00 root
drwxr-xr-x 23 0 0 660 6月 10 19:43 run
lrwxrwxrwx. 1 0 0 8 5月 22 19:28 sbin -> usr/sbin
drwxr-xr-x. 2 0 0 6 4月 11 2018 srv
dr-xr-xr-x 13 0 0 0 6月 10 19:42 sys
drwxrwxrwt. 8 0 0 172 6月 10 20:29 tmp
drwxr-xr-x. 13 0 0 155 5月 22 19:28 usr
drwxr-xr-x. 19 0 0 267 5月 22 19:37 var
列出文件和文件夹的详细信息
[root@localhost /]# ls -l
总用量 16
lrwxrwxrwx. 1 root root 7 5月 22 19:28 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 5月 27 18:55 boot
drwxr-xr-x 2 root root 47 5月 24 21:37 data
drwxr-xr-x 20 root root 3200 6月 10 19:42 dev
drwxr-xr-x. 76 root root 8192 6月 10 19:42 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 home
lrwxrwxrwx. 1 root root 7 5月 22 19:28 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 5月 22 19:28 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 2 root root 6 4月 11 2018 opt
dr-xr-xr-x 131 root root 0 6月 10 19:42 proc
dr-xr-x---. 3 root root 163 6月 9 21:00 root
drwxr-xr-x 23 root root 660 6月 10 19:43 run
lrwxrwxrwx. 1 root root 8 5月 22 19:28 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x 13 root root 0 6月 10 20:50 sys
drwxrwxrwt. 8 root root 172 6月 10 20:29 tmp
drwxr-xr-x. 13 root root 155 5月 22 19:28 usr
drwxr-xr-x. 19 root root 267 5月 22 19:37 var
列出可读文件和文件夹详细信息
[root@localhost /]# ls -lH
总用量 16
lrwxrwxrwx. 1 root root 7 5月 22 19:28 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 5月 27 18:55 boot
drwxr-xr-x 2 root root 47 5月 24 21:37 data
drwxr-xr-x 20 root root 3200 6月 10 19:42 dev
drwxr-xr-x. 76 root root 8192 6月 10 19:42 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 home
lrwxrwxrwx. 1 root root 7 5月 22 19:28 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 5月 22 19:28 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 2 root root 6 4月 11 2018 opt
dr-xr-xr-x 131 root root 0 6月 10 19:42 proc
dr-xr-x---. 3 root root 163 6月 9 21:00 root
drwxr-xr-x 23 root root 660 6月 10 19:43 run
lrwxrwxrwx. 1 root root 8 5月 22 19:28 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x 13 root root 0 6月 10 20:50 sys
drwxrwxrwt. 8 root root 172 6月 10 20:29 tmp
drwxr-xr-x. 13 root root 155 5月 22 19:28 usr
drwxr-xr-x. 19 root root 267 5月 22 19:37 var
显示文件夹信息
[root@localhost /]# ls -ld
dr-xr-xr-x. 18 root root 236 5月 24 21:37 .
按时间列出文件和文件夹详细信息
[root@localhost /]# ls -ltr
总用量 16
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
drwxr-xr-x. 2 root root 6 4月 11 2018 opt
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 home
lrwxrwxrwx. 1 root root 7 5月 22 19:28 bin -> usr/bin
lrwxrwxrwx. 1 root root 7 5月 22 19:28 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 5月 22 19:28 lib64 -> usr/lib64
lrwxrwxrwx. 1 root root 8 5月 22 19:28 sbin -> usr/sbin
drwxr-xr-x. 13 root root 155 5月 22 19:28 usr
drwxr-xr-x. 19 root root 267 5月 22 19:37 var
drwxr-xr-x 2 root root 47 5月 24 21:37 data
dr-xr-xr-x. 5 root root 4096 5月 27 18:55 boot
dr-xr-x---. 3 root root 163 6月 9 21:00 root
dr-xr-xr-x 130 root root 0 6月 10 19:42 proc
drwxr-xr-x 20 root root 3200 6月 10 19:42 dev
drwxr-xr-x. 76 root root 8192 6月 10 19:42 etc
drwxr-xr-x 23 root root 660 6月 10 19:43 run
drwxrwxrwt. 8 root root 172 6月 10 20:29 tmp
dr-xr-xr-x 13 root root 0 6月 10 20:50 sys
2)mkdir — Make Directory:用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。
注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录。例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面。
在一个子目录中应包含类型相似或用途相近的文件。例如,应建立一个子目录,它包含所有的数据库文件,另有一个子目录应包含电子表格文件,还有一个子目录应包含文字处理文档,等等。目录也是文件,它们和普通文件一样遵循相同的命名规则,并且利用全路径可以唯一地指定一个目录。
语法
mkdir (选项) (参数)
选项
-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;
-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
--version 显示版本信息。
参数
目录:指定要创建的目录列表,多个目录之间用空格隔开。
实例
在目录/usr下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问
mkdir -m 700 /usr/test
在当前目录中建立bin和bin下的os_1目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问
mkdir -p -m 750 bin/os_1
3)pwd — Print Working Directory:以绝对路径的方式显示用户当前工作目录。命令将当前目录的全路径名称(从根目录)写入标准输出。全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。
#绝对路径永远都是相对于根文件夹的。它们的标志就是第一个字符永远都是“/”。
#相对路径永远都是相对于我们所处的文件夹位置。它们的第一个字符没有“/”。
语法
pwd(选项)
选项
--help:显示帮助信息;
--version:显示版本信息。
实例
[root@localhost ~]# pwd
/root
4)cd — Change Directory:用来切换工作目录至dirname。 其中dirname表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录)。另外,~也表示为home directory的意思,.则是表示目前所在的目录,..则表示目前目录位置的上一层目录。
语法
cd (选项) (参数)
选项
-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录
-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。
- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。
实例
cd 进入用户主目录;
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# cd
[root@localhost ~]# pwd
/root
cd ~ 进入用户主目录;
[root@localhost ~]# cd ~
[root@localhost ~]# pwd
/root
cd - 返回进入此目录之前所在的目录;
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# cd
[root@localhost ~]# cd -
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
cd .. 返回上级目录(若当前目录为“/“,则执行完后还在“/";".."为上级目录的意思);
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# cd ..
[root@localhost sysconfig]# pwd
/etc/sysconfig
cd ../.. 返回上两级目录;
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# cd ../..
[root@localhost etc]# pwd
/etc
cd !$ 把上个命令的参数作为cd参数使用。
[root@localhost ~]# ll /usr/test
总用量 0
drwxr-xr-x 3 root root 18 6月 12 11:01 bin
[root@localhost ~]# cd !$
cd /usr/test
[root@localhost test]# pwd
/usr/test
5)rmdir— Remove Directory:用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用rmdir命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或多个子目录,其中dirname佬表示目录名。如果dirname中没有指定路径,则删除当前目录下由dirname指定的目录;如dirname中包含路径,则删除指定位置的目录。删除目录时,必须具有对其父目录的写权限。
注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。
虽然还可以用带有-r选项的rm命令递归删除一个目录中的所有文件和该目录本身,但是这样做存在很大的危险性。
语法
rmdir (选项) (参数)
选项
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;
--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
-v或-verboes:显示命令的详细执行过程;
--help:显示命令的帮助信息;
--version:显示命令的版本信息。
参数
目录列表:要删除的空目录列表。当删除多个空目录时,目录名之间使用空格隔开。
实例
删除子目录os_1和其父目录bin
[root@localhost test]# cd /usr/test
[root@localhost test]# ls
bin
[root@localhost test]# rmdir -p bin/os_1/
[root@localhost test]# ls
6)rm— Remove:可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
语法
rm (选项) (参数)
选项
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
--preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
参数
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。
实例
交互式删除当前目录下的文件example
[root@localhost test]# ll
总用量 0
-rw-r--r-- 1 root root 0 6月 12 11:07 example
-rw-r--r-- 1 root root 0 6月 12 11:07 test
[root@localhost test]# rm -i example
rm:是否删除普通空文件 "example"?y
删除当前目录下除隐含文件外的所有文件和子目录
[root@localhost test]# ls
1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt test
[root@localhost test]# rm -rf *
[root@localhost test]# ls
应注意,这样做是非常危险的!
7)cp— Copy:用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,否则将出现错误。
语法
cp (选项) (参数)
选项
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
参数
源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
实例
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点..的形式。例如,下面的命令将指定文件复制到当前目录下:
[root@localhost test]# ls
[root@localhost test]# pwd
/usr/test
[root@localhost test]# cp ../lib/sendmail.postfix .
[root@localhost test]# ls
sendmail.postfix
[root@localhost test]# pwd
/usr/test
所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。
将文件file复制到目录/usr/test/下,并改名为file1
[root@localhost ~]# touch file
[root@localhost ~]# ls
anaconda-ks.cfg file
[root@localhost ~]# cp file /usr/test/file1
[root@localhost ~]# ll /usr/test/
总用量 244
-rw-r--r-- 1 root root 0 6月 12 11:15 file1
-rwxr-xr-x 1 root root 247960 6月 12 11:12 sendmail.postfix
将目录/var/log下的所有文件及其子目录复制到目录/etc中
[root@localhost ~]# cp -r /var/log /etc
[root@localhost ~]# ls /etc/log
anaconda boot.log chrony dmesg firewalld lastlog messages secure tallylog wtmp
audit btmp cron dmesg.old grubby_prune_debug maillog rhsm spooler tuned yum.log
交互式地将目录/tmp中的以m打头的所有.sh文件复制到目录/usr/test中
[root@localhost tmp]# touch {1..5}.sh
[root@localhost tmp]# ls
1.sh 2.sh 3.sh 4.sh 5.sh systemd-private-101798cbac63427e90dc28dd320e68bf-chronyd.service-a6h4On
[root@localhost tmp]# cp -i *.sh /usr/test
[root@localhost tmp]# ls /usr/test/
1.sh 2.sh 3.sh 4.sh 5.sh file1 sendmail.postfix
8)mv— Move:用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
语法
mv (选项) (参数)
选项
--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
--strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
--target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
参数
源文件:源文件列表。
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
实例
将文件name改名为newname
[root@localhost data]# touch name
[root@localhost data]# ls
name
[root@localhost data]# mv name newname
[root@localhost data]# ls
newname
将目录/var/log中的所有文件移到当前目录(用.表示)中:
[root@localhost data]# mv /var/log .
[root@localhost data]# ls
log newname
mv /usr/men/* .
9)cat— concatenate and print files:连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令。
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。
语法
cat (选项) (参数)
选项
-n或-number:有1开始对所有输出的行数编号;
-b或--number-nonblank:和-n相似,只不过对于空白行不编号;
-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;
-A:显示不可打印字符,行尾显示“$”;
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
参数
文件列表:指定要连接的文件列表。
实例
设ml和m2是当前目录下的两个文件
cat m1 (在屏幕上显示文件ml的内容)
[root@localhost data]# cat m1
aaa
cat m1 m2 (同时显示文件ml和m2的内容)
[root@localhost data]# cat m1 m2
aaa
bbb
cat m1 m2 >m3(将文件ml和m2合并后放入文件m3中)
[root@localhost data]# cat m1 m2 > m3
[root@localhost data]# cat m3
aaa
bbb
10)tail — print TAIL(from last):用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。
语法
tail (选项) (参数)
选项
--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;
-c或——bytes=:输出文件尾部的N(N为整数)个字节内容;
-f或;--follow:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
-F:与选项“-follow=name”和“--retry"连用时功能相同;
-n或——line=:输出文件的尾部N(N位数字)行内容;
--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;
-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;
-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;
-v或——verbose:当有多个文件参数时,总是输出各个文件名;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
参数
文件列表:指定要显示尾部内容的文件列表。
实例
tail /var/log/messages(显示文件 /var/log/messages的最后10行)
[root@localhost data]# tail /var/log/messages
Jun 12 10:52:57 localhost dracut: *** Creating initramfs image file '/boot/initramfs-3.10.0-957.el7.x86_64kdump.img' done ***
Jun 12 10:52:58 localhost kdumpctl: kexec: loaded kdump kernel
Jun 12 10:52:58 localhost kdumpctl: Starting kdump: [OK]
Jun 12 10:52:58 localhost systemd: Started Crash recovery kernel arming.
Jun 12 10:52:58 localhost systemd: Startup finished in 2.061s (kernel) + 4.895s (initrd) + 45.567s (userspace) = 52.525s.
Jun 12 11:01:01 localhost systemd: Started Session 3 of user root.
Jun 12 11:04:15 localhost chronyd[6190]: Received KoD RATE from 136.243.7.20
Jun 12 11:07:21 localhost systemd: Starting Cleanup of Temporary Directories...
Jun 12 11:07:21 localhost systemd: Started Cleanup of Temporary Directories.
Jun 12 11:28:54 localhost chronyd[6190]: Source 144.172.126.201 replaced with 212.25.15.129
tail +20 /var/log/messages (显示文件 /var/log/messages的内容,从第20行至文件末尾)
[root@localhost data]# tail +20 /var/log/messages
tail: 无法打开"+20" 读取数据: 没有那个文件或目录
==> /var/log/messages <==
Jun 12 10:52:57 localhost dracut: *** Creating initramfs image file '/boot/initramfs-3.10.0-957.el7.x86_64kdump.img' done ***
Jun 12 10:52:58 localhost kdumpctl: kexec: loaded kdump kernel
Jun 12 10:52:58 localhost kdumpctl: Starting kdump: [OK]
Jun 12 10:52:58 localhost systemd: Started Crash recovery kernel arming.
Jun 12 10:52:58 localhost systemd: Startup finished in 2.061s (kernel) + 4.895s (initrd) + 45.567s (userspace) = 52.525s.
Jun 12 11:01:01 localhost systemd: Started Session 3 of user root.
Jun 12 11:04:15 localhost chronyd[6190]: Received KoD RATE from 136.243.7.20
Jun 12 11:07:21 localhost systemd: Starting Cleanup of Temporary Directories...
Jun 12 11:07:21 localhost systemd: Started Cleanup of Temporary Directories.
Jun 12 11:28:54 localhost chronyd[6190]: Source 144.172.126.201 replaced with 212.25.15.129
tail -c 10 /var/log/messages(显示文件 /var/log/messages的最后10个字符)
[root@localhost data]# tail -c 10 /var/log/messages
25.15.129
11)less — print LESS:作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。
语法
less (选项) (参数)
选项
-e:文件内容显示完毕后,自动退出;
-f:强制显示文件;
-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;
-l:搜索时忽略大小写的差异;
-N:每一行行首显示行号;
-s:将连续多个空行压缩成一行显示;
-S:在单行显示较长的内容,而不换行显示;
-x<数字>:将TAB字符显示为指定个数的空格字符。
参数
文件:指定要分屏显示内容的文件。
less /var/log/messages
12)tar:可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzipbzib2命令)。
语法
tar (选项) (参数)
选项
-A或--catenate:新增文件到以存在的备份文件;
-B:设置区块大小;-c或--create:建立新的备份文件;
-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项;
-d:记录文件的差别;
-x或--extract或--get:从备份文件中还原文件;
-t或--list:列出备份文件的内容;
-z或--gzip或--ungzip:通过gzip指令处理备份文件;
-Z或--compress或--uncompress:通过compress指令处理备份文件;
-f<备份文件>或--file=<备份文件>:指定备份文件;-v或--verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;
-p或--same-permissions:用原来的文件权限还原文件;
-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;
-N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;
--exclude=<范本样式>:排除符合范本样式的文件。
参数
文件或目录:指定要打包的文件或目录列表。
实例
将文件全部打包成tar包:
tar -cvf log.tar log2012.log 仅打包,不压缩!
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
在选项f之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加z选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;如果加j选项,则以.tar.bz2来作为tar包名。
查阅上述tar包内有哪些文件:
tar -ztvf log.tar.gz
由于我们使用 gzip 压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上z这个选项了。
将tar包解压缩:
tar -zxvf /opt/soft/test/log.tar.gz
在预设的情况下,我们可以将压缩档在任何地方解开的
只将tar内的部分文件解压出来:
tar -zxvf /opt/soft/test/log30.tar.gz log2013.log
我可以透过tar -ztvf来查阅 tar 包内的文件名称,如果单只要一个文件,就可以透过这个方式来解压部分文件!
文件备份下来,并且保存其权限:
tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log
这个-p的属性是很重要的,尤其是当您要保留原本文件的属性时。
在文件夹当中,比某个日期新的文件才备份:
tar -N "2012/11/13" -zcvf log17.tar.gz test
备份文件夹内容是排除部分文件:
tar --exclude scf/service-zcvf scf.tar.gz scf/*
其实最简单的使用 tar 就只要记忆底下的方式即可:
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
查 询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
13)help:用于显示shell内部命令的帮助信息。help命令只能显示shell内部的命令帮助信息。而对于外部命令的帮助信息只能使用man或者info命令查看。
语法
help(选项)(参数)
选项
-s:输出短格式的帮助信息。仅包括命令格式。
参数
内部命令:指定需要显示帮助信息的shell内部命令。
实例
使用help命令显示shell内部echo命令的帮助信息,输入如下命令:
[root@localhost data]# help echo
echo: echo [-neE] [参数 ...]
将参数写到标准输出。
在标准输出上显示 ARG 参数后跟一个换行。
选项:
-n 不要追加换行
-e 启用下列反斜杠转义的解释
-E 显式地抑制对于反斜杠转义的解释
`echo' 对下列反斜杠字符进行转义:
\a 警告(响铃)
\b 退格
\c 抑制更多的输出
\e 转义字符
\f 格式提供
\n 换行
\r 回车
\t 横向制表符
\v 纵向制表符
\\ 反斜杠
\0nnn 以 NNN (八进制)为 ASCII 码的字符。 NNN 可以是
0到3个八进制数字
\xHH 以 HH (十六进制)为值的八比特字符。HH可以是
一个或两个十六进制数字
退出状态:
返回成功除非有写错误发生。
14)who — Who Is logged in:是显示目前登录系统的用户信息。执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器。
语法
who (选项) (参数)
选项
-H或--heading:显示各栏位的标题信息列;
-i或-u或--idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;
-m:此参数的效果和指定"am i"字符串相同;
-q或--count:只显示登入系统的帐号名称和总人数;
-s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
-w或-T或--mesg或--message或--writable:显示用户的信息状态栏;
--help:在线帮助;
--version:显示版本信息。
参数
文件:指定查询文件。
实例
[root@localhost ~]# who
root pts/0 2020-06-10 19:50 (192.168.1.102)
15)su — Switch User:用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
语法
su (选项) (参数)
选项
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;
-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s或--shell=:指定要执行的shell;
--help:显示帮助;
--version;显示版本信息。
参数
用户:指定要切换身份的目标用户。
实例
变更帐号为root并在执行ls指令后退出变回原使用者:
su -c ls root
变更帐号为root并传入-f选项给新执行的shell:
su root -f
变更帐号为test并改变工作目录至test的家目录:
su -test
16)df — Disk space Free:用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法
df (选项) (参数)
选项
-a或--all:包含全部的文件系统;
--block-size=<区块大小>:以指定的区块大小来显示区块数目;
-h或--human-readable:以可读性较高的方式来显示信息;
-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
-i或--inodes:显示inode的信息;
-k或--kilobytes:指定区块大小为1024字节;
-l或--local:仅显示本地端的文件系统;
-m或--megabytes:指定区块大小为1048576字节;
--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
-P或--portability:使用POSIX的输出格式;
--sync:在取得磁盘使用信息前,先执行sync指令;
-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
-T或--print-type:显示文件系统的类型;
-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
--help:显示帮助;
--version:显示版本信息。
参数
文件:指定文件系统上的文件。
实例
查看系统磁盘设备,默认是KB为单位:
[root@localhost data]# df /dev/sda1
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 1038336 148728 889608 15% /boot
使用-h选项以KB以上的单位来显示,可读性高:
[root@localhost data]# df -h /dev/sda1
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda1 1014M 146M 869M 15% /boot
查看全部文件系统:
[root@localhost data]# df -a /dev/sda1
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 1038336 148728 889608 15% /boot
19)ps — ProcesseS:用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
语法
ps(选项)
选项
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
-A:显示所有程序。
-c:显示CLS和PRI栏位。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:此选项的效果和指定"A"选项相同。
e:列出程序时,显示每个程序所使用的环境变量。
-f:显示UID,PPIP,C与STIME栏位。
f:用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。
g:显示现行终端机下的所有程序,包括群组领导者的程序。-G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
h:不显示标题列。
-H:显示树状结构,表示程序间的相互关系。-j或j:采用工作控制的格式显示程序状况。-l或l:采用详细的格式来显示程序状况。
L:列出栏位的相关信息。
-m或m:显示所有的执行绪。
n:以数字来表示USER和WCHAN栏位。
-N:显示所有的程序,除了执行ps指令终端机下的程序之外。-
p<程序识别码>:指定程序识别码,并列出该程序的状况。
p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
r:只列出现行终端机正在执行中的程序。-s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s:采用程序信号的格式显示程序状况。
S:列出程序时,包括已中断的子程序资料。
-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
-T:显示现行终端机下的所有程序。
-u<用户识别码>:此选项的效果和指定"-U"选项相同。
u:以用户为主的格式来显示程序状况。
-U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
U<用户名称>:列出属于该用户的程序的状况。
v:采用虚拟内存的格式显示程序状况。
-V或V:显示版本信息。
-w或w:采用宽阔的格式来显示程序状况。
x:显示所有程序,不以终端机来区分。
X:采用旧式的Linux i386登陆格式显示程序状况。-y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 。-<程序识别码>:此选项的效果和指定"p"选项相同。
--cols<每列字符数>:设置每列的最大字符数。
--columns<每列字符数>:此选项的效果和指定"--cols"选项相同。
--cumulative:此选项的效果和指定"S"选项相同。
--deselect:此选项的效果和指定"-N"选项相同。
--forest:此选项的效果和指定"f"选项相同。
--headers:重复显示标题列。
--help:在线帮助。
--info:显示排错信息。
--lines<显示列数>:设置显示画面的列数。
--no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
--group<群组名称>:此选项的效果和指定"-G"选项相同。
--Group<群组识别码>:此选项的效果和指定"-G"选项相同。
--pid<程序识别码>:此选项的效果和指定"-p"选项相同。
--rows<显示列数>:此选项的效果和指定"--lines"选项相同。
--sid<阶段作业>:此选项的效果和指定"-s"选项相同。
--tty<终端机编号>:此选项的效果和指定"-t"选项相同。
--user<用户名称>:此选项的效果和指定"-U"选项相同。
-User<用户识别码>:此选项的效果和指定"-U"选项相同。
--version:此选项的效果和指定"-V"选项相同。
--widty<每列字符数>:此选项的效果和指定"-cols"选项相同。
常用组合:ps aux 或ps -ef
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 1.6 0.2 190820 3760 ? Ss 12:18 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 12:18 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 12:18 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 12:18 0:00 [kworker/0:0]
root 5 0.0 0.0 0 0 ? S< 12:18 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 12:18 0:00 [kworker/u256:0]
[root@localhost ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 1 12:18 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 12:18 ? 00:00:00 [kthreadd]
root 3 2 0 12:18 ? 00:00:00 [ksoftirqd/0]
root 4 2 0 12:18 ? 00:00:00 [kworker/0:0]
root 5 2 0 12:18 ? 00:00:00 [kworker/0:0H]
root 6 2 0 12:18 ? 00:00:00 [kworker/u256:0]
root 7 2 0 12:18 ? 00:00:00 [migration/0]
18)top — Top processes:可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
语法
top(选项)
选项
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。
top交互命令
在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。
h:显示帮助画面,给出一些简短的命令总结说明;
k:终止一个进程;
i:忽略闲置和僵死进程,这是一个开关式命令;
q:退出程序;
r:重新安排一个进程的优先级别;
S:切换到累计模式;
s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;
f或者F:从当前显示中添加或者删除项目;
o或者O:改变显示项目的顺序;
:切换显示平均负载和启动时间信息;
m:切换显示内存信息;
t:切换显示进程和CPU状态信息;
c:切换显示命令名称和完整命令行;
M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
w:将当前设置写入~/.toprc文件中。
实例
top - 11:50:59 up 58 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 119 total, 1 running, 118 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1863252 total, 1538192 free, 99012 used, 226048 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1580640 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9 root 20 0 0 0 0 S 0.3 0.0 0:01.26 rcu_sched
61 root 20 0 0 0 0 S 0.3 0.0 0:04.91 kworker/0:1
6548 root 20 0 216408 4808 3480 S 0.3 0.3 0:00.77 rsyslogd
12403 root 20 0 161692 6696 5152 S 0.3 0.4 0:01.14 sshd
26079 root 20 0 162008 2248 1572 R 0.3 0.1 0:00.02 top
1 root 20 0 125300 3780 2564 S 0.0 0.2 0:02.66 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.05 ksoftirqd/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kworker/u256:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.06 migration/0
解释:
top - 11:50:59[当前系统时间],
up 58 min[系统已经运行了68分钟],
1 user[个用户当前登录],
load average: 0.00, 0.01, 0.05[系统负载1分钟,5分钟,15分钟,即任务队列的平均长度]
Tasks: 119 total[总进程数],
2 running[正在运行的进程数],
118 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
Cpu(s):
0.1us[用户空间占用CPU百分比],
0.1%sy[内核空间占用CPU百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
99.8%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
0.0%hi[],
0.0%st[],
KiB Mem :
1863252 total[物理内存总量],
1538192 free[使用的物理内存总量],
99012 used[空闲内存总量],
226048 buff/cache[用作内核缓存的内存量]
KiB Swap:
2097148 total[交换区总量],
0 used[使用的交换区总量],
2097148 free[空闲交换区总量],
1580640 avail Mem[缓冲的交换区总量],
19)shutdown:用来系统关机命令。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。
语法
shutdown (选项) (参数)
选项
-c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令;
-f:重新启动时不执行fsck;
-F:重新启动时执行fsck;
-h:将系统关机;
-k:只是送出信息给所有用户,但不会实际关机;
-n:不调用init程序进行关机,而由shutdown自己进行;
-r:shutdown之后重新启动;
-t<秒数>:送出警告信息和删除信息之间要延迟多少秒。
参数
[时间]:设置多久时间后执行shutdown指令;
[警告信息]:要传送给所有登入用户的信息。
实例
指定现在立即关机:
shutdown -h now
指定5分钟后关机,同时送出警告信息给登入用户:
shutdown +5 "System will shutdown after 5 minutes"
20)du:也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。
语法
du [选项] [文件]
选项
-a或-all 显示目录中个别文件的大小。
-b或-bytes 显示目录或文件大小时,以byte为单位。
-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
-k或--kilobytes 以KB(1024bytes)为单位输出。
-m或--megabytes 以MB为单位输出。
-s或--summarize 仅显示总计,只列出最后加总的值。
-h或--human-readable 以K,M,G为单位,提高信息的可读性。
-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
-S或--separate-dirs显示个别目录的大小时,并不含其子目录的大小。
-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
--exclude=<目录或文件> 略过指定的目录或文件。
-D或--dereference-args 显示指定符号链接的源文件大小。
-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
-l或--count-links 重复计算硬件链接的文件。
实例
显示目录或者文件所占空间:
[root@localhost data]# du -h /data
16K /data
只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小
显示指定文件所占空间:
[root@localhost data]# du -h /var/log/messages
436K /var/log/messages
21)echo:用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
语法
echo (选项) (参数)
选项
-e:激活转义字符。
使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
参数
变量:指定要打印的变量。
实例
用echo命令打印带有色彩的文字:
文字色:
echo -e "\e[1;31mThis is red text\e[0m"This is red text
\e[1;31m 将颜色设置为红色
\e[0m 将颜色重新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
背景色:
echo -e "\e[1;42mGreed Background\e[0m"Greed Background
颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
文字闪动:
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐
22)date:显示或设置系统时间与日期。
很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。
语法
date (选项) (参数)
选项
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息。
参数
<+时间日期格式>:指定显示时使用的日期时间格式。
日期格式字符串列表
时间方面 :
% : 印出
% %n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区
日期方面 :
%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期和时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],
其中 MM 为月份,
DD 为日,
hh 为小时,
mm 为分钟,
CC 为年份前两位数字,
YY 为年份后两位数字,
ss 为秒数
实例
格式化输出:
[root@localhost ~]# date +"%Y-%m-%d"
2020-06-10
输出昨天日期:
[root@localhost ~]# date -d "1 day ago" +"%Y-%m-%d"
2020-06-09
2秒后输出:
[root@localhost ~]# date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2020-06-10 20:42.00
传说中的 1234567890 秒:
[root@localhost ~]# date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30
普通转格式:
[root@localhost ~]# date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00
apache格式转换:
[root@localhost ~]# date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37
格式转换后时间游走:
[root@localhost ~]# date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37
加减操作:
date +%Y%m%d //显示前天年月日
date -d "+1 day" +%Y%m%d //显示前一天的日期
date -d "-1 day" +%Y%m%d //显示后一天的日期
date -d "-1 month" +%Y%m%d //显示上一月的日期
date -d "+1 month" +%Y%m%d //显示下一月的日期
date -d "-1 year" +%Y%m%d //显示前一年的日期
date -d "+1 year" +%Y%m%d //显示下一年的日期
设定时间:
date -s //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523 //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" //这样可以设置全部时间
date -s "01:01:01 20120523" //这样可以设置全部时间
date -s "2012-05-23 01:01:01" //这样可以设置全部时间
date -s "20120523 01:01:01" //这样可以设置全部时间
23)ifconfig:用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
语法
ifconfig (参数)
参数
add<地址>:设置网络设备IPv6的ip地址;
del<地址>:删除网络设备IPv6的IP地址;
down:关闭指定的网络设备;
<硬件地址>:设置网络设备的类型与硬件地址;
io_addr:设置网络设备的I/O地址;
irq:设置网络设备的IRQ;
media<网络媒介类型>:设置网络设备的媒介类型;
mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;
metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;
mtu<字节>:设置网络设备的MTU;
netmask<子网掩码>:设置网络设备的子网掩码;
tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;
up:启动指定的网络设备;
-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;
-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;
-promisc:关闭或启动指定网络设备的promiscuous模式;
IP地址:指定网络设备的IP地址;网络设备:指定网络设备的名称。
实例
显示网络设备信息(激活状态的):
[root@localhost ~]# ifconfig ens33
ens33: flags=4163
inet 192.168.1.111 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::3f7e:d4c4:9d7f:18c4 prefixlen 64 scopeid 0x20
ether 00:0c:29:e6:1f:72 txqueuelen 1000 (Ethernet)
RX packets 3276 bytes 259205 (253.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 418 bytes 48056 (46.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
说明:
ens33表示第一块网卡,其中HWaddr表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是00:0c:29:e6:1f:72。
inet addr用来表示网卡的IP地址,此网卡的IP地址是 192.168.1.111,广播地址Bcast: 192.168.1.255,掩码地址Mask:255.255.255.0。
lo是表示主机的回环地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。比如把 htttpd服务器的指定到回环地址,在浏览器输入127.0.0.1就能看到你所架WEB网站了。但只是您能看得到,局域网的其它主机或用户无从知道。
第一行:连接类型:Ethernet(以太网)HWaddr(硬件mac地址)。
第二行:网卡的IP地址、子网、掩码。
第三行:UP(代表网卡开启状态)RUNNING(代表网卡的网线被接上)MULTICAST(支持组播)MTU:1500(最大传输单元):1500字节。
第四、五行:接收、发送数据包情况统计。
第七行:接收、发送数据字节数统计信息。
启动关闭指定网卡:
ifconfig eth0 up
ifconfig eth0 down
ifconfig eth0 up为启动网卡eth0,ifconfig eth0 down为关闭网卡eth0。ssh登陆linux服务器操作要小心,关闭了就不能开启了,除非你有多网卡。
为网卡配置和删除IPv6地址:
ifconfig ens33 add 33ffe:3240:800:1005::2/64#为网卡eth0配置IPv6地址ifconfig eth0 del 33ffe:3240:800:1005::2/64#为网卡eth0删除IPv6地址
用ifconfig修改MAC地址:
ifconfig ens33 hw ether 00:AA:BB:CC:dd:EE
配置IP地址:
[root@localhost ~]# ifconfig ens33 192.168.2.10
[root@localhost ~]# ifconfig ens33 192.168.2.10 netmask 255.255.255.0
[root@localhost ~]# ifconfig ens33 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255
启用和关闭arp协议:
ifconfig eth0 arp#开启网卡eth0 的arp协议ifconfig eth0 -arp#关闭网卡eth0 的arp协议
设置最大传输单元:
ifconfig eth0 mtu 1500#设置能通过的最大数据包大小为 1500 bytes