一、查询及帮助命令
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 结尾的文件,文件名区分大小写
find /etc -name '*.conf'
- 查找当前目录下所有文件名为 aa 的文件,文件名不区分大小写
[root@node02 ~]# find . -iname aa./aa./AA[root@node02 ~]#
- 查找文件所属用户为moonrong的所有文件
[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的所有文件
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 字节的文件
find /etc -size 10000c
- 查找 /etc 目录下,大于 1M 的文件
find /etc -size -1M
-mtime
代码语言:javascript复制 -n n 天以内修改的文件。 n n 天以外修改的文件。n 正好 n天 修改的文件
- 查询 /etc 目录下,5天以内修改 且以 conf 结尾的文件
find /etc -mtime -5 -name '*.conf'
查询 /etc 目录下,10天之前修改,且属于moonrong 的文件
代码语言:javascript复制 find /etc -mtime 10 -user moonrong
-mmin
代码语言:javascript复制 -n n 分钟以内修改过的文件 n n 分钟之前修改过的文件
- 查询 /etc 目录下 30分钟 之前修改过的文件
find /etc -mmin 30
- 查询 /etc 目录下 30分钟 之前修改过的目录
find /etc -mmin -30 -type d
-mindepth n 从第 n 级目录开始搜索
- 从 /etc 的第三级子目录开始搜索
find /etc -mindepth 3
-maxdepth n 表示至多搜索到第 n-1 级子目录。
- 在 /etc 中搜索符合条件的文件,但最多搜索到 2级 子目录
find /etc -maxdepth 3 -name '*.conf'find /etc -type f -name '*.conf' -size 10k -maxdepthc 2
- 将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find . -ctime -20
- 查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
find /var/log -type f -mtime 7 -ok rm {} ;
- 查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} ;
- 服务器磁盘满,一般由大的日志文件导致,需找到大文件并删除
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
mv a.1b a.2b
- 将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs
mv info/ logs
- 将/usr/student下的所有文件和目录移到当前目录下
mv /usr/student/* .
2.6 pwd
功能:显示当前工作目录的绝对路径
2.7 rm
功能:删除一个或多个文件或目录
语法:
代码语言:javascript复制 rm [options] name...
参数:
代码语言:javascript复制 -i 删除前逐一询问确认。-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r 将目录及以下之档案亦逐一删除。
实例:
- 删除当前目录下的所有文件及目录
rm -r *
- 删除当前目录下的所有文件及目录,并且是直接删除,无需逐一确认命令行为
rm -rf 要删除的文件名或目录
- 删除文件名 test.txt
rm -rf test.txt
- 删除目录 test,不管该目录下是否有子目录或文件,都直接删除
rm -rf test/
2.8 rmdir
功能:删除空目录
语法:
代码语言:javascript复制rmdir [-p] dirName
参数:
代码语言:javascript复制-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除
实例:
- 将工作目录下,名为 AAA 的子目录删除
rmdir AAA
- 在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除
rmdir -p BBB/Test
2.9 mkdir
功能:创建目录
语法:
代码语言:javascript复制mkdir [-p] dirName
参数:
代码语言:javascript复制-p 确保目录名称存在,不存在的就建一个
实例:
- 在工作目录下,建立一个名为 AAA 的子目录
mkdir AAA
- 在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。 若 BBB 目录原本不存在,则建立一个
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"的时间属性为当前系统时间
touch testfile
- 创建一个名为“file”的新的空白文件
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 这个文档里:
cat -n textfile1 > textfile2
- 把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:
cat -b textfile1 textfile2 >> textfile3
- 清空 /etc/test.txt 文档内容:
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 文档内容,如有连续两行以上空白行则以一行空白行显示。
more -s testfile
- 从第 20 行开始显示 testfile 之文档内容。
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]
: 向上翻动一页
实例:
- 查看文件
cat vmware-vmusr.log
- ps查看进程信息并通过less分页显示
ps -ef |less
- 查看命令历史使用记录并通过less分页显示
history | less
3.5 head
功能:head命令以行为单位,取文件的内容,后面不接参数时默认打印前10行
语法:
代码语言:javascript复制head [参数] [文件]
参数:
代码语言:javascript复制-n 后面接数字,代表显示几行的意思
-c 指定显示头部内容的字符数
-v 总是显示文件名的头信息
-q 不显示文件名的头信息
实例:
- 显示前5行文件内容
head -n 5 file
- 显示文件名信息,并显示文件前两行
head -v -n 2 test.txt
- 显示文件前5个字符
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行
tail -f 10 file
- 显示文件file的最后10行
tail file
- 显示文件file的内容,从第20行至文件末尾
tail 20 file
- 显示文件file的最后10个字符
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 打印最长行的长度
实例:
- 统计字数
wc -w test.txt
- 统计字节数
wc -c test.txt
- 统计字符数
wc -m test.txt
- 统计行数
wc -l test.txt
- 打印最长行的长度
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结合使用,打印匹配的词据文件头部的偏移量,以字节为单位
实例:
- 支持多文件查询并支持使用通配符
grep zwx file_* /etc/hosts
待完善
3.10 tr
功能:将字符进行替换、压缩、删除
语法:
代码语言:javascript复制tr [参数] [字符串1] [字符串2]
参数:
代码语言:javascript复制-c 选定字符串1中字符集的补集,即反选字符串1的补集
-d 删除字符串1中出现的所有字符
-s 删除所有重复出现的字符序列,只保留一个
实例:
- 实现大小写字母的互换
tr "[a-z]" "[A-Z]" <file_1
- 删除file_1中的小写字母
tr -d "[a-z]" <file_1
- 压缩重复的空白行
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 指定包的文件名。
tar -cf all.tar *.jpg
- 将所有 .gif 的文件增加到 all.tar 的包里面去。-r 是表示增加文件的意思
tar -rf all.tar *.gif
- 更新原来 tar 包 all.tar 中 logo.gif 文件,-u 是表示更新文件的意思
tar -uf all.tar logo.gif
- 列出 all.tar 包中所有文件,-t 是列出文件的意思
tar -tf all.tar
- 解出 all.tar 包中所有文件,-x 是解开的意思
tar -xf all.tar
压缩实例:
- 将目录里所有jpg文件打包成 tar.jpg
tar –cvf jpg.tar *.jpg
- 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 gzip 压缩,生成一个 gzip 压缩过的包,命名为 jpg.tar.gz
tar –czf jpg.tar.gz *.jpg
- 将目录里所有jpg文件打包成 jpg.tar 后,并且将其用 bzip2 压缩,生成一个 bzip2 压缩过的包,命名为jpg.tar.bz2
tar –cjf jpg.tar.bz2 *.jpg
- 将目录里所有 jpg 文件打包成 jpg.tar 后,并且将其用 compress 压缩,生成一个 umcompress 压缩过的包,命名为jpg.tar.Z
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目录里面
unzip mydata.zip -d mydatabak
- 把/home目录下面的wwwroot.zip直接解压到/home目录里面
unzip wwwroot.zip
- 把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面
unzip abc*.zip
- 查看把/home目录下面的wwwroot.zip里面的内容
unzip -v wwwroot.zip
- 验证/home目录下面的wwwroot.zip是否完整
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文件
gzip *
- 上例中每个压缩的文件解压,并列出详细的信息
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
zip -q -r html.zip /home/html
- 压缩文件 cp.zip 中删除文件 a.c
zip -dv cp.zip a.c
- 把/home目录下面的mydata目录压缩为mydata.zip
zip -r mydata.zip mydata
- 把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip
zip -r abc123.zip abc 123.txt
- 将 logs目录打包成 log.zip
zip -r log.zip ./logs
五、信息显示命令
5.1 uname
功能:用于显示系统相关信息,比如主机名、内核版本号、硬件架构等。 如果未指定任何选项,其效果相当于执行”uname -s”命令,即显示系统内核的名字。
语法:
代码语言:javascript复制uname [参数]
参数:
代码语言:javascript复制-a 显示系统所有相关信息
-m 显示计算机硬件架构
-n 显示主机名称
-r 显示内核发行版本号
-s 显示内核名称
-v 显示内核版本
-p 显示主机处理器类型
-o 显示操作系统名称
-i 显示硬件平台
实例:
- 显示系统主机名、内核版本号、CPU类型等信息
uname -a
- 仅显示系统主机名
uname -n
- 显示当前系统的内核版本
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参数显示主机别名
hostname -a
- 使用-i参数显示主机的ip地址
hostname -i
5.3 dmesg
功能:显示开机信息,用于诊断系统故障
语法:
代码语言:javascript复制dmesg [参数]
参数:
代码语言:javascript复制-c 显示信息后,清除ring buffer中的内容
-s <缓冲区大小> 预设置为8196,刚好等于ring buffer的大小
-n 设置记录信息的层级
实例:
- 搜索开机信息的关键词
dmesg | grep sda
- 忽略大小写搜索关键词
dmesg | grep -i memory
- 显示开机信息的前20行
dmesg | head -20
- 显示开机信息的最后20行
dmesg | tail -20
- 清空dmesg环形缓冲区中的日志
dmesg -c
5.4 uptime
功能:获取主机运行时间和查询Linux系统负载等信息
uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
语法:
代码语言:javascript复制uptime [参数]
参数:
代码语言:javascript复制-p 以漂亮的格式显示机器正常运行的时间
-s 系统自开始运行时间,格式为yyyy-mm-dd hh:mm:ss
-h 显示帮助信息
实例:
- 显示当前系统运行负载情况
uptime
- 使用-p参数显示机器正常运行的时间
uptime -p
- 使用-s参数显示机器启动时间
uptime -s
5.5 stat
功能:显示文件或文件系统的详细信息
语法:
代码语言:javascript复制stat [参数]
参数:
代码语言:javascript复制-L 支持符号链接
-f 显示文件系统的信息
-t 以简洁的方式输出
--help 显示命令帮助信息
--version 显示命令版本信息
实例:
- 查看该文件或目录的状态Access,Modify,Change
stat myfile
- 查看文件系统信息
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命令
实例:
- 显示磁盘分区使用情况
[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 ~]
#
- 以容易阅读的方式显示磁盘分区使用情况
[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的磁盘使用情况
[root@ecs-d2e4 ~]# df -t ext3
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda2 37024320 12876660 22260276 37% /
- 显示指定文件所在分区的磁盘使用情况
[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 的结果输出到档案内
实例:
- 显示完整的进程信息
[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
- 以批处理模式显示程序信息
[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
- 以累积模式显示程序信息
[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
- 设置信息更新次数
[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 显示内存使用总合
实例:
- 以总和的形式显示内存的使用信息
[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
- 周期性查询内存使用情况
[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 显示版本编号
实例:
- 显示当前时间
[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 ~]
#
- 显示时间后跳行,再显示目前日期
[root@ecs-d2e4 ~]# date ' %T%n%D'
22:36:53
01/26/20
- 显示月份与日数
[root@ecs-d2e4 ~]# date ' %B %d'
January 26
- 显示日期与设定时间(12:34:56)
[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 显示当年的日历
实例:
- 显示当前月份的日历
[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
- 显示近期三个月的日历(当前月,上一个月和下一个月)
[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月的日历
[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 的文件。
实例:
- 按文件名查找:
root@192 ~]# find /etc /usr /home -name "ifcfg-en*"
/etc/sysconfig/network-scripts/ifcfg-ens33
[root@192 ~]
#
- 找大于5M的,找到后并列出来
[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"的位置
[root@LVS ~]# whereis bash
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz
[root@LVS ~]
#
- 只查二进制文件
[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。
实例:
- 添加的用户指定相应的用户组
[root@LVS ~]# useradd -g root rossum
[root@LVS ~]
# id rossum uid=1002(rossum) gid=0(root) 组=0(root)
- 添加用户,指定shell,指定用户组,指定用户id
[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
- 建立用户指定目录等信息
[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 解除密码锁定。
实例:
- 锁定用户并查看,前面有!表示锁定
[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 ~]
#
- 解除以上用户的状态
[root@LVS ~]# usermod -U rossumc
[root@LVS ~]
# tail -1 /etc/shadow rossumc:$6$L8f/R75W$cnjhzGGvxdNM/QCB2ZeSTRvGCi0giV7j3TC7GRSOpJowN1oP3eNhQygZrZOfMLiZif1mVNvWViTDuUCthrpsh/:18366:0:99999:7:::
[root@LVS ~]
#
- 设置用户过期时间
[root@LVS ~]# usermod -e "2020-04-10" rossumc
- 修改用户属性
[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
[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的密码
[root@LVS ~]# passwd rossuma
更改用户 rossuma 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
- 查看账户密码信息
[root@LVS ~]# passwd -S rossuma
rossuma PS 2020-04-15 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
- 清除用户密码
[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账户的密码及有效期
[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天开始收到告警信息。
[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 ~]
#
- 强制新建用户第一次登陆时修改密码
[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。
实例:
- 显示当前用户和其他用户
[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 ~]
#
- 显示所有群组信息
[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 指令后退出变回原使用者
[rossuma@LVS ~]# su -c ls root
- 切换用户改变环境变量,不加-不改变环境变量
[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 ~]
#
- 切换用户,不改变环境变量
[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 从标准输入流替代终端来获取密码
实例:
- 加入轮子组并添加用户
[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)的选项。
实例:
- 从本地复制文件到远程服务器
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 ~]
#
- 从本地复制目录到远程服务器
[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 ~]
#