LINUX常用100条命令总结【一】

2021-09-13 14:35:58 浏览数 (1)

一、查询及帮助命令

1.1 man

语法:man [命令]

实例:[root@node02 ~]# man ls

1.2 help

语法:命令 --help

实例:[root@node02 ~]# ls --help

二、文件和目录操作命令

2.1 ls

功能:是列出目录的内容及其内容属性信息

语法:ls [-alrtAFR][name...]

参数:

代码语言:javascript复制
 -a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出-r 将文件以相反次序显示(原定依英文字母次序)-t 将文件依建立时间之先后次序列出-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"-R 若目录下有文件,则以下之文件亦皆依序列出
2.2 cd

功能:功能是从当前工作目录切换到指定的工作目录。

语法:cd [dirName]

补充:

"~" 也表示为 home 目录 的意思,"." 则是表示目前所在的目录,".." 则表示目前目录位置的上一层目录。

2.3 cp

功能:复制文件或目录

语法:cp [options] source dest

参数:

代码语言:javascript复制
 -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。-d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。-f:覆盖已经存在的目标文件而不给出提示。-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。-l:不复制文件,只是生成链接文件。
2.4 find

功能:用于查找目录及目录下的文件。

语法:find [路径][选项] [操作]

选项:

代码语言:javascript复制
 -name  根据文件名查找-perm  根据文件权限查找-prune  该选项可以排除某些查找目录-user  根据文件属主查找-group  根据文件属主查找-mtime -n |  n 根据文件更改时间查找-nogroup  查找无效属组的文件-nouser  查找无有效属主的文件-newer file1 ! file2  查找更改时间比file1新但比file2旧IDE文件-type  按文件类型查找-size -n  n 按文件大小查找-mindepth n 从n级子目录开始搜索-maxdepth n  最多搜索到n级子目录

实例:

  • 查找 /etc 目录下以 conf 结尾的文件,文件名区分大小写
代码语言:javascript复制
 find /etc -name '*.conf'
  • 查找当前目录下所有文件名为 aa 的文件,文件名不区分大小写
代码语言:javascript复制
 [root@node02 ~]# find . -iname aa./aa./AA[root@node02 ~]# 
  • 查找文件所属用户为moonrong的所有文件
代码语言:javascript复制
 [root@node02 home]# find . -user moonrong./moonrong./moonrong/.mozilla./moonrong/.mozilla/extensions./moonrong/.mozilla/plugins./moonrong/.bash_logout./moonrong/.bash_profile./moonrong/.bashrc[root@node02 home]# 
  • 查找文件所属组为moonrong的所有文件
代码语言:javascript复制
 find . -group moonrong

 -type  根据类型查找:如下

代码语言:javascript复制
 f   文件        find . -type fd  目录        find . -type dc  字符设备文件    find . -type cb  块设备文件     find . -type bl   链接文件      find . -type lp  管道文件      find . -type p

-size  根据文件大小查询

代码语言:javascript复制
 -n  小于 大小为 n 的文件 n  大于 大小为 n 的文件
  • 查找 /ect 目录下,小于 10000 字节的文件
代码语言:javascript复制
  find /etc -size  10000c
  • 查找 /etc 目录下,大于 1M 的文件
代码语言:javascript复制
 find /etc -size -1M

-mtime

代码语言:javascript复制
 -n  n 天以内修改的文件。 n  n 天以外修改的文件。n  正好 n天 修改的文件
  • 查询 /etc 目录下,5天以内修改 且以 conf 结尾的文件
代码语言:javascript复制
 find /etc -mtime -5 -name '*.conf'

查询 /etc 目录下,10天之前修改,且属于moonrong 的文件

代码语言:javascript复制
 find /etc -mtime  10 -user moonrong

-mmin

代码语言:javascript复制
  -n  n 分钟以内修改过的文件   n  n 分钟之前修改过的文件
  • 查询 /etc 目录下 30分钟 之前修改过的文件
代码语言:javascript复制
 find /etc -mmin  30
  • 查询 /etc 目录下 30分钟 之前修改过的目录
代码语言:javascript复制
 find /etc -mmin -30 -type d

-mindepth n  从第 n 级目录开始搜索

  • 从 /etc 的第三级子目录开始搜索
代码语言:javascript复制
 find /etc -mindepth 3

-maxdepth n  表示至多搜索到第 n-1 级子目录。

  • 在 /etc 中搜索符合条件的文件,但最多搜索到 2级 子目录
代码语言:javascript复制
 find /etc -maxdepth 3 -name '*.conf'find /etc -type f -name '*.conf' -size  10k -maxdepthc 2
  • 将目前目录及其子目录下所有最近 20 天内更新过的文件列出
代码语言:javascript复制
 find . -ctime -20
  • 查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
代码语言:javascript复制
 find /var/log -type f -mtime  7 -ok rm {} ;
  • 查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
代码语言:javascript复制
 find . -type f -perm 644 -exec ls -l {} ;
  • 服务器磁盘满,一般由大的日志文件导致,需找到大文件并删除
代码语言:javascript复制
 find / -size  500M -print0|xargs -0 du -m|sort -nr
2.5 mv

功能:用来为文件或目录改名、或将文件或目录移入其它位置

语法:

代码语言:javascript复制
 mv [options] source destmv [options] source... directory

参数:

代码语言:javascript复制
 -i: 若指定目录已有同名文件,则先询问是否覆盖旧文件-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示

实例:

  • 将文件a.1b改名为a.2b
代码语言:javascript复制
 mv a.1b a.2b
  • 将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs
代码语言:javascript复制
 mv info/ logs
  • 将/usr/student下的所有文件和目录移到当前目录下
