1. 前 言
最近学习了有关Linux
的一些常用基本命令,在此做个简单的梳理,后续视学习进展再进行详细补充。
2. 常用Linux命令
常见的执行Linux
命令的格式如下:
命令名称 命令参数 命令对象
注意:
- 命令名称、命令参数、命令对象之间用空格分隔;
- 命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用- -与-作为前缀,如长格式man --help、短格式man -help
- 命令对象一般是指要处理的文件、目录、用户等资源
2.1 常用的系统工作命令
1. echo 命令
echo
命令用于在终端输出字符串或变量提取后的值,格式为 “echo 字符串或echo $变量”。
2. date 命令
date
命令用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式]”。
在强大的 date
命令中输入以“+
”号开头的参数,即可按照指定格式来输出系统的时间或日期,这样在日常工作时便可以把备份数据的命令与指定格式输出的时间信息结合到一起。
参数 | 作用 |
---|---|
%t | 跳格[Tab键] |
%H | 小时(00~23) |
%I | 小时(00~12) |
%M | 分钟(00~59) |
%S | 秒(00~59) |
%j | 今年中的第几天 |
按照默认格式查看当前系统时间的 date
命令如下所示:
root@ecs-c536:~# date
Sat Jul 24 14:47:35 CST 2021
按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的 date
命令如下所示:
root@ecs-c536:~# date "+%Y-%m-%d %H:%M:%S"
2021-07-24 14:49:37
将系统的当前时间设置为 2021 年 7 月 12 日 9 点 30 分的 date
命令如下所示:
root@ecs-c536:~# date -s "20210712 9:30:00"
Mon Jul 12 09:30:00 CST 2021
再次使用 date
命令并按照默认的格式查看当前的系统时间,如下所示:
root@ecs-c536:~# date
Mon Jul 12 09:31:23 CST 2021
date
命令中的参数%j
可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的新旧,即数字越大,越靠近当前时间,该参数的使用方式以及显示结果如下所示:
root@ecs-c536:~# date "+%j"
193
3. reboot 命令
reboot
命令用于重启系统,其格式为 reboot。
由于重启计算机这种操作会涉及硬件资源的管理权限,因此默认只能使用 root
管理员来重启,其命令如下:
root@ecs-c536:~# reboot
4. poweroff 命令
poweroff
命令用于关闭系统,其格式为 poweroff。
该命令与 reboot
命令相同,都会涉及硬件资源的管理权限,因此默认只有 root
管理员才可以关闭电脑,其命令如下:
root@ecs-c536:~# poweroff
5. wget 命令
wget
命令用于在终端中下载网络文件,格式为“wget [参数] 下载地址”。
参数 | 作用 |
---|---|
-b | 后台下载模式 |
-P | 下载到指定目录 |
-t | 最大尝试次数 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载 |
6. ps 命令
ps
命令用于查看系统中的进程状态,格式为“ps [参数]”。
参数 | 作用 |
---|---|
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
在Linux
系统中,有 5 种常见的进程状态,分别为运行(R)、中断(S)、不可中断(D)、僵死(Z)与停止(T),其各自
含义如下所示:
- R:进程正在运行或在运行队列中等待。
- S: 进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
- D:进程不响应系统异步信号,即便用
kill
命令也不能将其中断。 - Z:进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数后将进程释放。
- T:进程收到停止信号后停止运行。
执行 ps aux
命令后通常会看到如下表所示的进程状态(部分):
注意: 在
Linux
系统中的命令参数有长短格式之分,长格式和长格式之间不能合并,长格式和短格式之间也不能合并,但短格式和短格式之间是可以合并的,合并后仅保留一个-(减号)即可。另外ps
命令可允许参数不加减号(-),因此可直接写成ps aux
的样子。
7. top 命令
top
命令用于动态地监视进程活动与系统负载等信息,其格式为 top。
top
命令可以看作 Linux
中的“强化版的Windows
任务管理器”。top
命令的运行界面如下图所示。
- 第 1 行: 系统时间、运行时间、登录终端数、系统负载(三个数值分别为 1 分钟、5分钟、15 分钟内的平均值,数值越小意味着负载越低)。
- 第 2 行: 进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
- 第 3 行: 用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。(数据均为 CPU 数据并以百分比格式显示,例如“97.1 id”意味着有 97.1%的 CPU 处理器资源处于空闲)
- 第 4 行: 物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
- 第 5 行: 虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
8. pidof 命令
pidof
命令用于查询某个指定服务进程的 PID 值,格式为“pidof [参数] [服务名称]”。
每个进程的进程号码值(PID)是唯一的,因此可以通过 PID 来区分不同的进程。例如,可以使用如下命令来查询本机上 sshd 服务程序的 PID:
root@ecs-c536:~# pidof sshd
1539 1531 1151
9. kill 命令
kill
命令用于终止某个指定 PID 的服务进程,格式为“kill [参数] [进程 PID]”。
10. killall 命令
killall
命令用于终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数] [进程名称]”。
Tip: 如果我们在系统终端中执行一个命令后想立即停止它,可以同时按下
Ctrl + C
组合键(生产环境中比较常用的一个快捷键),这样将立即终止该命令的进程。或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加上一个&
符号,这样命令将进入系统后台来执行。
2.2 系统状态检测命令
接下来会逐个讲解与网卡网络、系统内核、系统负载、内存使用情况、当前启用终端数量、历史登录记录、命令执行记录以及救援诊断等相关命令的使用方法,这些命令都超级实用。
1. ifconfig 命令
ifconfig
命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]”。
使用 ifconfig
命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet 参数后面的 IP 地址、ether 参数后面的网卡物理地址(又称为 MAC 地址),以及 RX、TX 的接收数据包与发送数据包的个数及累计流量(即下面红框的信息内容):
2. uname 命令
uname
命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”。
在使用 uname
命令时,一般会固定搭配上-a
参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。
root@ecs-c536:~# uname -a
Linux ecs-c536 4.15.0-136-generic #140-Ubuntu SMP Thu Jan 28 05:20:47 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
3. uptime 命令
uptime
命令用于查看系统的负载信息,格式为 uptime。
uptime
命令可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近 1 分钟、5 分钟、15 分钟内的压力情况(下面红框的信息部分);负载值越低越好,尽量不要长期超过 1,在生产环境中不要超过 5。
4. free 命令
free
用于显示当前系统中内存的使用量信息,格式为“free [-h]”。
在使用 free
命令时,可以结合使用-h
参数以更人性化的方式输出当前内存的实时使用量信息。
5. who 命令
who
用于查看当前登入主机的用户终端信息,格式为“who [参数]”。
这三个简单的字母可以快速显示出所有正在登录本机的用户的名称以及他们正在开启的终端信息。
root@ecs-c536:~# who
root pts/0 2021-07-24 15:17
6. last 命令
last
命令用于查看所有系统的登录记录,格式为“last [参数]”。
使用 last
命令可以查看本机的登录记录。但是,由于这些信息都是以日志文件的形式保存在系统中,因此黑客可以很容易地对内容进行篡改。千万不要单纯以该命令的输出信息而判断系统有无被恶意入侵!
7. history 命令
history
命令用于显示历史执行过的命令,格式为“history [-c]”。
执行 history
命令能显示出当前用户在本地计算机中执行过的最近 1000 条命令记录。如果觉得 1000 不够用,还可以自定义/etc/profile
文件中的HISTSIZE
变量值。在使用 history
命令时,如果使用-c
参数则会清空所有的命令历史记录。还可以使用“!编码数字
”的方式来重复执行某一次的命令。
root@ecs-c536:~# history
历史命令会被保存到用户家目录中的.bash_history
文件中。Linux
系统中以点(.)
开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用 cat
命令查看其文件内容。
root@ecs-c536:~# cat ~/.bash_history
要清空当前用户在本机上执行的 Linux
命令历史记录信息,可执行如下命令:
root@ecs-c536:~# history -c
8. sosreport 命令
sosreport
命令用于收集系统配置及架构信息并输出诊断文档,格式为 sosreport。
2.3 工作目录切换命令
1. pwd 命令
pwd
命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”。
root@ecs-c536:~# pwd
/root
2. cd 命令
cd
命令用于切换工作路径,格式为“cd [目录名称]”。
这个命令应该是最常用的一个 Linux
命令了。可以通过 cd
命令迅速、灵活地切换到不同的工作目录。除了常见的切换目录方式,还可以使用“cd -
”命令返回到上一次所处的目录,使用“cd ..
”命令进入上级目录,以及使用“cd ~
”命令切换到当前用户的家目录,亦或使用“cd ~username
”切换到其他用户的家目录。例如,可以使用“cd 路径”的方式切换进/root 目录中:
oot@ecs-c536:~# cd /root
同样的道理,可使用下述命令切换到/bin 目录中:
root@ecs-c536:~# cd /bin
此时,要返回到上一次的目录(即/root 目录),可执行如下命令:
root@ecs-c536:/bin# cd -
/
root@ecs-c536:/#
还可以通过下面的命令快速切换到用户的家目录:
root@ecs-c536:/# cd ~
root@ecs-c536:~#
3. ls 命令
ls
命令用于显示目录中的文件信息,格式为“ls [选项] [文件] ”。
所处的工作目录不同,当前工作目录下的文件肯定也不同。使用 ls
命令的“-a
”参数看到全部文件(包括隐藏文件),使用“-l
”参数可以查看文件的属性、大小等详细信息。将这两个参数整合之后,再执行 ls
命令即可查看当前目录中的所有文件并输出这些文件的属性信息:
root@ecs-c536:~# ls -al
total 19345492
drwx------ 9 root root 4096 Jul 24 15:17 .
drwxr-xr-x 25 root root 4096 Jul 24 14:58 ..
-rw-r--r-- 1 root root 0 Jul 20 15:12 50_file
-rw-r--r-- 1 root root 0 Jul 20 14:07 560_file
-rw-r--r-- 1 root root 5931 Jul 12 09:37 .bash_history
-rw-r--r-- 1 root root 3106 Apr 9 2018 .bashrc
drwx------ 3 root root 4096 Feb 24 17:42 .cache
drwxr-x--- 3 root root 4096 Jul 13 14:16 .config
drwxr-xr-x 3 root root 4096 Jul 14 13:14 etc
-rw-r--r-- 1 root root 703140 Jul 14 13:11 etc.tar.gz
drwx------ 3 root root 4096 Feb 24 17:20 .gnupg
drwxr-xr-x 3 root root 4096 Jul 16 16:21 linuxprobe
-rw-r--r-- 1 root root 17676328 Sep 22 2020 LinuxProbe.pdf
-rw-r--r-- 1 root root 148 Aug 17 2015 .profile
-rw-r--r-- 1 root root 58 Jul 16 16:40 readme.txt
-rw-r--r-- 1 root root 19791327744 Jul 14 11:26 RHEL-server-7.0-x86_64-LinuxProbe.com.iso
drwx------ 2 root root 4096 Jul 12 15:43 .ssh
-rw-r--r-- 1 root root 54 Jul 16 16:52 stderr.txt
drwxr-xr-x 3 root root 4096 Jul 13 09:59 www.linuxprobe.com
-rw------- 1 root root 108 Jul 24 15:17 .Xauthority
如果想要查看目录属性信息,则需要额外添加一个-d
参数。例如,可使用如下命令查看/root 目录的权限与属性信息:
root@ecs-c536:~# ls -ld /root
drwx------ 9 root root 4096 Jul 24 15:17 /root
3. 小结
本讲主要介绍了Linux
命令的格式及部分常用命令的作用,包括10个常用的系统工作命令、8个系统状态检测命令、3个共工作目录切换命令,后期会继续介绍其它常用命令及其作用。毕竟 Linux
系统的知识体系太过庞大,通过以练代学的方式来加深理解和掌握是每一位初学人员都需要经历的一段时期,祝各位学习顺利,学有所成!
4. 复习巩固题
1.在 众多的 Linux
系统中,最常使用的 Shell
终端是什么?
答: Bash(Bourne-Again SHell
)解释器。
2.执行 Linux
系统命令时,添加参数的目的是什么?
答: 为了让 Linux
系统命令能够更贴合用户的实际需求进行工作。
3.Linux
系统命令、命令参数及命令对象之间,普遍应该使用什么来间隔?
答: 应该使用一个或多个空格进行间隔。
4.请写出用 echo
命令把 SHELL
变量值输出到屏幕终端的命令。
答: echo $SHELL。
5.简述 Linux
系统中 5 种进程的名称及含义。
答: 在 Linux
系统中,有下面 5 种进程名称。
- R(运行):进程正在运行或在运行队列中等待。
- S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
- D(不可中断):进程不响应系统异步信号,即便用 kill 命令也不能将其中断。
- Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数
后将进程释放。 - T(停止):进程收到停止信号后停止运行。
6.请尝试使用 Linux
系统命令关闭 PID
为 5529 的服务进程。
答: 执行 kill 5529
命令即可;若知道服务的名称,则可以使用 killall
命令进行关闭。
7.使用 ifconfig
命令查看网络状态信息时,需要重点查看的 4 项信息分别是什么?
答: 这 4 项重要信息分别是网卡名称、IP 地址、网卡物理地址以及 RX/TX 的收发流量数据大小。
8.使用 uptime
命令查看系统负载时,对应的负载数值如果是 0.91、0.56、0.32,那么最近 15 分钟内负载压力最大的是哪个时间段?
答: 通过负载数值可以看出,最近 1 分钟内的负载压力是最大的。
9.使用 history
命令查看历史命令的执行记录时,命令前面的数字除了排序外还有什么用处?
答: 还可以用“!数字
”的命令格式重复执行某一次的命令记录,从而避免了重复输入较长命令的麻烦。
参考资料
- 刘遄著. Linux就该这么学. 北京:人民邮电出版社, 2017.12:30-44.
- (三)RHEL系统之红帽RHEL 7系统之linux命令之一
- Linux常用命令大全(非常全!!!)