一. 引言
不用多说,Linux命令实在是太重要了,面试经常问,平时也常用,我们前几篇文章都是有涉及到的,今天我们就来学一学吧!
二. 指令学习
1. 常用指令一览
我们先列出常用的命令来,然后我们再一一介绍。
命令 | 功能 |
---|---|
man | 帮助命令 |
ls命令 | 查看当前文件与目录信息 |
cd命令 | 用于切换当前目录 |
pwd命令 | 用于显示工作目录。 |
mkdir命令 | mkdir 命令用于创建文件夹。 |
rm命令 | 删除文件或文件夹命令 |
find 命令 | 查找目录或文件 |
mv命令 | 移动文件或文件夹命令 |
cp命令 | 复制命令 |
cat命令 | 查看文件内容;连接文件 |
more命令 | more 会以一页一页的显示文件内容 |
less命令 | less 与 more 类似,但使用 less 可以随意浏览文件 |
grep命令 | 该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工。 |
ps命令 | 查看进程情况 |
top命令 | 可以查看操作系统的信息,如进程、CPU占用率、内存信息等 |
kill命令 | 向进程发送终止信号 |
2. 基础命令介绍
man命令:帮助命令。当我们某个指令不会使用时或不熟悉参数,可以使用man命令+想要查找的命令。就会显示出关于该命令的详细内容。
man得到的内容比用 help 更多更详细,而且man没有内建与外部命令的区分,因为 man 工具是显示系统手册页中的内容,也就是一本电子版的字典,这些内容大多数都是对命令的解释信息,还有一些相关的描述。通过查看系统文档中的 man 也可以得到程序的更多相关信息和 Linux 的更多特性。所以这里建议用man替代help命令。
示例:
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 |
|
cd 命令。切换目录:cd [目录名]
示例:
1 2 3 4 5 6 7 |
|
ls命令:就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限) 查看目录信息等等。
1 2 3 4 5 6 7 8 |
|
实例:
1 2 3 4 5 6 7 8 9 10 11 |
|
mkdir 命令。mkdir 命令用于创建文件夹。
1 2 3 |
|
实例:
1 2 3 4 5 |
|
rm 命令。删除一个目录中的一个或多个文件或目录。
1 2 3 4 |
|
实例:
1 2 3 4 5 6 7 8 |
|
mv 命令。移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。
实例:
1 2 3 4 5 |
|
cp 命令。将源文件复制至目标文件,或将多个源文件复制至目标目录。
1 2 3 4 |
|
实例:
1 2 |
|
命令:find 目录 参数 文件名称
实例:
1 |
|
3. 进阶命令介绍
pwd 命令。pwd 命令用于查看当前工作目录路径。
实例:
1 2 3 4 5 |
|
cat 命令。
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
more命令。more 会以一页一页的显示,方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
实例:
1 2 3 4 5 |
|
less命令。less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
实例:
1 2 3 4 5 |
|
touch命令,Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
实例:
使用指令"touch"修改文件"douya.c"的时间属性为当前系统时间,输入如下命令:
1 |
|
首先,使用ls命令查看douya.c文件的属性,如下所示:
1 2 |
|
可以看到原来的修改时间为:
1 |
|
然后我们执行touch命令后再来查看:
1 2 3 |
|
可以看到,修改时间已经改变。
使用指令"touch"时,如果指定的文件不存在,则将创建一个新的空白文件。
1 |
|
grep 命令。强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
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 |
|
实例:
1 2 3 4 5 6 7 8 9 10 11 |
|
ps命令。ps(process status),用来查看当前运行的进程状态,一次性查看,如果需要动态连续结果使用 top
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
实例:
1 2 3 4 5 6 7 8 9 10 11 |
|
top命令。显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等
1 2 3 4 5 |
|
前五行是当前系统情况整体的统计信息区。
-
第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:
00:12:54 — 当前系统时间
up ?days, 4:49 — 系统已经运行了?天4小时49分钟(在这期间系统没有重启过)
21users — 当前有1个用户登录系统
load average: 0.06, 0.02, 0.00 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
-
第二行,Tasks — 任务(进程),具体信息说明如下:
系统现在共有256个进程,其中处于运行中的有1个,177个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
-
第三行,cpu状态信息,具体属性说明如下:
0.2%us — 用户空间占用CPU的百分比。
0.2% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
99.5% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
-
第四行,内存状态,具体信息如下:
2017552 total — 物理内存总量
720188 used — 使用中的内存总量
197916 free — 空闲内存总量
1099448 cached — 缓存的总量
-
第五行,swap交换分区信息,具体信息说明如下:
998396 total — 交换区总量
989936 free — 空闲交换区总量
8460 used — 使用的交换区总量
1044136 cached — 缓冲的交换区总量
kill 命令。发送指定的信号到相应进程。不指定信号将发送SIGTERM(15)终止指定进程。也就是 kill -15 ,被称为优雅的退出。当使用kill -15时,系统会发送一个SIGTERM的信号给对应的程序。当程序接收到该信号后,具体要如何处理是自己可以决定的。
这时候,应用程序可以选择:
1、立即停止程序
2、释放响应资源后停止程序
3、忽略该信号,继续执行程序
因为kill -15信号只是通知对应的进程要进行"安全、干净的退出",程序接到信号之后,退出前一般会进行一些"准备工作",如资源释放、临时文件清理等等,如果准备工作做完了,再进行程序的终止。但是,如果在"准备工作"进行过程中,遇到阻塞或者其他问题导致无法成功,那么应用程序可以选择忽略该终止信号。
如果任无法终止该程序可用"-KILL" 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,和kill -15相比,kill -9就相对强硬一点,系统会发出SIGKILL信号,他要求接收到该信号的程序应该立即结束运行,不能被阻塞或者忽略。
所以,相比于kill -15命令,kill -9在执行时,应用程序是没有时间进行"准备工作"的,所以这通常会带来一些副作用,数据丢失或者终端无法恢复到正常状态等。
使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。
1 2 3 4 5 6 |
|
实例:
1 2 3 4 5 6 7 8 9 10 11 |
|
而常见信号如下:
信号代号 | 信号名称 | 说 明 |
---|---|---|
1 | SIGHUP | 该信号让进程立即关闭.然后重新读取配置文件之后重启 |
2 | SIGINT | 程序中止信号,用于中止前台进程。相当于输出 Ctrl+C 快捷键 |
8 | SIGFPE | 在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有的算术运算错误 |
9 | SIGKILL | 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。般用于强制中止进程 |
14 | SIGALRM | 时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号 |
15 | SIGTERM | 正常结束进程的信号,kill 命令的默认信号。如果进程已经发生了问题,那么这 个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9 |
17 | SIGCHLD | 子进程结束时, 父进程会收到这个信号。 |
18 | SIGCONT | 该信号可以让暂停的进程恢复执行。本信号不能被阻断 |
19 | SIGSTOP | 该信号可以暂停前台进程,相当于输入 Ctrl+Z 快捷键。本信号不能被阻断 |
其中最重要的就是 "1"、"9"、"15"、"17"这几个信号。