代码语言:javascript复制
 mv /usr/student/*  . 
2.6 pwd

功能:显示当前工作目录的绝对路径

2.7 rm

功能:删除一个或多个文件或目录

语法:

代码语言:javascript复制
 rm [options] name...

参数:

代码语言:javascript复制
 -i 删除前逐一询问确认。-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r 将目录及以下之档案亦逐一删除。

实例:

  • 删除当前目录下的所有文件及目录
代码语言:javascript复制
rm  -r  * 
  • 删除当前目录下的所有文件及目录,并且是直接删除,无需逐一确认命令行为
代码语言:javascript复制
rm  -rf  要删除的文件名或目录
  • 删除文件名 test.txt
代码语言:javascript复制
rm  -rf   test.txt
  • 删除目录 test,不管该目录下是否有子目录或文件,都直接删除
代码语言:javascript复制
rm -rf test/
2.8 rmdir

功能:删除空目录

语法:

代码语言:javascript复制
rmdir [-p] dirName

参数:

代码语言:javascript复制
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除

实例:

  • 将工作目录下,名为 AAA 的子目录删除
代码语言:javascript复制
rmdir AAA
  • 在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除
代码语言:javascript复制
rmdir -p BBB/Test
2.9 mkdir

功能:创建目录

语法:

代码语言:javascript复制
mkdir [-p] dirName

参数:

代码语言:javascript复制
-p 确保目录名称存在,不存在的就建一个

实例:

  • 在工作目录下,建立一个名为 AAA 的子目录
代码语言:javascript复制
mkdir AAA
  • 在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。 若 BBB 目录原本不存在,则建立一个
代码语言:javascript复制
mkdir -p BBB/Test
2.10 touch

功能:创建新的空文件,改变已有文件的时间戳属性

语法:

代码语言:javascript复制
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]

参数:

代码语言:javascript复制
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。

实例:

  • 使用指令"touch"修改文件"testfile"的时间属性为当前系统时间
代码语言:javascript复制
touch testfile
  • 创建一个名为“file”的新的空白文件
代码语言:javascript复制
touch file
2.11 tree

功能:以树形结构显示目录下的内容

语法:

代码语言:javascript复制
tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式>][目录...]

参数

代码语言:javascript复制
-a 显示所有文件和目录。
-A 使用ASNI绘图字符显示树状图而非以ASCII字符组合。
-C 在文件和目录清单加上色彩,便于区分各种类型。
-d 显示目录名称而非内容。
-D 列出文件或目录的更改时间。
-f 在每个文件或目录之前,显示完整的相对路径名称。
-F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","=","@","|"号。
-g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
-i 不以阶梯状列出文件或目录名称。
-I<范本样式> 不显示符合范本样式的文件或目录名称。
-l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
-n 不在文件和目录清单加上色彩。
-N 直接列出文件和目录名称,包括控制字符。
-p 列出权限标示。
-P<范本样式> 只显示符合范本样式的文件或目录名称。
-q 用"?"号取代控制字符,列出文件和目录名称。
-s 列出文件或目录大小。
-t 用文件和目录的更改时间排序。
-u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
-x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外。
2.12 file

功能:辨识文件类型

语法:file [-bcLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

参数:

代码语言:javascript复制
-b  列出辨识结果时,不显示文件名称。
-c  详细显示指令执行过程,便于排错或分析程序执行的情形。
-f<名称文件>  指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L  直接显示符号连接所指向的文件的类别。
-m<魔法数字文件>  指定魔法数字文件。
-v  显示版本信息。
-z  尝试去解读压缩文件的内容。
[文件或目录...] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

三、查看文件及内容处理

3.1 cat

功能:cat 命令用于连接文件并打印到标准输出设备上

语法:

代码语言:javascript复制
cat [-AbeEnstTuv] [--help] [--version] fileName

参数:

代码语言:javascript复制
-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行结束处显示 $。
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-A, --show-all:等价于 -vET。
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;

实例:

  • 把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
代码语言:javascript复制
cat -n textfile1 > textfile2
  • 把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:
代码语言:javascript复制
cat -b textfile1 textfile2 >> textfile3
  • 清空 /etc/test.txt 文档内容:
代码语言:javascript复制
cat /dev/null > /etc/test.txt
3.2 tac

功能:反向显示文件内容

3.3 more

功能:分页显示文件内容

语法:

代码语言:javascript复制
more [-dlfpcsu] [-num] [ /pattern] [ linenum] [fileNames..]

参数:

代码语言:javascript复制
-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
 /pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
 num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数

实例:

  • 逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示。
代码语言:javascript复制
more -s testfile
  • 从第 20 行开始显示 testfile 之文档内容。
代码语言:javascript复制
more  20 testfile
3.4 less

功能:分页显示文件内容,与more相反

用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件

语法:

代码语言:javascript复制
less [参数] 文件 

参数:

代码语言:javascript复制
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行

[pagedown]

: 向下翻动一页

[pageup]

: 向上翻动一页

实例:

  • 查看文件
代码语言:javascript复制
cat vmware-vmusr.log
  • ps查看进程信息并通过less分页显示
代码语言:javascript复制
ps -ef |less
  • 查看命令历史使用记录并通过less分页显示
代码语言:javascript复制
history | less
3.5 head

功能:head命令以行为单位,取文件的内容,后面不接参数时默认打印前10行

语法:

代码语言:javascript复制
head [参数] [文件]

参数:

代码语言:javascript复制
-n	后面接数字,代表显示几行的意思
-c	指定显示头部内容的字符数
-v	总是显示文件名的头信息
-q	不显示文件名的头信息

实例:

  • 显示前5行文件内容
代码语言:javascript复制
head -n 5 file
  • 显示文件名信息,并显示文件前两行
代码语言:javascript复制
head -v -n 2 test.txt 
  • 显示文件前5个字符
代码语言:javascript复制
head -c 5 test.txt
3.6 tail

功能:显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行

语法:

代码语言:javascript复制
tail [参数] [文件]  

参数:

代码语言:javascript复制
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

实例:

  • 一直变化的文件总是显示后10行
代码语言:javascript复制
 tail -f 10 file
  • 显示文件file的最后10行
代码语言:javascript复制
tail file
  • 显示文件file的内容,从第20行至文件末尾
代码语言:javascript复制
tail  20 file 
  • 显示文件file的最后10个字符
代码语言:javascript复制
tail -c 10 file
3.7 cut

功能:两个主要的功能,第一是显示文件内容,第二是连接多个或多个文件。

​ 若不指定file参数,该命令将读取标准输入。 必须指定 -b、-c 或 -f 标志之一。

语法:

代码语言:javascript复制
cut [参数] [文件]

参数:

代码语言:javascript复制
-b	以字节为单位进行分割 ,仅显示行中指定直接范围的内容
-c	以字符为单位进行分割 , 仅显示行中指定范围的字符
-d	自定义分隔符,默认为制表符”TAB”
-f	显示指定字段的内容 , 与-d一起使用
-n	取消分割多字节字符
--complement	补足被选择的字节、字符或字段
--out-delimiter	指定输出内容是的字段分割符
3.8 wc

功能:统计文件的行数、单词数或字节数

语法:

代码语言:javascript复制
wc [参数] [文件]

参数:

代码语言:javascript复制
-w	统计字数,或--words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串
-c	统计字节数,或--bytes或--chars:只显示Bytes数
-l	统计行数,或--lines:只显示列数
-m	统计字符数
-L	打印最长行的长度

实例:

  • 统计字数
代码语言:javascript复制
wc -w test.txt 
  • 统计字节数
代码语言:javascript复制
wc -c test.txt
  • 统计字符数
代码语言:javascript复制
wc -m test.txt
  • 统计行数
代码语言:javascript复制
wc -l test.txt
  • 打印最长行的长度
代码语言:javascript复制
wc -L test.txt
3.9 grep

功能:强大的文本搜索工具

linux系统支持三种形式的grep命令,大儿子就是grep,标准,模仿的代表。二儿子兴趣爱好多-egrep,简称扩展grep命令,其实和grep -E等价,支持基本和扩展的正则表达式。小儿子跑的最快-fgrep,简称快速grep命令,其实和grep -F等价,不支持正则表达式,按照字符串表面意思进行匹配。

语法:

代码语言:javascript复制
grep [参数]

参数:

代码语言:javascript复制
-i	搜索时,忽略大小写
-c	只输出匹配行的数量
-l	只列出符合匹配的文件名,不列出具体的匹配行
-n	列出所有的匹配行,显示行号
-h	查询多文件时不显示文件名
-s	不显示不存在、没有匹配文本的错误信息
-v	显示不包含匹配文本的所有行
-w	匹配整词
-x	匹配整行
-r	递归搜索
-q	禁止输出任何结果,已退出状态表示搜索是否成功
-b	打印匹配行距文件头部的偏移量,以字节为单位
-o	与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位

实例:

  • 支持多文件查询并支持使用通配符
代码语言:javascript复制
grep zwx file_* /etc/hosts

待完善

3.10 tr

功能:将字符进行替换、压缩、删除

语法:

代码语言:javascript复制
tr [参数] [字符串1] [字符串2]

参数:

代码语言:javascript复制
-c	选定字符串1中字符集的补集,即反选字符串1的补集
-d	删除字符串1中出现的所有字符
-s	删除所有重复出现的字符序列,只保留一个

实例:

  • 实现大小写字母的互换
代码语言:javascript复制
tr "[a-z]" "[A-Z]" <file_1
  • 删除file_1中的小写字母
代码语言:javascript复制
tr -d "[a-z]" <file_1
  • 压缩重复的空白行
代码语言:javascript复制
tr -s "[n]" <file_2

四、文件压缩及解压缩命令

4.1 tar

功能:用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件

参数:

代码语言:javascript复制
-c: 建立压缩档案 
-x:解压 
-t:查看内容 
-r:向压缩归档文件末尾追加文件 
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

代码语言:javascript复制
-z:有gzip属性的 
-j:有bz2属性的 
-Z:有compress属性的 
-v:显示所有过程 
-O:将文件解开到标准输出 

下面的参数 -f 是必须的

代码语言:javascript复制
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 

实例:

  • 将所有 .jpg 的文件打成一个名为 all.tar 的包。-c 是表示产生新的包,-f 指定包的文件名。
代码语言:javascript复制
tar -cf all.tar *.jpg
  • 将所有 .gif 的文件增加到 all.tar 的包里面去。-r 是表示增加文件的意思
代码语言:javascript复制
 tar -rf all.tar *.gif 
  • 更新原来 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思
代码语言:javascript复制
tar -uf all.tar logo.gif
  • 列出 all.tar 包中所有文件,-t 是列出文件的意思
代码语言:javascript复制
tar -tf all.tar
  • 解出 all.tar 包中所有文件,-x 是解开的意思
代码语言:javascript复制
tar -xf all.tar

压缩实例:

  • 将目录里所有jpg文件打包成 tar.jpg
代码语言:javascript复制
tar –cvf jpg.tar *.jpg
  • 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz
代码语言:javascript复制
tar –czf jpg.tar.gz *.jpg
  • 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2
代码语言:javascript复制
tar –cjf jpg.tar.bz2 *.jpg
  • 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为jpg.tar.Z
代码语言:javascript复制
tar –cZf jpg.tar.Z *.jpg

解压实例:

代码语言:javascript复制
tar –xvf file.tar         // 解压 tar 包 
tar -xzvf file.tar.gz     // 解压 tar.gz 
tar -xjvf file.tar.bz2    // 解压 tar.bz2 
tar –xZvf file.tar.Z      // 解压 tar.Z 
unrar e file.rar          // 解压 rar 
unzip file.zip            // 解压 zip
4.2 unzip

功能:用于.zip格式文件的解压缩工具 ,unzip命令将列出、测试或从zip格式存档中提取文件,这些文件通常位于MS-DOS系统上。

语法:

代码语言:javascript复制
unzip [参数] [文件]

参数:

代码语言:javascript复制
-l	显示压缩文件内所包含的文件
-v	执行时显示详细的信息
-c	将解压缩的结果显示到屏幕上,并对字符做适当的转换
-n	解压缩时不要覆盖原有的文件
-j	不处理压缩文件中原有的目录路径

实例:

  • 把/home目录下面的mydata.zip解压到mydatabak目录里面
代码语言:javascript复制
unzip mydata.zip -d mydatabak
  • 把/home目录下面的wwwroot.zip直接解压到/home目录里面
代码语言:javascript复制
unzip wwwroot.zip
  • 把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面
代码语言:javascript复制
 unzip abc*.zip
  • 查看把/home目录下面的wwwroot.zip里面的内容
代码语言:javascript复制
unzip -v wwwroot.zip
  • 验证/home目录下面的wwwroot.zip是否完整
代码语言:javascript复制
unzip -t wwwroot.zip
4.3 gzip

功能:压缩和解压文件

gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

语法:

代码语言:javascript复制
gzip [参数]

参数:

代码语言:javascript复制
-a	使用ASCII文字模式
-d	解开压缩文件
-f	强行压缩文件
-l	列出压缩文件的相关信息
-c	把压缩后的文件输出到标准输出设备,不去更动原始文件
-r	递归处理,将指定目录下的所有文件及子目录一并处理
-q	不显示警告信息

实例:

  • 把当前目录下的每个文件压缩成.gz文件
代码语言:javascript复制
gzip *
  • 上例中每个压缩的文件解压,并列出详细的信息
代码语言:javascript复制
gzip -dv *
4.4 zip

功能:压缩工具

zip程序将一个或多个压缩文件与有关文件的信息(名称、路径、日期、上次修改的时间、保护和检查信息以验证文件完整性)一起放入一个压缩存档中。可以使用一个命令将整个目录结构打包到zip存档中。

对于文本文件来说,压缩比为2:1和3:1是常见的。zip只有一种压缩方法(通缩),并且可以在不压缩的情况下存储文件。(如果添加了bzip 2支持,zip也可以使用bzip 2压缩,但这些条目需要一个合理的现代解压缩来解压缩。当选择bzip 2压缩时,它将通货紧缩替换为默认方法。)zip会自动为每个要压缩的文件选择更好的两个文件(通缩或存储,如果选择bzip2,则选择bzip2或Store)。

语法:

代码语言:javascript复制
zip [参数] [文件]

参数:

代码语言:javascript复制
-q	不显示指令执行过程
-r	递归处理,将指定目录下的所有文件和子目录一并处理
-z	替压缩文件加上注释
-v	显示指令执行过程或显示版本信息
-n<字尾字符串>	不压缩具有特定字尾字符串的文件

实例:

  • 将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip
代码语言:javascript复制
zip -q -r html.zip /home/html
  • 压缩文件 cp.zip 中删除文件 a.c
代码语言:javascript复制
zip -dv cp.zip a.c
  • 把/home目录下面的mydata目录压缩为mydata.zip
代码语言:javascript复制
zip -r mydata.zip mydata
  • 把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip
代码语言:javascript复制
zip -r abc123.zip abc 123.txt
  • 将 logs目录打包成 log.zip
代码语言:javascript复制
zip -r log.zip ./logs

五、信息显示命令

5.1 uname

功能:用于显示系统相关信息,比如主机名、内核版本号、硬件架构等。 如果未指定任何选项,其效果相当于执行”uname -s”命令,即显示系统内核的名字。

语法:

代码语言:javascript复制
uname [参数]

参数:

代码语言:javascript复制
-a	显示系统所有相关信息
-m	显示计算机硬件架构
-n	显示主机名称
-r	显示内核发行版本号
-s	显示内核名称
-v	显示内核版本
-p	显示主机处理器类型
-o	显示操作系统名称
-i	显示硬件平台

实例:

  • 显示系统主机名、内核版本号、CPU类型等信息
代码语言:javascript复制
uname -a
  • 仅显示系统主机名
代码语言:javascript复制
uname -n
  • 显示当前系统的内核版本
代码语言:javascript复制
uname -r
5.2 hostname

功能:显示和设置系统的主机名

在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改/etc/hosts和/etc/sysconfig/network的相关内容

语法:

代码语言:javascript复制
hostname [参数]

参数:

代码语言:javascript复制
-a	显示主机别名
-d	显示DNS域名
-f	显示FQDN名称
-i	显示主机的ip地址
-s	显示短主机名称,在第一个点处截断
-y	显示NIS域名

实例:

  • 使用-a参数显示主机别名
代码语言:javascript复制
hostname -a
  • 使用-i参数显示主机的ip地址
代码语言:javascript复制
hostname -i
5.3 dmesg

功能:显示开机信息,用于诊断系统故障

语法:

代码语言:javascript复制
dmesg [参数]

参数:

代码语言:javascript复制
-c	显示信息后,清除ring buffer中的内容
-s <缓冲区大小>	预设置为8196,刚好等于ring buffer的大小
-n	设置记录信息的层级

实例:

  • 搜索开机信息的关键词
代码语言:javascript复制
dmesg | grep sda
  • 忽略大小写搜索关键词
代码语言:javascript复制
dmesg | grep -i memory
  • 显示开机信息的前20行
代码语言:javascript复制
dmesg | head -20
  • 显示开机信息的最后20行
代码语言:javascript复制
dmesg | tail -20
  • 清空dmesg环形缓冲区中的日志
代码语言:javascript复制
dmesg -c
5.4 uptime

功能:获取主机运行时间和查询Linux系统负载等信息

uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

语法:

代码语言:javascript复制
uptime [参数]

参数:

代码语言:javascript复制
-p	以漂亮的格式显示机器正常运行的时间
-s	系统自开始运行时间,格式为yyyy-mm-dd hh:mm:ss
-h	显示帮助信息

实例:

  • 显示当前系统运行负载情况
代码语言:javascript复制
uptime
  • 使用-p参数显示机器正常运行的时间
代码语言:javascript复制
uptime -p
  • 使用-s参数显示机器启动时间
代码语言:javascript复制
uptime -s
5.5 stat

功能:显示文件或文件系统的详细信息

语法:

代码语言:javascript复制
stat [参数]

参数:

代码语言:javascript复制
-L	支持符号链接
-f	显示文件系统的信息
-t	以简洁的方式输出
--help	显示命令帮助信息
--version	显示命令版本信息

实例:

  • 查看该文件或目录的状态Access,Modify,Change
代码语言:javascript复制
stat myfile
  • 查看文件系统信息
代码语言:javascript复制
stat -f myfile
5.6 du

功能:查看磁盘占用空间,与df不同,不是分区

语法:

代码语言:javascript复制
du [参数] [文件]

参数:

代码语言:javascript复制
-a	显示目录中所有文件大小
-k	以KB为单位显示文件大小
-m	以MB为单位显示文件大小
-g	以GB为单位显示文件大小
-h	以易读方式显示文件大小
-s	仅显示总计
5.7 df

功能:报告文件系统磁盘空间的使用情况

语法:

代码语言:javascript复制
df [参数] [指定文件]

参数:

代码语言:javascript复制
-a	显示所有系统文件
-B <块大小>	指定显示时的块大小
-h	以容易阅读的方式显示
-H	以1000字节为换算单位来显示
-i	显示索引字节信息
-k	指定块大小为1KB
-l	只显示本地文件系统
-t <文件系统类型>	只显示指定类型的文件系统
-T	输出时显示文件系统类型
-- -sync	在取得磁盘使用信息前,先执行sync命令

实例:

  • 显示磁盘分区使用情况
代码语言:javascript复制
[root@ecs-d2e4 ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/xvda2      37024320 12876632  22260304  37% /
devtmpfs         1919268        0   1919268   0% /dev
tmpfs            1723972        0   1723972   0% /dev/shm
tmpfs            1723972   188820   1535152  11% /run
tmpfs            1723972        0   1723972   0% /sys/fs/cgroup
tmpfs             334148        0    334148   0% /run/user/0

[root@ecs-d2e4 ~]

#

  • 以容易阅读的方式显示磁盘分区使用情况
代码语言:javascript复制
[root@ecs-d2e4 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda2       36G   13G   22G  37% /
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           1.7G  185M  1.5G  11% /run
tmpfs           1.7G     0  1.7G   0% /sys/fs/cgroup
tmpfs           327M     0  327M   0% /run/user/0

[root@ecs-d2e4 ~]

#

  • 显示文件类型为ext3的磁盘使用情况
代码语言:javascript复制
[root@ecs-d2e4 ~]# df -t ext3
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/xvda2      37024320 12876660  22260276  37% /
  • 显示指定文件所在分区的磁盘使用情况
代码语言:javascript复制
[root@ecs-d2e4 ~]# df /etc/dhcp
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/xvda2      37024320 12876660  22260276  37% /

[root@ecs-d2e4 ~]

#

5.8 top

功能:实时显示系统资源使用情况

语法:

代码语言:javascript复制
top [参数]

参数:

代码语言:javascript复制
-d	改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
-q	没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
-c 	切换显示模式
-s	安全模式,将交谈式指令取消, 避免潜在的危机
-i	不显示任何闲置 (idle) 或无用 (zombie) 的行程
-n	更新的次数,完成后将会退出 top
-b	批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内

实例:

  • 显示完整的进程信息
代码语言:javascript复制
[root@ecs-d2e4 ~]# top -c
top - 22:14:19 up 80 days,  6:01,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 119 total,   1 running, 118 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3341448 total,   921024 free,   584604 used,  1835820 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  2226764 avail Mem 
  • 以批处理模式显示程序信息
代码语言:javascript复制
[root@ecs-d2e4 ~]# top -b
top - 22:16:23 up 80 days,  6:03,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 119 total,   1 running, 118 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.3 us,  0.1 sy,  0.0 ni, 98.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3341448 total,   921580 free,   583984 used,  1835884 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  2227360 avail Mem 
  • 以累积模式显示程序信息
代码语言:javascript复制
[root@ecs-d2e4 ~]# top -s
top - 22:19:46 up 80 days,  6:06,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 119 total,   1 running, 118 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.8 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3341448 total,   921244 free,   584292 used,  1835912 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  2227004 avail Mem 
  • 设置信息更新次数
代码语言:javascript复制
[root@ecs-d2e4 ~]# top -n 2
top - 22:20:46 up 80 days,  6:07,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 121 total,   1 running, 120 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.3 us,  0.1 sy,  0.0 ni, 98.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3341448 total,   919160 free,   586324 used,  1835964 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  2224968 avail Mem 
5.9 free

功能:显示系统内存情况

语法:

代码语言:javascript复制
free [参数]

参数:

代码语言:javascript复制
-b	以Byte显示内存使用情况
-k	以kb为单位显示内存使用情况
-m	以mb为单位显示内存使用情况
-g	以gb为单位显示内存使用情况
-s	持续显示内存
-t	显示内存使用总合

实例:

  • 以总和的形式显示内存的使用信息
代码语言:javascript复制
[root@ecs-d2e4 ~]# free -t
              total        used        free      shared  buff/cache   available
Mem:        3341448      583832      921472      205696     1836144     2227400
Swap:       4194300           0     4194300
Total:      7535748      583832     5115772
  • 周期性查询内存使用情况
代码语言:javascript复制
[root@ecs-d2e4 ~]# free -s 10
              total        used        free      shared  buff/cache   available
Mem:        3341448      583232      922064      205696     1836152     2228000
Swap:       4194300           0     4194300

              total        used        free      shared  buff/cache   available
Mem:        3341448      583976      921320      205696     1836152     2227256
Swap:       4194300           0     4194300

              total        used        free      shared  buff/cache   available
Mem:        3341448      584100      921196      205696     1836152     2227132
Swap:       4194300           0     4194300
……
5.10 date

功能:显示日期与时间

语法:

代码语言:javascript复制
date [选项] [ 输出形式]

参数:

代码语言:javascript复制
-d datestr	显示 datestr 中所设定的时间 (非系统时间)
-s datestr	将系统时间设为 datestr 中所设定的时间
-u	显示目前的格林威治时间
--help	显示帮助信息
--version	显示版本编号

实例:

  • 显示当前时间
代码语言:javascript复制
[root@ecs-d2e4 ~]# date
Sun Jan 26 22:33:55 CST 2020

[root@ecs-d2e4 ~]

# date ' %c' Sun 26 Jan 2020 10:34:21 PM CST

[root@ecs-d2e4 ~]

#

  • 显示时间后跳行,再显示目前日期
代码语言:javascript复制
[root@ecs-d2e4 ~]# date ' %T%n%D'
22:36:53
01/26/20
  • 显示月份与日数
代码语言:javascript复制
[root@ecs-d2e4 ~]# date ' %B %d' 
January 26
  • 显示日期与设定时间(12:34:56)
代码语言:javascript复制
[root@ecs-d2e4 ~]# date --date '12:34:56'
Sun Jan 26 12:34:56 CST 2020
5.11 cal

功能:显示日历

语法:

代码语言:javascript复制
cal [参数] [月份] [年份]

参数:

代码语言:javascript复制
-l	单月分输出日历
-3	显示最近三个月的日历
-s	将星期天作为月的第一天
-m	将星期一作为月的第一天
-j	显示在当年中的第几天(儒略日)
-y	显示当年的日历

实例:

  • 显示当前月份的日历
代码语言:javascript复制
[root@ecs-d2e4 ~]# cal
    January 2020    
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
  • 显示近期三个月的日历(当前月,上一个月和下一个月)
代码语言:javascript复制
[root@ecs-d2e4 ~]# cal -3
    December 2019         January 2020          February 2020   
Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa  Su Mo Tu We Th Fr Sa
 1  2  3  4  5  6  7            1  2  3  4                     1
 8  9 10 11 12 13 14   5  6  7  8  9 10 11   2  3  4  5  6  7  8
15 16 17 18 19 20 21  12 13 14 15 16 17 18   9 10 11 12 13 14 15
22 23 24 25 26 27 28  19 20 21 22 23 24 25  16 17 18 19 20 21 22
29 30 31              26 27 28 29 30 31     23 24 25 26 27 28 29
  • 显示指定年月的日历,如显示2020年2月的日历
代码语言:javascript复制
[root@ecs-d2e4 ~]# cal 2 2020
    February 2020   
Su Mo Tu We Th Fr Sa
                   1
 2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29

六、搜索文件命令

6.1 which

功能:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果

实例:

代码语言:javascript复制
[root@lvs ~]# which nginx
/usr/sbin/nginx

[root@lvs ~]

#

6.2 find

功能:从磁盘遍历查找文件或目录。

find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

语法:

代码语言:javascript复制
find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} ;

参数:

代码语言:javascript复制
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。

实例:

  • 按文件名查找:
代码语言:javascript复制
root@192 ~]# find /etc /usr /home -name "ifcfg-en*"
/etc/sysconfig/network-scripts/ifcfg-ens33

[root@192 ~]

#

  • 找大于5M的,找到后并列出来
代码语言:javascript复制
[root@LVS ~]# find /etc -size  5M -ls
101709377 7120 -r--r--r--   1 root     root      7289802 7月  5  2017 /etc/udev/hwdb.bin

找修改时间小于5天的文件

代码语言:javascript复制
[root@LVS ~]# find /etc -mtime -5
/etc
/etc/resolv.conf
/etc/sysconfig
6.3 whereis

功能:查找二进制命令,按环境变量 PATH路径查找。

该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。

该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。

语法:

代码语言:javascript复制
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

参数:

代码语言:javascript复制
-b  只查找二进制文件。
-B<目录>  只在设置的目录下查找二进制文件。
-f  不显示文件名前的路径名称。
-m  只查找说明文件。
-M<目录>  只在设置的目录下查找说明文件。
-s  只查找原始代码文件。
-S<目录>  只在设置的目录下查找原始代码文件。
-u  查找不包含指定类型的文件。

实例:

  • 查看指令"bash"的位置
代码语言:javascript复制
[root@LVS ~]# whereis bash
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz

[root@LVS ~]

#

  • 只查二进制文件
代码语言:javascript复制
[root@LVS ~]# whereis -b bash 
bash: /usr/bin/bash

[root@LVS ~]

#

6.4 locate

功能:从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用 updatedb 更新库。

语法:

代码语言:javascript复制
locate [-d ][--help][--version][范本样式...]

实例:

代码语言:javascript复制
[root@LVS ~]# locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd

七、用户管理命令

7.1 useradd

功能:用于建立用户帐号

语法:

代码语言:javascript复制
useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号]

代码语言:javascript复制
useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>]

参数:

代码语言:javascript复制
-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
-d<登入目录>  指定用户登入时的起始目录。
-D  变更预设值.
-e<有效期限>  指定帐号的有效期限。
-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
-g<群组>  指定用户所属的群组。
-G<群组>  指定用户所属的附加群组。
-m  自动建立用户的登入目录。
-M  不要自动建立用户的登入目录。
-n  取消建立以用户名称为名的群组.
-r  建立系统帐号。
-s<shell>   指定用户登入后所使用的shell。
-u<uid>  指定用户ID。

实例:

  • 添加的用户指定相应的用户组
代码语言:javascript复制
[root@LVS ~]# useradd -g root rossum

[root@LVS ~]

# id rossum uid=1002(rossum) gid=0(root) 组=0(root)

  • 添加用户,指定shell,指定用户组,指定用户id
代码语言:javascript复制
[root@LVS ~]# useradd rossuma -s /sbin/nologin -g root -u 1008

[root@LVS ~]

# id 1008 uid=1008(rossuma) gid=0(root) 组=0(root)

[root@LVS ~]

# tail -1 /etc/passwd rossuma:x:1008:0::/home/rossuma:/sbin/nologin

  • 建立用户指定目录等信息
代码语言:javascript复制
[root@LVS ~]# useradd -d /home/mytest -g root rossumc

[root@LVS ~]

# su rossumc

[rossumc@LVS root]

$ cd ~

[rossumc@LVS ~]

$ pwd /home/mytest

7.2 usermod

功能:修改系统已经存在的用户属性。

语法:

代码语言:javascript复制
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]

参数:

代码语言:javascript复制
-c<备注>  修改用户帐号的备注文字。
-d登入目录>  修改用户登入时的目录。
-e<有效期限>  修改帐号的有效期限。
-f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
-g<群组>  修改用户所属的群组。
-G<群组>  修改用户所属的附加群组。
-l<帐号名称>  修改用户帐号名称。
-L  锁定用户密码,使密码无效。
-s<shell>  修改用户登入后所使用的shell。
-u<uid>  修改用户ID。
-U  解除密码锁定。

实例:

  • 锁定用户并查看,前面有!表示锁定
代码语言:javascript复制
[root@LVS ~]# usermod -L rossumc

[root@LVS ~]

# grep rossumc /etc/shadow rossumc:!$6$L8f/R75W$cnjhzGGvxdNM/QCB2ZeSTRvGCi0giV7j3TC7GRSOpJowN1oP3eNhQygZrZOfMLiZif1mVNvWViTDuUCthrpsh/:18366:0:99999:7:::

[root@LVS ~]

#

也可以这样查看用户的锁定状态

代码语言:javascript复制
[root@LVS ~]# passwd --status rossumc
rossumc LK 2020-04-14 0 99999 7 -1 (密码已被锁定。)

[root@LVS ~]

#

  • 解除以上用户的状态
代码语言:javascript复制
[root@LVS ~]# usermod -U rossumc

[root@LVS ~]

# tail -1 /etc/shadow rossumc:$6$L8f/R75W$cnjhzGGvxdNM/QCB2ZeSTRvGCi0giV7j3TC7GRSOpJowN1oP3eNhQygZrZOfMLiZif1mVNvWViTDuUCthrpsh/:18366:0:99999:7:::

[root@LVS ~]

#

  • 设置用户过期时间
代码语言:javascript复制
[root@LVS ~]# usermod -e "2020-04-10" rossumc
  • 修改用户属性
代码语言:javascript复制
[root@LVS ~]# groupadd hr

[root@LVS ~]

# usermod -G hr rossumc

[root@LVS ~]

# id rossumc uid=1009(rossumc) gid=0(root) 组=0(root),1002(hr)

[root@LVS ~]

#

7.3 userdel

功能:删除用户。可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。

语法:

代码语言:javascript复制
userdel [-r][用户帐号]

实例:

代码语言:javascript复制
[root@LVS ~]# userdel -r rossumc
userdel: user rossumc is currently used by process 11385
这里前面登录过,所以两次退出后自动删除

[root@LVS ~]

# exit exit

[rossumc@LVS ~]

$ exit exit

[root@LVS ~]

# userdel -r rossumc userdel:用户“rossumc”不存在

7.4 groupadd

功能:添加用户组。

groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

相关文件:

/etc/group 组账户信息。 /etc/gshadow 安全组账户信息。 /etc/login.defs Shadow密码套件配置。

语法:

代码语言:javascript复制
groupadd [-g gid [-o]] [-r] [-f] group

参数:

代码语言:javascript复制
-g:指定新建工作组的 id;
-r:创建系统工作组,系统工作组的组ID小于 1000;
-K:覆盖配置文件 "/ect/login.defs";
-o:允许添加组 ID 号不唯一的工作组。
-f,--force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一个唯一的GID(即-g关闭)。

实例:

  • 添加net01组,并指定gid为2000
代码语言:javascript复制
[root@LVS ~]# groupadd net01 -g 2000

[root@LVS ~]

# grep 'net01' /etc/group net01:x:2000:

[root@LVS ~]

#

7.5 passwd

功能: 修改用户密码。

语法:

代码语言:javascript复制
passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]

参数:

代码语言:javascript复制
-d 删除密码
-f 强制执行
-k 更新只能发送在过期之后
-l 停止账号使用
-S 显示密码信息
-u 启用已被停止的账户
-x 设置密码的有效期
-g 修改群组密码
-i 过期后停止用户账号

实例:

  • 修改rossuma的密码
代码语言:javascript复制
[root@LVS ~]# passwd rossuma
更改用户 rossuma 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
  • 查看账户密码信息
代码语言:javascript复制
[root@LVS ~]# passwd -S rossuma
rossuma PS 2020-04-15 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
  • 清除用户密码
代码语言:javascript复制
[root@LVS ~]# passwd -d rossuma
清除用户的密码 rossuma。
passwd: 操作成功
7.6 chage

功能:修改用户密码有效期限。

语法:

代码语言:javascript复制
chage [options] user

参数:

代码语言:javascript复制
  -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
  -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
  -h, --help                    显示此帮助信息并推出
  -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
  -l, --list                    显示帐户年龄信息
  -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
  -M, --maxdays 最大天数        将两次改变密码之间相距的最大天数设为“最大天数”
  -R, --root CHROOT_DIR         chroot 到的目录
  -W, --warndays 警告天数       将过期警告天数设为“警告天数”

实例:

  • 查看mysql账户的密码及有效期
代码语言:javascript复制
[root@LVS ~]# chage -l mysql
最近一次密码修改时间					:3月 29, 2020
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:-1
两次改变密码之间相距的最大天数		:-1
在密码过期之前警告的天数	:-1

[root@LVS ~]

#

代码语言:javascript复制
[root@LVS ~]# LANG='en_us'

[root@LVS ~]

# chage -l mysql Last password change : Mar 29, 2020 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : -1 Maximum number of days between password change : -1 Number of days of warning before password expires : -1

[root@LVS ~]

#

  • 设置mysql用户60天后密码过期,至少7天后才能修改密码,密码过期前7天开始收到告警信息。
代码语言:javascript复制
[root@LVS ~]# chage -M 60 -m 7 -W 7 mysql

[root@LVS ~]

# chage -l mysql Last password change : Mar 29, 2020 Password expires : May 28, 2020 Password inactive : never Account expires : never Minimum number of days between password change : 7 Maximum number of days between password change : 60 Number of days of warning before password expires : 7

[root@LVS ~]

#

  • 强制新建用户第一次登陆时修改密码
代码语言:javascript复制
[root@LVS ~]# chage -d 0 rossuma

[root@LVS ~]

# chage -l rossuma Last password change : password must be changed Password expires : password must be changed Password inactive : password must be changed Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7

[root@LVS ~]

#

7.7 id

功能:查看用户的 uid,gid 及归属的用户组。

id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。

语法:

代码语言:javascript复制
id [-gGnru][--help][--version][用户名称]

参数:

代码语言:javascript复制
-g或--group  显示用户所属群组的ID。
-G或--groups  显示用户所属附加群组的ID。
-n或--name  显示用户,所属群组或附加群组的名称。
-r或--real  显示实际ID。
-u或--user  显示用户ID。

实例:

  • 显示当前用户和其他用户
代码语言:javascript复制
[root@LVS ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[root@LVS ~]

# id rossuma uid=1008(rossuma) gid=0(root) groups=0(root)

[root@LVS ~]

#

  • 显示所有群组信息
代码语言:javascript复制
[root@LVS ~]# usermod -G hr rossuma

[root@LVS ~]

# id -G rossuma 0 1002

[root@LVS ~]

#

7.8 su

功能:用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

语法:

代码语言:javascript复制
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]

参数:

代码语言:javascript复制
-f 或 --fast 不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh
-m -p 或 --preserve-environment 执行 su 时不改变环境变数
-c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
-s shell 或 --shell=shell 指定要执行的 shell (bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell
--help 显示说明文件
--version 显示版本资讯
- -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数

实例:

  • 变更帐号为 root 并在执行 ls 指令后退出变回原使用者
代码语言:javascript复制
[rossuma@LVS ~]# su -c ls root
  • 切换用户改变环境变量,不加-不改变环境变量
代码语言:javascript复制
[toma@LVS ~]$ whoami
toma

[toma@LVS ~]

$ su - root Password: Last login: Wed Apr 15 09:12:37 CST 2020 on pts/2

[root@LVS ~]

# whoami root

[root@LVS ~]

# pwd /root

[root@LVS ~]

#

  • 切换用户,不改变环境变量
代码语言:javascript复制
[toma@LVS ~]$ whoami
toma

[toma@LVS ~]

$ pwd /home/toma

[toma@LVS ~]

$ su root 密码:

[root@LVS toma]

# whoami root

[root@LVS toma]

# pwd /home/toma

[root@LVS toma]

#

7.9 sudo

功能: 以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。sudo 支持插件架构的安全策略,并能把输入输出写入日志。第三方可以开发并发布自己的安全策略和输入输出日志插件,并让它们无缝的和 sudo 一起工作。默认的安全策略记录在 /etc/sudoers 文件中。而安全策略可能需要用户通过密码来验证他们自己。也就是在用户执行 sudo 命令时要求用户输入自己账号的密码。如果验证失败,sudo 命令将会退出。

语法:

代码语言:javascript复制
sudo [-bhHpV][-s ][-u <用户>][指令]

参数:

代码语言:javascript复制
  -b  在后台执行指令。
  -h  显示帮助。
  -H  将HOME环境变量设为新身份的HOME环境变量。
  -k  结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。
  -l  列出目前用户可执行与无法执行的指令。
  -p  改变询问密码的提示符号。
  -s  执行指定的shell。
  -u  <用户>  以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。
  -v  延长密码有效期限5分钟。
  -V  显示版本信息。
  -S  从标准输入流替代终端来获取密码

实例:

  • 加入轮子组并添加用户
代码语言:javascript复制
[root@LVS ~]# su tomb

[tomb@LVS root]

$ id uid=1010(tomb) gid=1010(tomb) groups=1010(tomb),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[tomb@LVS root]

$ useradd tomc bash: /usr/sbin/useradd: Permission denied

[tomb@LVS root]

$ sudo useradd tomc

[sudo]

password for tomb:

[tomb@LVS root]

$ id tomc uid=1011(tomc) gid=1011(tomc) groups=1011(tomc)

八、基础网络操作命令

8.1 scp

功能:scp 全拼 secure copy,用于不同主机之间复制文件。

语法:

代码语言:javascript复制
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2

简易写法

代码语言:javascript复制
scp [可选参数] file_source file_target 

参数:

代码语言:javascript复制
-1: 强制scp命令使用协议ssh1
-2: 强制scp命令使用协议ssh2
-4: 强制scp命令只使用IPv4寻址
-6: 强制scp命令只使用IPv6寻址
-B: 使用批处理模式(传输过程中不询问传输口令或短语)
-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q: 不显示传输进度条。
-r: 递归复制整个目录。
-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

实例:

  • 从本地复制文件到远程服务器
代码语言:javascript复制
scp local_file remote_username@remote_ip:remote_folder 
或者 
scp local_file remote_username@remote_ip:remote_file 
或者 
scp local_file remote_ip:remote_folder 
或者 
scp local_file remote_ip:remote_file 
代码语言:javascript复制
[root@LVS ~]# scp score.sql 192.168.100.106:/home/toma
root@192.168.100.106's password: 
score.sql                                         100% 1936     1.9KB/s   00:00    
代码语言:javascript复制
[root@LVS ~]# scp student1.txt root@192.168.100.106:/home/toma/
root@192.168.100.106's password: 
student1.txt                                      100%  198     0.2KB/s   00:00    

[root@LVS ~]

#

  • 从本地复制目录到远程服务器
代码语言:javascript复制
[root@LVS ~]# mkdir -p  /mydira/mydir{1..5}

[root@LVS ~]

# tree /mydira /mydira ├── mydir1 ├── mydir2 ├── mydir3 ├── mydir4 └── mydir5 5 directories, 0 files

[root@LVS ~]

#

[root@LVS ~]

# scp -r /mydira root@192.168.100.106:/home/toma root@192.168.100.106's password:

[root@LVS ~]

#

0 人点赞