前言
为什么要学习 Linux ?
目前企业有超过 80% 甚至更多的系统都是 Linux 操作系统,所以不管是做开发还是运维,不会点 Linux 知识肯定是无法进入到企业里工作。而且,很多企业的岗位职责里写要需要精通 Linux 。
Linux 的从业方向也比较广,主要分为 运维
和 开发
,细分下来就数不胜数了,基本都会涉及,因此学好 Linux 刻不容缓。
介绍
Linux
,全称 GNU/Linux,是一种免费使用和自由传播的类 UNIX 操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到 Minix 和 Unix 思想的启发,是一个基于 POSIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
- 它能运行主要的 Unix 工具软件、应用程序和网络协议。
- 它支持 32 位和 64 位硬件。
- Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
- Linux 有上百种不同的发行版,如基于社区开发的 debian、archlinux,和基于商业开发的 Red Hat Enterprise Linux、SUSE、Oracle Linux 等。
Linux 有以下特性:
- 基本思想
- 完全免费
- 完全兼容POSIX1.0标准
- 多用户、多任务
- 良好的界面
- 支持多种平台
- 完全开源
Linux操作系统的诞生、发展和成长过程始终依赖着五个重要支柱:Unix 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和 Internet 网络。
常用命令
文件管理
1️⃣ ls 命令 – 显示指定工作目录下的内容及属性信息
ls命令为英文单词 list 的缩写,正如英文单词 list 的意思,其功能是列出指定目录下的内容及其相关属性信息。
默认状态下,ls命令会列出当前目录的内容。而带上参数后,我们可以用ls做更多的事情。作为最基础同时又是使用频率很高的命令,我们很有必要搞清楚ls命令的用法,那么接下来一起看看吧!
语法:
语法格式: ls [选项] [文件]
常用参数:
参数 | 描述 |
---|---|
-a | 显示所有文件及目录 (包括以“.”开头的隐藏文件) |
-l | 使用长格式列出文件及目录信息 |
-r | 将文件以相反次序显示(默认依英文字母次序) |
-t | 根据最后的修改时间排序 |
-A | 同 -a ,但不列出 “.” (当前目录) 及 “…” (父目录) |
-S | 根据文件大小排序 |
-R | 递归列出所有子目录 |
参考实例:
列出所有文件(包括隐藏文件):
代码语言:javascript复制ls -a
列出文件的详细信息:
代码语言:javascript复制ls -l
列出根目录(/)下的所有目录:
代码语言:javascript复制ls /
列出当前工作目录下所有名称是 “s” 开头的文件(不包含文件夹哦~) :
代码语言:javascript复制ls -ltr s*
列出 /root 目录下的所有目录及文件的详细信息 :
代码语言:javascript复制ls -lR /root
列出当前工作目录下所有文件及目录并以文件的大小进行排序 :
代码语言:javascript复制ls -AS
2️⃣ cp 命令 – 复制文件或目录
cp命令可以理解为英文单词copy的缩写,其功能为复制文件或目录。
cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下,也可以同时复制多个文件到一个指定的目录中。
语法:
语法格式:cp [参数] [文件]
常用参数:
参数 | 描述 |
---|---|
-f | 若目标文件已存在,则会直接覆盖原文件 |
-i | 若目标文件已存在,则会询问是否覆盖 |
-p | 保留源文件或目录的所有属性 |
-r | 递归复制文件和目录 |
-d | 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录 |
-l | 对源文件建立硬连接,而非复制文件 |
-s | 对源文件建立符号连接,而非复制文件 |
-b | 覆盖已存在的文件目标前将目标文件备份 |
-v | 详细显示cp命令执行的操作过程 |
-a | 等价于“dpr”选项 |
参考实例:
复制目录:
代码语言:javascript复制cp -R dir1 dir2/
将文件test1改名为test2:
代码语言:javascript复制cp -f test1 test2
复制多个文件:
代码语言:javascript复制cp -r file1 file2 file3 dir
交互式地将目录 /home/lucifer 中的所有.c文件复制到目录 dir 中:
代码语言:javascript复制cp -r /home/lucifer/*.c dir
3️⃣ mkdir 命令 – 创建目录
mkdir命令是“make directories”的缩写,用来创建目录。
注意: 默认状态下,如果要创建的目录已经存在,则提示已存在,而不会继续创建目录。 所以在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 mkdir命令还可以同时创建多个目录,是不是很强大呢?
语法:
语法格式 : mkdir [参数] [目录]
常用参数:
参数 | 描述 |
---|---|
-p | 递归创建多级目录 |
-m | 建立目录的同时设置目录的权限 |
-z | 设置安全上下文 |
-v | 显示目录的创建过程 |
参考实例:
在工作目录下,建立一个名为 dir 的子目录:
代码语言:javascript复制mkdir dir
在目录/home/lucifer下建立子目录dir,并且设置文件属主有读、写和执行权限,其他人无权访问:
代码语言:javascript复制mkdir -m 700 /home/lucifer/dir
同时创建子目录dir1,dir2,dir3:
代码语言:javascript复制mkdir dir1 dir2 dir3
递归创建目录:
代码语言:javascript复制mkdir -p lucifer/dir
4️⃣ mv 命令 – 移动或改名文件
mv命令是“move”单词的缩写,其功能大致和英文含义一样,可以移动文件或对其改名。
这是一个使用频率超高的文件管理命令,我们需要特别留意它与复制的区别:mv与cp的结果不同。mv命令好像文件“搬家”,文件名称发生改变,但个数并未增加。而cp命令是对文件进行复制操作,文件个数是有增加的。
语法:
语法格式:mv [参数]
常用参数:
参数 | 描述 |
---|---|
-i | 若存在同名文件,则向用户询问是否覆盖 |
-f | 覆盖已有文件时,不进行任何提示 |
-b | 当文件存在时,覆盖前为其创建一个备份 |
-u | 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作 |
参考实例:
将文件file_1重命名为file_2:
代码语言:javascript复制mv file_1 file_2
将文件file移动到目录dir中 :
代码语言:javascript复制mv file /dir
将目录dir1移动目录dir2中(前提是目录dir2已存在,若不存在则改名):
代码语言:javascript复制mv /dir1 /dir2
将目录dir1下的文件移动到当前目录下:
代码语言:javascript复制mv /dir1/* .
5️⃣ pwd 命令 – 显示当前路径
pwd命令是“print working directory”中每个单词的首字母缩写,其功能正如所示单词一样,为打印工作目录,即显示当前工作目录的绝对路径。
在实际工作中,我们经常会在不同目录之间进行切换,为了防止“迷路”,我们可以使用pwd命令快速查看当前我们所在的目录路径。
语法:
语法格式: pwd [参数]
常用参数:
参数 | 描述 |
---|---|
-L | 显示逻辑路径 |
参考实例:
查看当前工作目录路径:
代码语言:javascript复制pwd
文档编辑
1️⃣ cat 命令 – 在终端设备上显示文件内容
cat这个命令也很好记,因为cat在英语中是“猫”的意思,小猫咪是不是给您一种娇小、可爱的感觉呢?
注意: 当文件内容较大时,文本内容会在屏幕上快速闪动(滚屏),用户往往看不清所显示的具体内容。
因此对于较长文件内容可以:
- 按Ctrl S键,停止滚屏;
- 按Ctrl Q键可以恢复滚屏;
- 按Ctrl C(中断)键则可以终止该命令的执行。
或者对于大文件,干脆用 more 命令吧!
语法:
语法格式:cat [参数] [文件]
常用参数:
参数 | 描述 |
---|---|
-n | 显示行数(空行也编号) |
-s | 显示行数(多个空行算一个编号) |
-b | 显示行数(空行不编号) |
-E | 每行结束处显示$符号 |
-T | 将TAB字符显示为 ^I符号 |
-v | 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外 |
-e | 等价于”-vE”组合 |
-t | 等价于”-vT”组合 |
-A | 等价于 -vET组合 |
–help | 显示帮助信息 |
–version | 显示版本信息 |
参考实例:
查看文件的内容:
代码语言:javascript复制cat lucifer.log
查看文件的内容,并显示行数编号:
代码语言:javascript复制cat -n lucifer.log
查看文件的内容,并添加行数编号后输出到另外一个文件中:
代码语言:javascript复制cat -n lucifer.log > lucifer.txt
清空文件的内容:
代码语言:javascript复制cat /dev/null > /root/lucifer.txt
持续写入文件内容,碰到EOF符后结束并保存:
代码语言:javascript复制cat > lucifer.txt <<EOF
Hello, World
Linux!
EOF
将软盘设备制作成镜像文件:
代码语言:javascript复制cat /dev/fb0 > fdisk.iso
2️⃣ echo 命令 – 输出字符串或提取Shell变量的值
echo命令用于在终端设备上输出字符串或变量提取后的值,这是在Linux系统中最常用的几个命令之一,但操作却非常简单。
人们一般使用在变量前加上符号的方式提取出变量的值,例如: PATH,然后再用echo命令予以输出。或者直接使用echo命令输出一段字符串到屏幕上,起到给用户提示的作用
语法:
语法格式:echo [参数] [字符串]
常用参数:
参数 | 描述 |
---|---|
-n | 不输出结尾的换行符 |
-e “a” | 发出警告音 |
-e “b” | 删除前面的一个字符 |
-e “c” | 结尾不加换行符 |
-e “f” | 换行,光标扔停留在原来的坐标位置 |
-e “n” | 换行,光标移至行首 |
-e “r” | 光标移至行首,但不换行 |
-E | 禁止反斜杠转移,与-e参数功能相反 |
—version | 查看版本信息 |
–help | 查看帮助信息 |
参考实例:
输出一段字符串:
代码语言:javascript复制echo "Hello Lucifer"
输出变量提取后的值:
代码语言:javascript复制echo $PATH
对内容进行转义,不让$符号的提取变量值功能生效:
代码语言:javascript复制echo $PATH
结合输出重定向符,将字符串信息导入文件中:
代码语言:javascript复制echo "It is a test" > lucifer
使用反引号符执行命令,并输出其结果到终端:
代码语言:javascript复制echo `date`
输出带有换行符的内容:
代码语言:javascript复制echo -e "anbnc"
输出信息中删除某个字符,注意看数字3消失了:
代码语言:javascript复制echo -e "123b456"
3️⃣ rm 命令 – 移除文件或目录
rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。
注意: rm也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。
所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。
语法:
语法格式:rm [参数] [文件]
常用参数:
参数 | 描述 |
---|---|
-f | 忽略不存在的文件,不会出现警告信息 |
-i | 删除前会询问用户是否操作 |
-r/R | 递归删除 |
-v | 显示指令的详细执行过程 |
参考实例:
删除前逐一询问确认:
代码语言:javascript复制rm -i test.txt.bz2
直接删除,不会有任何提示:
代码语言:javascript复制rm -f test.txt.bz2
递归删除目录及目录下所有文件:
代码语言:javascript复制mkdir /data/log
rm -rf /data/log
删除当前目录下所有文件:
代码语言:javascript复制rm -rf *
清空系统中所有的文件(谨慎):
代码语言:javascript复制rm -rf /*
4️⃣ tail 命令 – 查看文件尾部内容
tail用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
语法:
语法格式:tail [参数]
常用参数:
参数 | 描述 |
---|---|
–retry | 即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用 |
-c或—bytes= | 输出文件尾部的N(N为整数)个字节内容 |
-f | –follow:显示文件最新追加的内容 |
-F | 与选项“-follow=name”和“–retry”连用时功能相同 |
-n或—line= | 输出文件的尾部N(N位数字)行内容 |
–pid=<进程号> | 与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令 |
–help | 显示指令的帮助信息 |
–version | 显示指令的版本信息 |
参考实例:
显示文件file的最后10行:
代码语言:javascript复制tail file
显示文件file的内容,从第20行至文件末尾:
代码语言:javascript复制tail 20 file
显示文件file的最后10个字符:
代码语言:javascript复制tail -c 10 file
一直变化的文件总是显示后10行:
代码语言:javascript复制tail -f 10 file
显示帮助信息:
代码语言:javascript复制tail --help
5️⃣ rmdir 命令 – 删除空目录
rmdir命令作用是删除空的目录,英文全称:“remove directory”。
注意:rmdir命令只能删除空目录。当要删除非空目录时,就要使用带有“-R”选项的rm命令。
rmdir命令的“-p”参数可以递归删除指定的多级目录,但是要求每个目录也必须是空目录。
语法:
语法格式 : rmdir [参数] [目录名称]
常用参数:
参数 | 描述 |
---|---|
-p | 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错 |
–ignore-fail-on-non-empty | 忽略由于删除非空目录时导致命令出错而产生的错误信息 |
-v | 显示命令的详细执行过程 |
–help | 显示命令的帮助信息 |
–version | 显示命令的版本信息 |
参考实例:
删除空目录:
代码语言:javascript复制rmdir dir
递归删除指定的目录树:
代码语言:javascript复制rmdir -p dir/dir_1/dir_2
显示指令详细执行过程:
代码语言:javascript复制rmdir -v dir
显示命令的版本信息:
代码语言:javascript复制rmdir --version
系统管理
1️⃣ rpm 命令 – RPM软件包管理器
rpm命令是Red-Hat Package Manager(RPM软件包管理器)的缩写, 该命令用于管理Linux 下软件包的软件。在 Linux 操作系统下,几乎所有的软件均可以通过RPM 进行安装、卸载及管理等操作。
概括的说,rpm命令包含了五种基本功能:安装、卸载、升级、查询和验证。
语法:
语法格式:rpm [参数] [软件包]
常用参数:
参数 | 描述 |
---|---|
-a | 查询所有的软件包 |
-b或-t | 设置包装套件的完成阶段,并指定套件档的文件名称 |
-c | 只列出组态配置文件,本参数需配合”-l”参数使用 |
-d | 只列出文本文件,本参数需配合”-l”参数使用 |
-e或–erase | 卸载软件包 |
-f | 查询文件或命令属于哪个软件包 |
-h或–hash | 安装软件包时列出标记 |
-i | 显示软件包的相关信息 |
–install | 安装软件包 |
-l | 显示软件包的文件列表 |
-p | 查询指定的rpm软件包 |
-q | 查询软件包 |
-R | 显示软件包的依赖关系 |
-s | 显示文件状态,本参数需配合”-l”参数使用 |
-U或–upgrade | 升级软件包 |
-v | 显示命令执行过程 |
-vv | 详细显示指令执行过程 |
参考实例:
直接安装软件包:
代码语言:javascript复制rpm -ivh packge.rpm
忽略报错,强制安装:
代码语言:javascript复制rpm --force -ivh package.rpm
列出所有安装过的包:
代码语言:javascript复制rpm -qa
查询rpm包中的文件安装的位置:
代码语言:javascript复制rpm -ql ls
卸载rpm包:
代码语言:javascript复制rpm -e package.rpm
升级软件包:
代码语言:javascript复制rpm -U file.rpm
2️⃣ find 命令 – 查找和搜索文件
find命令可以根据给定的路径和表达式查找的文件或目录。find参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。
find如不加任何参数,表示查找当前路径下的所有文件和目录,如果服务器负载比较高尽量不要在高峰期使用find命令,find命令模糊搜索还是比较消耗系统资源的。
语法:
语法格式:find [参数] [路径] [查找和搜索范围]
常用参数:
参数 | 描述 |
---|---|
-name | 按名称查找 |
-size | 按大小查找 |
-user | 按属性查找 |
-type | 按类型查找 |
-iname | 忽略大小写 |
参考实例:
使用-name参数查看/etc目录下面所有的.conf结尾的配置文件:
代码语言:javascript复制find /etc -name "*.conf
使用-size参数查看/etc目录下面大于1M的文件:
代码语言:javascript复制find /etc -size 1M
查找当前用户主目录下的所有文件:
代码语言:javascript复制find $HOME -print
列出当前目录及子目录下所有文件和文件夹:
代码语言:javascript复制find .
在/home目录下查找以.txt结尾的文件名:
代码语言:javascript复制find /home -name "*.txt"
在/var/log目录下忽略大小写查找以.log结尾的文件名:
代码语言:javascript复制find /var/log -iname "*.log"
搜索超过七天内被访问过的所有文件:
代码语言:javascript复制find . -type f -atime 7
搜索访问时间超过10分钟的所有文件:
代码语言:javascript复制find . -type f -amin 10
找出/home下不是以.txt结尾的文件:
代码语言:javascript复制find /home ! -name "*.txt"
3️⃣ startx 命令 – 初始化X-windows
startx命令用来启动X-Window,它负责调用X-Window系统的初始化程序xinit。以完成 X-Window运行所必要的初始化工作,并启动X-Window系统。
语法:
语法格式:startx [参数]
常用参数:
参数 | 描述 |
---|---|
-d | 指定在启动过程中传递给客户机的X服务器的显示名称 |
-m | 当未找到启动脚本时,启动窗口管理器 |
-r | 当未找到启动脚本时,装入资源文件 |
-w | 强制启动 |
-x | 使用startup脚本启动X-windows会话 |
参考实例:
已默认方式启动X-windows系统:
代码语言:javascript复制startx
以16位颜色深度启动X-windows系统:
代码语言:javascript复制startx --depth 16
强制启动 X-windows系统:
代码语言:javascript复制startx -w
4️⃣ uname 命令 – 显示系统信息
uname命令的英文全称即“Unix name”。
用于显示系统相关信息,比如主机名、内核版本号、硬件架构等。
如果未指定任何选项,其效果相当于执行”uname -s”命令,即显示系统内核的名字。
语法:
语法格式:uname [参数]
常用参数:
参数 | 描述 |
---|---|
-a | 显示系统所有相关信息 |
-m | 显示计算机硬件架构 |
-n | 显示主机名称 |
-r | 显示内核发行版本号 |
-s | 显示内核名称 |
-v | 显示内核版本 |
-p | 显示主机处理器类型 |
-o | 显示操作系统名称 |
-i | 显示硬件平台 |
参考实例:
显示系统主机名、内核版本号、CPU类型等信息:
代码语言:javascript复制uname -a
仅显示系统主机名:
代码语言:javascript复制uname -n
显示当前系统的内核版本 :
代码语言:javascript复制uname -r
显示当前系统的硬件架构:
代码语言:javascript复制uname -i
5️⃣ vmstat 命令 – 显示虚拟内存状态
vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。
语法:
语法格式:vmstat [参数]
常用参数:
参数 | 描述 |
---|---|
-a | 显示活动内页 |
-f | 显示启动后创建的进程总数 |
-m | 显示slab信息 |
-n | 头信息仅显示一次 |
-s | 以表格方式显示事件计数器和内存状态 |
-d | 报告磁盘状态 |
-p | 显示指定的硬盘分区状态 |
-S | 输出信息的单位 |
参考实例:
显示活动内页:
代码语言:javascript复制vmstat -a
显示启动后创建的进程总数:
代码语言:javascript复制vmstat -f
显示slab信息:
代码语言:javascript复制vmstat -m
头信息仅显示一次:
代码语言:javascript复制vmstat -n
以表格方式显示事件计数器和内存状态:
代码语言:javascript复制vmstat -s
显示指定的硬盘分区状态:
代码语言:javascript复制vmstat -p /dev/sda1
指定状态信息刷新的时间间隔为1秒:
代码语言:javascript复制vmstat 1
磁盘管理
1️⃣ df 命令 – 显示磁盘空间使用情况
df命令的英文全称即“Disk Free”,顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。
日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。
语法:
语法格式: df [参数] [指定文件]
常用参数:
参数 | 描述 |
---|---|
-a | 显示所有系统文件 |
-B | <块大小> 指定显示时的块大小 |
-h | 以容易阅读的方式显示 |
-H | 以1000字节为换算单位来显示 |
-i | 显示索引字节信息 |
-k | 指定块大小为1KB |
-l | 只显示本地文件系统 |
-t | <文件系统类型> 只显示指定类型的文件系统 |
-T | 输出时显示文件系统类型 |
– -sync | 在取得磁盘使用信息前,先执行sync命令 |
参考实例:
显示磁盘分区使用情况:
代码语言:javascript复制df
以容易阅读的方式显示磁盘分区使用情况:
代码语言:javascript复制df -h
显示指定文件所在分区的磁盘使用情况:
代码语言:javascript复制df /etc/dhcp
显示文件类型为ext4的磁盘使用情况:
代码语言:javascript复制df -t ext4
2️⃣ fdisk 命令 – 磁盘分区
fdisk命令的英文全称是“Partition table manipulator for Linux”,即作为磁盘的分区工具。进行硬盘分区从实质上说就是对硬盘的一种格式化, 用一个形象的比喻,分区就好比在一张白纸上画一个大方框,而格式化好比在方框里打上格子。
语法:
语法格式:fdisk [参数]
常用参数:
参数 | 描述 |
---|---|
-b | 指定每个分区的大小 |
-l | 列出指定的外围设备的分区表状况 |
-s | 将指定的分区大小输出到标准输出上,单位为区块 |
-u | 搭配”-l”参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址 |
-v | 显示版本信息 |
参考实例:
查看所有分区情况:
代码语言:javascript复制fdisk -l
选择分区磁盘:
代码语言:javascript复制fdisk /dev/sdb
在当前磁盘上建立扩展分区:
代码语言:javascript复制fdisk /ext
不检查磁盘表面加快分区操作:
代码语言:javascript复制fdisk /actok
重建主引导记录:
代码语言:javascript复制fdisk /cmbr
3️⃣ lsblk命令 – 查看系统的磁盘
lsblk命令的英文是“list block”,即用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。
lsblk命令包含在util-linux-ng包中,现在该包改名为util-linux。
语法:
语法格式:lsblk [参数]
常用参数:
参数 | 描述 |
---|---|
-a | 显示所有设备 |
-b | 以bytes方式显示设备大小 |
-d | 不显示 slaves 或 holders |
-D | print discard capabilities |
-e | 排除设备 |
-f | 显示文件系统信息 |
-h | 显示帮助信息 |
-i | use ascii characters only |
-m | 显示权限信息 |
-l | 使用列表格式显示 |
-n | 不显示标题 |
-o | 输出列 |
-P | 使用key=”value”格式显示 |
-r | 使用原始格式显示 |
-t | 显示拓扑结构信息 |
参考实例:
lsblk命令默认情况下将以树状列出所有块设备:
代码语言:javascript复制lsblk
默认选项不会列出所有空设备:
代码语言:javascript复制lsblk -a
也可以用于列出一个特定设备的拥有关系,同时也可以列出组和模式:
代码语言:javascript复制lsblk -m
要获取SCSI设备的列表,你只能使用-S选项,该选项是用来以颠倒的顺序打印依赖的:
代码语言:javascript复制lsblk -S
例如,你也许想要以列表格式列出设备,而不是默认的树状格式。可以将两个不同的选项组合,以获得期望的输出:
代码语言:javascript复制lsblk -nl
4️⃣ hdparm命令 – 显示与设定硬盘参数
hdparm命令用于检测,显示与设定IDE或SCSI硬盘的参数。
语法:
语法格式:hdparm [参数]
常用参数:
参数 | 描述 |
---|---|
-a | 设定读取文件时,预先存入块区的分区数 |
-f | 将内存缓冲区的数据写入硬盘,并清空缓冲区 |
-g | 显示硬盘的磁轨,磁头,磁区等参数 |
-I | 直接读取硬盘所提供的硬件规格信息 |
-X | 设定硬盘的传输模式 |
参考实例:
显示硬盘的相关设置:
代码语言:javascript复制hdparm /dev/sda
显示硬盘的柱面、磁头、扇区数:
代码语言:javascript复制hdparm -g /dev/sda
评估硬盘的读取效率:
代码语言:javascript复制hdparm -t /dev/sda
直接读取硬盘所提供的硬件规格信息:
代码语言:javascript复制hdparm -X /dev/sda
使IDE硬盘进入睡眠模式:
代码语言:javascript复制hdparm -Y /dev/sda
5️⃣ vgextend命令 – 扩展卷组
vgextend命令用于动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量。LVM卷组中的物理卷可以在使用vgcreate命令创建卷组时添加,也可以使用vgextend命令动态的添加。
语法:
语法格式:vgextend [参数]
常用参数:
参数 | 描述 |
---|---|
-d | 调试模式 |
-t | 仅测试 |
参考实例:
将物理卷/dev/sdb1加入卷组vglinuxprobe:
代码语言:javascript复制vgextend vglinuxprobe /dev/sdb1
文件传输
1️⃣ tftp 命令 – 上传及下载文件
tftp命令用于传输文件。ftp让用户得以下载存放于远端主机的文件,也能将文件上传到远端主机放置。
tftp是简单的文字模式ftp程序,它所使用的指令和ftp类似。
语法:
语法格式:tftp [参数]
常用参数:
参数 | 描述 |
---|---|
connect | 连接到远程tftp服务器 |
mode | 文件传输模式 |
put | 上传文件 |
get | 下载文件 |
quit | 退出 |
verbose | 显示详细的处理信息 |
trace | 显示包路径 |
status | 显示当前状态信息 |
binary | 二进制传输模式 |
ascii ascii | 传送模式 |
rexmt | 设置包传输的超时时间 |
timeout | 设置重传的超时时间 |
help | 帮助信息 |
? | 帮助信息 |
参考实例:
连接远程服务器”10.211.55.100″:
代码语言:javascript复制tftp 10.211.55.100
远程下载file文件:
代码语言:javascript复制tftp> get file
退出tftp:
代码语言:javascript复制tftp> quit
2️⃣ curl 命令 – 文件传输工具
curl命令是一个利用URL规则在shell终端命令行下工作的文件传输工具;它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。
作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征;做网页处理流程和数据检索自动化。
语法:
语法格式:curl [参数] [网址]
常用参数:
参数 | 描述 |
---|---|
-O | 把输出写到该文件中,保留远程文件的文件名 |
-u | 通过服务端配置的用户名和密码授权访问 |
参考实例:
将下载的数据写入到文件,必须使用文件的绝对地址:
代码语言:javascript复制curl https://www.baidu.com /root/lucifer.txt --silent -O
访问需要授权的页面时,可通过-u选项提供用户名和密码进行授权:
代码语言:javascript复制curl -u root https://www.baidu.com/
3️⃣ fsck命令 – 检查并修复Linux文件系统
fsck命令的英文全称是“filesystem check”,即检查文件系统的意思,常用于检查并修复Linux文件系统的一些错误信息,操作文件系统需要先备份重要数据,以防丢失。
Linux fsck命令用于检查并修复Linux文件系统,可以同时检查一个或多个 Linux 文件系统;若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。
语法:
语法格式:fsck [参数] [文件系统]
常用参数:
参数 | 描述 |
---|---|
-a | 自动修复文件系统,不询问任何问题 |
-A | 依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统 |
-N | 不执行指令,仅列出实际执行会进行的动作 |
-P | 当搭配”-A”参数使用时,则会同时检查所有的文件系统 |
-r | 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式 |
-R | 当搭配”-A”参数使用时,则会略过/目录的文件系统不予检查 |
-t | 指定要检查的文件系统类型 |
-T | 执行fsck指令时,不显示标题信息 |
-V | 显示指令执行过程 |
参考实例:
修复坏的分区文件系统:
代码语言:javascript复制fsck -t ext3 -r /usr/local
显示fsck系统安装的版本号:
代码语言:javascript复制fsck --version
4️⃣ ftpwho命令 – 显示ftp会话信息
ftpwho命令用于显示当前所有以FTP登入的用户会话信息。
执行该命令可得知当前用FTP登入系统的用户有哪些人,以及他们正在进行的操作。
语法:
语法格式:ftpwho [参数]
常用参数:
参数 | 描述 |
---|---|
-h | 显示帮助信息 |
-v | 详细模式,输出更多信息 |
参考实例:
查询当前正在登录FTP 服务器的用户:
代码语言:javascript复制ftpwho
在详细模式下,查询当前正在登录FTP 服务器的用户:
代码语言:javascript复制ftpwho -v
显示帮助信息:
代码语言:javascript复制ftpwho -h
5️⃣ lprm命令 – 删除打印队列中的打印任务
lprm命令的英文全称是“Remove jobs from the print queue”,意为用于删除打印队列中的打印任务。尚未完成的打印机工作会被放在打印机贮列之中,这个命令可用来将未送到打印机的工作取消。
语法:
语法格式:lprm [参数] [任务编号]
常用参数:
参数 | 描述 |
---|---|
-E | 与打印服务器连接时强制使用加密 |
-P | 指定接受打印任务的目标打印机 |
-U | 指定可选的用户名 |
参考实例:
将打印机hpprint中的第102号任务移除:
代码语言:javascript复制lprm -Phpprint 102
将第101号任务由预设打印机中移除:
代码语言:javascript复制lprm 101
网络通讯
1️⃣ ssh 命令 – 安全连接客户端
ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。
语法:
语法格式: ssh [参数] [远程主机]
常用参数:
参数 | 描述 |
---|---|
-1 | 强制使用ssh协议版本1 |
-2 | 强制使用ssh协议版本2 |
-4 | 强制使用IPv4地址 |
-6 | 强制使用IPv6地址 |
-A | 开启认证代理连接转发功能 |
-a | 关闭认证代理连接转发功能 |
-b | 使用本机指定的地址作为对位连接的源IP地址 |
-C | 请求压缩所有数据 |
-F<配置文件> | 指定ssh指令的配置文件,默认的配置文件为“/etc/ssh/ssh_config” |
-f | 后台执行ssh指令 |
-g | 允许远程主机连接本机的转发端口 |
-i<身份文件> | 指定身份文件(即私钥文件) |
-l<登录名> | 指定连接远程服务器的登录用户名 |
-N | 不执行远程指令 |
-o<选项> | 指定配置选项 |
-p<端口> | 指定远程服务器上的端口 |
-q | 静默模式,所有的警告和诊断信息被禁止输出 |
-X | 开启X11转发功能 |
-x | 关闭X11转发功能 |
-y | 开启信任X11转发功能 |
参考实例:
登录远程服务器:
代码语言:javascript复制ssh 10.211.55.100
用test用户连接远程服务器:
代码语言:javascript复制ssh -l test 10.211.55.100
查看分区列表:
代码语言:javascript复制ssh 10.211.55.100 /sbin/fdisk -l
强制使用ssh协议版本1:
代码语言:javascript复制ssh -1
开启认证代理连接转发功能:
代码语言:javascript复制ssh -A
2️⃣ netstat 命令 – 显示网络状态
netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
从整体上看,netstat的输出结果可以分为两个部分:一个是Active Internet connections,称为有源TCP连接,其中”Recv-Q”和”Send-Q”指 的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到;另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
语法:
语法格式:netstat [参数]
常用参数:
参数 | 描述 |
---|---|
-a | 显示所有连线中的Socket |
-p | 显示正在使用Socket的程序识别码和程序名称 |
-u | 显示UDP传输协议的连线状况 |
-i | 显示网络界面信息表单 |
-n | 直接使用IP地址,不通过域名服务器 |
参考实例:
显示详细的网络状况:
代码语言:javascript复制netstat -a
显示当前户籍UDP连接状况:
代码语言:javascript复制netstat -nu
显示UDP端口号的使用情况:
代码语言:javascript复制netstat -apu
显示网卡列表:
代码语言:javascript复制netstat -i
显示组播组的关系:
代码语言:javascript复制netstat -g
3️⃣ ping 命令 – 测试主机间网络连通性
ping命令主要用来测试主机之间网络的连通性,也可以用于。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
不过值得我们注意的是:Linux系统下的ping命令与Windows系统下的ping命令稍有不同。Windows下运行ping命令一般会发出4个请求就结束运行该命令;而Linux下不会自动终止,此时需要我们按CTR C终止或者使用-c参数为ping命令指定发送的请求数目。
语法:
语法格式:ping [参数] [目标主机]
常用参数:
参数 | 描述 |
---|---|
-d | 使用Socket的SO_DEBUG功能 |
-c | 指定发送报文的次数 |
-i | 指定收发信息的间隔时间 |
-I | 使用指定的网络接口送出数据包 |
-l | 设置在送出要求信息之前,先行发出的数据包 |
-n | 只输出数值 |
-p | 设置填满数据包的范本样式 |
-q | 不显示指令执行过程 |
-R | 记录路由过程 |
-s | 设置数据包的大小 |
-t | 设置存活数值TTL的大小 |
-v | 详细显示指令的执行过程 |
参考实例:
检测与百度网站的连通性:
代码语言:javascript复制ping www.baidu.com
连续ping4次:
代码语言:javascript复制ping -c 4 www.baidu.com
设置次数为4,时间间隔为3秒:
代码语言:javascript复制ping -c 4 -i 3 www.baidu.com
利用ping命令获取指定网站的IP地址:
代码语言:javascript复制ping -c 1 baidu.com | grep from | cut -d " " -f 4
4️⃣ dhclient 命令 – 动态获取或释放IP地址
dhclient命令的作用是:使用动态主机配置协议动态的配置网络接口的网络参数,也支持BOOTP协议。
语法:
语法格式:dhclient [参数] [网络接口]
常用参数:
参数 | 描述 |
---|---|
-p | 指定dhcp客户端监听的端口号(默认端口号86) |
-d | 总是以前台方式运行程序 |
-q | 安静模式,不打印任何错误的提示信息 |
-r | 释放ip地址 |
-n | 不配置任何接口 |
-x | 停止正在运行的DHCP客户端,而不释放当前租约,杀死现有的dhclient |
-s | 在获取ip地址之前指定DHCP服务器 |
-w | 即使没有找到广播接口,也继续运行 |
参考实例:
在指定网络接口上发出DHCP请求:
代码语言:javascript复制dhclient eth0
释放IP地址:
代码语言:javascript复制dhclient -r
从指定的服务器获取ip地址:
代码语言:javascript复制dhclient -s 10.211.55.100
停止运行dhclient:
代码语言:javascript复制dhclient -x
5️⃣ ifconfig 命令 – 显示或设置网络设备
ifconfig命令的英文全称是“network interfaces configuring”,即用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
语法:
语法格式:ifconfig [参数]
常用参数:
参数 | 描述 |
---|---|
add<地址> | 设置网络设备IPv6的IP地址 |
del<地址> | 删除网络设备IPv6的IP地址 |
down | 关闭指定的网络设备 |
up | 启动指定的网络设备 |
IP地址 | 指定网络设备的IP地址 |
参考实例:
显示网络设备信息:
代码语言:javascript复制ifconfig
启动关闭指定网卡:
代码语言:javascript复制ifconfig eth0 down
ifconfig eth0 up
为网卡配置和删除IPv6地址:
代码语言:javascript复制ifconfig eth0 add 33ffe:3240:800:1005::2/64
ifconfig eth0 del 33ffe:3240:800:1005::2/64
用ifconfig修改MAC地址:
代码语言:javascript复制ifconfig eth0 down
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
ifconfig eth0 up
ifconfig eth1 hw ether 00:1D:1C:1D:1E
ifconfig eth1 up
配置IP地址:
代码语言:javascript复制ifconfig eth0 192.168.1.56
ifconfig eth0 192.168.1.56 netmask 255.255.255.0
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255