信息

为了方便阅读与识别,特约定如下:

  • 【】,中文方括号:中文方括号框选起来的内容标识为键盘快捷键,特殊说明除外;

  • [],英文方括号:英文方括号框选起来的内容为可选项,特殊说明除外。

Linux 前置知识

为什么使用命令行?

1. 命令行更高效:

Linux 系统中使用键盘操作速度要比鼠标更快。图形化界面不可重复,而命令行可以编写的脚本完成所有过程(例如:删除过期日志文件)。

2. 图形化界面开销大:

运行图形化界面会占用很多的系统资源,运行命令行可以让系统资源释放给它更应该做的事情。

3. 命令行有时候是唯一的选择:

部分服务器操作系统不会安装图形界面(GUI)。联网设备的维护管理工具本来就没有图形化界面供我们使用。

Bash 终端

输入命令的界面称之为终端,也是所说的 shell,openEuler 默认使用的 shell 为 bash,所以也称之为”Bash 终端”。

终端格式:

CODEzig
[root@localhost ~]#

解释:

  • []:方括号为固定格式;
  • root:代表当前登录用户的用户名,此时登录的用户是”root”,所以提示符为root
  • @:分隔符;
  • localhost:主机名,未修改的情况下,主机名为”localhost”;
  • ~:当前的工作目录,~表示用户的家目录,后续会再介绍。

Linux 命令格式

Linux 命令的常见格式如下:

CODEzig
命令名称 [命令选项] [命令参数]
解释:

命令名称:就是语法中的”动词”,表达的是想要做的事情,例如创建用户、查看文件、重启系统等操作。

命令选项:用于对命令进行调整,让”修改”过的命令能更好地贴合工作需求,达到事半功倍的效果。

命令参数:一般指要处理的文件、目录、用户等资源名称,也就是命令执行后的”承受方”,也可以叫”命令对象”。

备注
  1. 基本上所有命令都是遵循这种语法格式(个别命令除外)。

  2. 命令名称、命令参数与命令对象之间要用空格进行分隔,且字母严格区分大小写

命令选项

命令的选项有长格式(完整的选项名称)和短格式(单个字母的缩写)两种,两者分别用”--”与”-”作为前缀。

当有多个短格式的选项时可以合并写在一起,长格式不可以合并,长格式与短格式也不可以合并,如:“ls -a -l 可以简写成 ls -la”。

快捷操作与快捷键

快捷键

1. 【Tab 键】补全

可以用来自动补全命令或文件名,省时准确。未输入命令状态下,连按两次 Tab 键列出所有可用命令;已输入部分命令名或文件名,按 Tab 键自动补全。

2. 其他常用组合键
快捷键作用
【up】、【down】方向键可以调出输入历史执行记录,快速执行命令。
【Home】、【End】键移动光标到本行开头或末尾。
【Ctrl + A】组合键移动光标到行首。
【Ctrl + E】移动光标到行尾。
【Ctrl + C】终止当前程序。
【Ctrl + L】清除屏幕显示。
【Ctrl + D】表示键盘输入结束。

Linux 基础命令

帮助命令

1. man

man 命令也称之为 man 手册,可以使用man命令查看某一条命令的详细介绍、使用方法和示例。

语法:

CODEzig
man [选项] [节号] [要查看的命令]

选项:

  • -a:显示所有匹配的手册页面。
  • -w:仅显示手册页的位置,而不显示其具体内容。

节号:

  • 1:使用者在 shell 中可以操作的指令或程序,用户命令。
  • 2:系统核心可调用的函数与工具等。
  • 3:一些常用的函数(function)与函数库(library)。
  • 4:设备和特殊文件,设备文档的说明,通常是在/dev 下的文件。
  • 5:文件格式和约定。
  • 6:游戏和演示。
  • 7:杂项(包括宏和惯例)。
  • 8:系统管理命令(通常仅适用于 root 用户)。
  • 9:内核例程(非标准)。

示例:

① 查看mkdir命令的手册页面。

CODEzig
[root@ictstu ~]# man mkdir

ictstu

备注

man命令查看到的帮助内容信息都会很长很多,而且是英文的,刚开始学习的时候可以先行跳过,后期需要使用的时候再慢慢查看。

2. —help

--help 是一个选项,用于查看某条命令的基本信息和一些可用选项。

语法:

CODEzig
[命令名] --help

示例:

① 查看ls命令的基本信息和可用选项。

CODEzig
[root@ictstu ~]# ls --help

ictstu

备注

学习的过程中遇到不会的命令或者不记得的选项可以多使用该选项查看。

3. help

help 命令的功能是用于显示帮助信息,能够输出 Shell 内部命令的帮助内容,但对于外部命令则无法使用,需要用 man 命令进行查看。

语法:

CODEzig
help [选项] [命令名]

选项:

  • -d:显示命令的简短描述。
  • -m:使用 man 手册格式显示帮助信息。
  • -s:显示短格式的帮助信息。

示例:

① 以默认格式显示cd命令的帮助信息。

CODEzig
[root@ictstu ~]# help cd

ictstu

登录命令

1. login

login 的作用是登录系统,使用权限是所有用户。如果选择用命令行模式登录 Linux 的话,看到的第一个 Linux 命令就是 login。

Linux 是一个真正的多用户操作系统,可以同时接受多个用户登录,还允许一个用户进行多次登录。

这是因为 Linux 和许多版本的 Unix 一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。

每个虚拟控制台可以看作是一个独立的工作站,工作台之间可以切换。虚拟控制台的切换可以通过按下【Alt】键和一个功能键来实现,通常使用【F1】-【F6】键。

ictstu

2. last

last 命令的作用是显示近期用户或终端的登录情况,使用权限是所有用户。通过 last 命令查看该程序的 log,管理员可以获知谁曾经或企图连接系统。

语法:

CODEzig
last [选项]

选项:

  • -n:指定输出记录的条数。
  • -t tty:只显示指定的虚拟控制台上登录情况。
  • -y:显示记录的年、月、日。
  • -ID:知道查询的用户名。
  • -x:显示系统关闭、用户登录和退出的历史。
  • -R:不显示主机名字段。

示例:

① 显示近期用户或终端的历史登录情况。

CODEzig
[root@ictstu ~]# last

ictstu

② 仅显示最近 3 条历史登录情况,并不显示来源终端信息。

CODEzig
[root@ictstu ~]# last -Rn 3

ictstu

3. exit

exit 命令的作用是退出系统,它的使用权限是所有用户。exit 命令没有参数,运行后退出系统进入登录界面。

ictstu

电源管理命令

1. shutdown

shutdown 命令的作用是关闭计算机,使用权限是超级用户。

语法:

CODEzig
shutdown [选项] [参数]

选项:

  • -h:关机后关闭电源。
  • -r:关机后打开电源(相当于重启)。
  • -t:在改变到其它运行级别之前,告诉 init 程序多久以后关机。
  • -k:并不真正关机,只是送警告信号给每位登录者。
  • -F:在重启计算机时强迫 fsck。
  • -time:设定关机前的时间。

示例:

① 将当前服务器立即关机。

CODEzig
[root@ictstu ~]# shutdown -h now

或者

CODEzig
[root@ictstu ~]# shutdown -h 0
备注

参数使用 now 和数字 0 都可以。now 表示现在,数字 0 表示 0 秒后关机。

② 将当前服务器立即重启。

CODEzig
[root@ictstu ~]# shutdown -r now
备注

与关机同理,参数使用 now 和数字 0 都可以。now 表示现在,数字 0 表示 0 秒后关机。

③ 设定当前的服务器 23

自动关机,格式为”小时
”。

CODEzig
[root@ictstu ~]# shutdown -h 23:00

④ 取消所有已设定的关机或重启任务。

CODEzig
[root@ictstu ~]# shutdown -c

2. halt

halt 命令的作用是关闭系统,使用权限是超级用户。

语法:

CODEzig
halt [选项]

选项:

  • -n:防止 sync 系统调用,它用在用 fsck 修补根分区之后,以阻止内核用老版本的超级块覆盖修补过的超级块。
  • -w:并不是真正的重启或关机,只是写 wtmp(/var/log/wtmp)记录(/var/log/wtmp 是一个二进制文件,记录每个用户的登录次数和持续时间等信息)。
  • -f:没有调用 shutdown,而强制关机或重启。
  • -i:关机(或重启)前,关掉所有的网络接口。
  • -f:强迫关机,不呼叫 shutdown 这个指令。
  • -d:关闭系统,但不留下记录。

示例:

① 关闭当前系统。

CODEzig
[root@ictstu ~]# halt

② 强制关闭当前系统。

CODEzig
[root@ictstu ~]# halt -f

3. poweroff

poweroff 命令来自英文单词”关机”,其功能是用于关闭操作系统。

语法:

CODEzig
poweroff [选项]

选项:

  • -d:关机时不写入任何信息到日志文件。
  • -f:强制关闭操作系统而不询问。
  • -h:关机前将所有硬件设置为备用模式。
  • -i:关机前先关闭所有的网卡。
  • -n:关机时不执行同步操作。
  • -w:模拟关机操作并记录过程到日志文件。

示例:

① 关闭操作系统。

CODEzig
[root@ictstu ~]# poweroff

② 模拟关机操作并记录过程到日志文件(没有真正关机)。

CODEzig
[root@ictstu ~]# poweroff -w
备注

shutdown、halt、poweroff 三个命令的作用都是用来关机,但是又有细微区别:

  • halt:halt 被称为最简单的关机命令,它会通知硬件停止所有的 CPU 功能,执行时会结束进程,执行 sync 系统调用文件系统写操作,完成后就会停止内核。

    • halt -p 相当于 poweroff

    • halt -f 强制关机

    • halt -i 关机或重启前关闭所有网络接口

  • poweroff:关机同时关闭电源,会发送一个 ACPI 信号通知系统关机,在多用户方式下(run level3)下不建议使用。

    • poweroff -f 强制关机

  • shutdown:关机同时关闭电源,只有拥有 root 权限的用户才可以执行(普通用户需要 root 授权),发送信号给 init,使之改变运行级别(run level)来实现关机,关机或重启实质上就是运行级别的调整,所以也可以直接使用init 0来关机,init 6来重启。shutdown 可设置广播信息来通知已登录的用户将关机,且会创建/run/nologin 文件,禁止新用户登录。也就给了一定时间给进程进行保存操作,被视为安全的关机命令。

    • shutdown -r 重启

    • shutdown -P 相当于 poweroff

    • shutdown -H 相当于 halt

    • shutdown -k 不关机但是发送警告给用户

    • shutdown 加时间,如shutdown -h now/shutdown -h 22:22可以在指定时间关机,在关机前,也可以执行shutdown -c取消关机,但是此指令没有-f 强制参数。

4. reboot

reboot 命令的作用是重新启动计算机,使用权限是系统管理者。

语法:

CODEzig
reboot [选项]

选项:

  • -n:保存数据后再重新启动系统。
  • -w:并不会真的重开机,只是把记录写到/var/log/wtmp 文件里。
  • -d:不把记录写到/var/log/wtmp 文件里(-n 这个参数包含了-d)。
  • -i:关闭网络设置之后再重新启动系统。

示例:

① 重启系统。

CODEzig
[root@ictstu ~]# reboot

② 模拟重启系统。

CODEzig
[root@ictstu ~]# reboot -w

文件管理命令

Linux 下的哲学核心思想是”一切皆文件”。“一切皆文件”,指的是对所有文件(目录、字符设备、块设备、套接字、打印机、进程、线程、管道等)操作,读写都可用 fopen()/fclose()/fwrite()/fread()等函数进行处理。

Linux 的文件目录结构是树形,”/“称为根目录。

ictstu

ictstu

主要目录的用途
目录名主要存放的文件及其用途
/binbin 是 Binary 的缩写,这个目录存放着最经常使用的命令。
/boot这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/devdev 是 Device(设备)的缩写,该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/lib这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/mnt系统提供该目录是为了让用户临时挂载别的文件系统的。
/opt这是给主机额外安装软件所摆放的目录。
/proc系统内存映射的虚拟目录,可以通过直接访问这个目录来获取系统信息。
/root该目录为系统管理员,也称作超级权限者的用户主目录。
/sbins 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。
/srv该目录存放一些服务启动之后需要提取的数据。
/tmp这个目录是用来存放一些临时文件的。
/usr这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录,其中/usr/bin 是系统用户使用的应用程序;/usr/sbin 是超级用户使用的比较高级的管理程序和系统守护程序;/usr/src 是内核源代码默认的放置目录。
/var习惯将那些经常被修改、不断扩充的目录放在这个目录下,包括各种日志文件。
/run是一个临时文件系统,存储系统启动以来的信息,当系统重启时被清理或删除。
文件路径

在 Linux 系统中另外还有一个重要的概念——路径。路径指的是如何定位到某个文件,分为绝对路径与相对路径。绝对路径指的是从根目录(/)开始写起的文件或目录名称,而相对路径则指的是相对于当前路径的写法。

  • 绝对路径:在 Linux 中,绝对路径是从 / (也被称为根目录)开始的,如果一个路径是从/开始的,那一定是绝对路径。
  • 相对路径:相对路径就是相对当前所在目录来说的路径。

1. pwd

pwd 命令用于显示当前工作目录的路径,即显示所在位置的绝对路径。

语法:

CODEzig
pwd [选项]

选项:

  • -L:目录连接链接时,输出连接路径。
  • -P:输出物理路径。

示例:

① 查看当前所在路径。

CODEzig
[root@ictstu ~]# pwd

ictstu

2. cd

cd 命令用于更改当前所处的工作目录,路径可以是绝对路径,也可以是相对路径,若省略不写则会跳转至当前使用者的家目录。

语法:

CODEzig
cd [选项] [路径]

选项:

  • -L:切换至符号链接所在的目录。
  • -P:切换至符号链接对应的实际目录。

特殊路径:

  • -:前一个目录。
  • ~:用户家目录。
  • ..:当前位置的上一级目录。

示例:

① 进入到 /etc 目录。

CODEzig
[root@ictstu ~]# cd /etc/

ictstu

② 返回上一级目录。

CODEzig
[root@ictstu etc]# cd ..

ictstu

③ 回到当前用户的家目录。

CODEzig
[root@ictstu /]# cd ~

ictstu

3. ls

ls 命令用于列出目录的内容,或者文件的信息,该命令的输出结果默认按照文件名排序,如果不指定目标,则列出当前目录的内容,ls 命令是 Linux 命令中使用频率最高者之一。

语法:

CODEzig
ls [选项] [路径/文件]

选项:

  • -a:显示所有文件及目录。
  • -A:显示所有文件及目录但是不显示当前目录和父目录。
  • -l:显示文件的详细属性信息。
  • -t:依据最后修改时间将文件排序显示。
  • -R:递归显示所有子文件。
  • -S:依据内容大小将文件排序显示。

示例:

① 显示当前目录中的所有目录及文件(不包含隐藏文件)。

CODEzig
[root@ictstu ~]# ls

ictstu

② 显示当前目录中的所有目录及文件(包含隐藏文件)。

CODEzig
[root@ictstu ~]# ls -a

ictstu

③ 显示当前目录中文件和目录的详细信息及其属性信息(不包含隐藏文件)。

CODEzig
[root@ictstu ~]# ls -l

ictstu

④ 显示当前目录中文件和目录的详细信息及其属性信息(包含隐藏文件)。

CODEzig
[root@ictstu ~]# ls -la

ictstu

⑤ 显示指定目录中的文件及目录信息。

CODEzig
[root@ictstu ~]# ls /var

ictstu

4. mkdir

mkdir 命令用于创建目录(文件夹),若要创建的目标目录已经存在,则会提示已存在而不继续创建,不覆盖已有文件。

语法:

CODEzig
mkdir [选项] [目录名]

选项:

  • -p:递归创建多级目录。
  • -v:显示目录创建的详细信息。
  • -m:创建目录的同时设置权限。

示例:

① 创建一个目录:dir。

CODEzig
[root@ictstu ~]# mkdir dir

ictstu

② 一次性创建三个目录:dir1、dir2、dir3。

CODEzig
[root@ictstu ~]# mkdir dir1 dir2 dir3

ictstu

③ 递归创建多级目录:/dir1/dir2/dir3。

CODEzig
[root@ictstu ~]# mkdir -p /dir1/dir2/dir3

ictstu

5. touch

touch 命令用于创建空白文件或设置文件的时间。

语法:

CODEzig
touch [选项] [文件名]

选项:

  • -a:设置文件的读取时间记录。
  • -c:不创建新文件。
  • -d:设置时间与日期。
  • -m:设置文件的修改时间记录。
  • -t:设置文件的时间记录。

示例:

① 创建一个名为 file.txt 的文件。

CODEzig
[root@ictstu ~]# touch file.txt

ictstu

② 修改 anaconda-ks.cfg 文件的查看时间和修改时间。

CODEzig
[root@ictstu ~]# touch -d "2023-12-04 18:00" anaconda-ks.cfg

ictstu

备注

Access:最近一次访问这个文件的时间、Change:文件属性最后一次被修改的时间、Modify:文件内容被修改时的时间、Birth:文件创建时的时间。

6. cp

cp 命令能够将一个或多个文件或目录复制到指定位置,亦常用于文件的备份工作。

语法:

CODEzig
cp [选项] [原] [目标]

选项:

  • -b:覆盖目标文件前先进行备份。
  • -f:若目标已存在,则直接覆盖。
  • -i:若目标已存在,则询问是否覆盖。
  • -p:保留原文件或目录的所有属性。
  • -r:递归复制所有子文件。
  • -v:显示复制的过程。
  • -l:对原文件建立硬链接。
  • -s:对原文件建立软链接。

示例:

① 将 file.txt 文件复制一份为 file1.txt。

CODEzig
[root@ictstu ~]# cp file.txt file1.txt

ictstu

② 将 file.txt 同复制到 /opt 目录中,如已有目标文件名称则默认询问是否覆盖。

CODEzig
[root@ictstu ~]# cp file.txt /opt/

ictstu

7. mv

mv 命令用于移动文件或者目录,也可以用于对文件或目录进行重命名。

语法:

CODEzig
mv [选项] [原] [目标]

选项:

  • -b:覆盖目标文件前先进行备份。
  • -f:若目标已存在,则直接覆盖。
  • -i:若目标已存在,则询问是否覆盖。
  • -n:不覆盖已有文件。
  • -u:当原文件较新时才进行覆盖。
  • -v:显示复制的过程。

示例:

① 将 file1.txt 文件重命名为 file2.txt。

CODEzig
[root@ictstu ~]# mv file1.txt file2.txt

ictstu

② 将 file2.txt 文件移动到 /opt 目录中。

CODEzig
[root@ictstu ~]# mv file2.txt /opt/

ictstu

8. rm

rm 命令用于删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。rm 命令属于高危命令,没有一个工具能够 100% 恢复 rm 命令删除的文件,rm 命令删除文件时并不是把文件放到类似图形界面的”回收站”里,所以没有”撤销删除”操作可用。

语法:

CODEzig
rm [选项] [文件/目录名]

选项:

  • -d:仅删除无子文件的空目录。
  • -f:强制删除。
  • -i:删除文件前询问用户是否删除。
  • -r:递归删除。
  • -v:显示删除的过程。

示例:

① 删除 /opt 目录下的 file2.txt 文件。

CODEzig
[root@ictstu ~]# rm /opt/file2.txt

ictstu

② 强制删除 /root 目录下的 dir 目录。

CODEzig
[root@ictstu ~]# rm -fr /root/dir/

ictstu

9. cat

cat 命令用于读取文件的全部内容,或者将几个文件合并为一个文件,cat 命令适合查看内容较少的纯文本文件。

语法:

CODEzig
cat [选项] [文件名]

选项:

  • -b:显示行数,空行不计算。
  • -n:显示行数,空行计算。
  • -s:显示行数,多个空行计算为一个。

示例:

① cat 查看 /etc/passwd 文件的内容。

CODEzig
[root@ictstu ~]# cat /etc/passwd

ictstu

② cat 查看 /etc/passwd 文件的内容并显示行号。

CODEzig
[root@ictstu ~]# cat -b /etc/passwd

ictstu

10. head

head 命令用于显示文件开头的内容,默认为前 10 行。

语法:

CODEzig
head [选项] [文件名]

选项:

  • -n:设置显示的行数。
  • -c:设置显示头部内容的字符数。

示例:

① 使用 head 显示/etc/passwd 文件的前三行。

CODEzig
[root@ictstu ~]# head -n 3 /etc/passwd

ictstu

② 使用 head 显示/etc/passwd 文件除了最后 20 行以外的内容。

CODEzig
[root@ictstu ~]# head -n -20 /etc/passwd

ictstu

11. tail

tail 命令用于显示文件尾部的内容,默认为 10 行。

语法:

CODEzig
tail [选项] [文件名]

选项:

  • -f:循环读取。
  • -c:显示的字节数。
  • -n:设置显示的行数。

示例:

① 读取/etc/passwd 文件最后三行。

CODEzig
[root@ictstu ~]# tail -n 3 /etc/passwd

ictstu

12. more

more 命令用于分页显示文本文件的内容。而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more 命令从前向后读取文件,因此在启动时就加载整个文件。

语法:

CODEzig
more [选项] [文件名]

选项:

  • +n:从笫 n 行开始显示。
  • -n:定义屏幕大小为 n 行。

示例:

① 从第 10 行开始,分页显示/etc/passwd 的文本文件内容。

ictstu

13. less

less 命令用于读取内容,分屏显示,less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

语法:

CODEzig
less [选项] [文件名]

常用操作:

  • /字符串:向下搜索”字符串”的功能。
  • ?字符串:向上搜索”字符串”的功能。
  • 【Q】:退出 less 命令。
  • 【空格键】:滚动一页。
  • 【回车键】:滚动一行。

示例:

① 分页查看指定文件的内容。

CODEzig
[root@ictstu ~]# less /etc/passwd

ictstu

14. find

find 命令用来在指定目录下查找文件。其参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能。

语法:

CODEzig
find [路径] [选项] [条件]

选项:

  • -name:匹配文件名。
  • -user:匹配文件所属主。
  • -group:匹配文件所属组。
  • -nouser:匹配无所属主的文件。
  • -nogroup:匹配无所属组的文件。
  • -perm:匹配文件权限。
  • -type:匹配文件类型。
  • -size:匹配文件大小。
  • -newer:匹配比指定文件更新的文件。
  • -mtime:匹配最后修改文件内容时间。
  • -atime:匹配最后读取文件内容时间。
  • -ctime:匹配最后修改文件属性时间。
  • -prune:不搜索指定目录。
  • -exec…… ;:进一步处理搜索结果。

示例:

① 查找/etc 目录下名为 passwd 的文件。

CODEzig
[root@ictstu ~]# find /etc -name passwd

ictstu

② 查找/var/log/anaconda 目录中修改时间在 7 日以前的普通文件。

CODEzig
[root@ictstu ~]# find /var/log/anaconda -type f -mtime +7

ictstu

③ 查找/var/log 目录下文件后缀为”.log”的文件。

TERMINALbash
[root@ictstu ~]# find /var/log -name "*.log"

ictstu

15. locate

locate 命令可以快速的查找文件系统内是否有指定的文件。与 find 命令进行全局搜索不同,locate 命令是基于数据文件(/var/lib/locatedb)进行的定点查找,由于缩小了搜索范围,因此速度快很多,查找前需要先使用updatedb命令更新 locatedb 文件。

语法:

CODEzig
locate [选项] 文件名

选项:

  • -e:将排除在寻找的范围之外。
  • -f:将特定的文件排除在外。
  • -r:使用正规运算式做查找条件。
  • -o:指定文件的名称。
  • -d:指定文件的路径。

示例:

① 查找和 password 相关的所有文件。

CODEzig
[root@ictstu ~]# locate password

ictstu

② 查找/etc 目录下以 sh 开头的文件。

CODEzig
[root@ictstu ~]# locate /etc/sh

ictstu

16. which

which 命令在 PATH 所指定的目录中查找可执行文件。使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

语法:

CODEzig
which [选项] 命令名

选项:

  • -a:显示 PATH 变量中所有匹配的可执行文件。
  • —help:显示帮助信息。
  • -n:设置文件名长度(不含路径)。
  • -p:设置文件名长度(含路径)。

示例:

① 查找 mkdir 命令所在的位置。

CODEzig
[root@ictstu ~]# which mkdir

ictstu

② 查找多个命令的位置。

CODEzig
[root@ictstu ~]# which cp mv rm

ictstu

17. whereis

whereis 命令的功能是显示命令及相关文件的路径位置信息,可用于找到命令(二进制程序)、命令源代码、man 帮助手册等相关文件的路径位置信息。

语法:

CODEzig
whereis [选项] 命令名

选项:

  • -b:查找二进制程序或命令文件。
  • -s:仅查找源代码文件。
  • -m:查找 man 帮助手册文件。
  • -u:查找可执行文件、源代码及帮助文档。

示例:

① 查找 mkdir 命令所在的位置。

CODEzig
[root@ictstu ~]# whereis mkdir

ictstu

② 仅查找 man 命令程序文件所在的位置。

CODEzig
[root@ictstu ~]# whereis -b man

ictstu

③ 仅查找 man 命令帮助文件所在的位置。

CODEzig
[root@ictstu ~]# whereis -m man

ictstu

18. gzip

gzip 命令是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令。可以用来压缩大的、较少使用的文件以节省磁盘空间。据统计,gzip 命令对文本文件有 60%~70%的压缩率,文件经过 gzip 压缩过后,其名称后面会多出”.gz”的扩展名。

语法:

CODEzig
gzip [选项] 文件名

选项:

  • -d 或—decompress 或—uncompress:解开压缩文件。
  • -f 或—force:强行压缩文件,不理会文件名是否存在以及该文件是否为符号连接。
  • -l 或—list:列出压缩文件的相关信息。
  • -r 或—recursive:递归处理,将指定目录下的所有文件及子目录一并处理。
  • -v 或—verbose:显示指令执行过程。

示例:

① 将 anaconda-ks.cfg 文件进行压缩,压缩包默认以”原文件名.gz”保存到当前工作目录下,原文件会被自动删除。

CODEzig
[root@ictstu ~]# gzip anaconda-ks.cfg

ictstu

② 解压 anaconda-ks.cfg.gz 压缩包文件并显示解压过程,解压后的文件会保存在当前工作目录下,压缩包会被自动删除。

CODEzig
[root@ictstu ~]# gzip -dv anaconda-ks.cfg.gz

ictstu

③ 将 anaconda-ks.cfg 文件进行压缩,但是不删除原文件。

CODEzig
[root@ictstu ~]# gzip -k anaconda-ks.cfg

ictstu

19. tar

tar 命令的功能是压缩和解压缩文件,能够制作出 Linux 系统中常见的 tar、tar.gz、tar.bz2 等格式的压缩包文件。

语法:

CODEzig
tar [选项] 文件包名 文件或目录名

选项:

  • -A:添加文件到已存在的压缩包。
  • -c:创建新的压缩。
  • -x:从压缩包内提取文件。
  • -C:解压缩到指定目录。
  • -d:记录文件的差别。
  • -f:指定压缩包文件。
  • -j:使用 bzip2 压缩格式。
  • -z:使用 gzip 压缩格式。
  • -w:确认压缩包的完整性。
  • -v:显示执行过程详细信息。
  • -t:显示压缩包的内容。
  • -u:更新压缩包内的文件。
  • -m:保护文件不被覆盖。
  • -N:只将较新日期的文件保存到压缩包中。
  • -p:保留原来的文件权限与属性。
  • -P:使用绝对路径。
  • —exclude:排除指定的文件不压缩。
  • —remove-files:操作完成后删除源文件。

示例:

① 使用 gzip 压缩格式对/tmp 进行打包操作,显示压缩过程,压缩包规范后缀为.tar.gz。

CODEzig
[root@ictstu ~]# tar czvf tmp.tar.gz /tmp

ictstu

② 使用 bzip2 压缩格式对/tmp 目录进行打包操作,显示压缩过程,压缩包规范后缀为.tar.bz2。

CODEzig
[root@ictstu ~]# tar cjvf tmp.tar.bz2 /tmp

ictstu

③ 解压 tmp.tar.bz2 压缩包到/opt 目录。

CODEzig
[root@ictstu ~]# tar xjvf tmp.tar.bz2 -C /opt

ictstu

④ 查看 tmp.tar.gz 压缩包内文件信息(无须解压)。

CODEzig
[root@ictstu ~]# tar -tf tmp.tar.gz

ictstu

20. unzip

unzip 命令用于解压缩 zip 格式的文件,直接使用 unzip 命令解压缩文件后,压缩包内原有的文件会被提取并输出保存到当前工作目录下。

语法:

CODEzig
unzip [选项] 压缩包名

选项:

  • -d:解压缩文件到指定目录中。
  • -f:强制覆盖已有文件。
  • -n:解压缩时不覆盖已有文件。
  • -t 检查压缩包完整性。
  • -v 显示执行过程详细信息。

示例:

① 将 test.zip 压缩包文件解压到当前工作目录中。

CODEzig
[root@ictstu ~]# unzip test.zip

ictstu

21. ln

ln 命令来自英文单词 link 的缩写,中文译为”链接”,其功能是为某个文件在另外一个位置建立同步的链接。Linux 中有软链接和硬链接两种,ln 命令在不带参数的情况下,默认创建的是硬链接。

软链接(symbolic link)硬链接(hard link)
以路径形式存在,类似于 Windows 的快捷方式以文件副本形式存在,但不占用实际空间
删除源文件后链接失效删除源文件后无影响
可以对目录进行链接不可以对目录进行链接
可以跨文件系统不可以跨文件系统

语法:

CODEzig
ln [选项] 源文件名 目标文件名

选项:

  • -b:删除,覆盖以前建立的链接。
  • -d:允许超级用户制作目录的硬链接。
  • -f:强制执行。
  • -i:交互模式,文件存在则提示用户是否覆盖。
  • -n:把符号链接视为一般目录。
  • -s:软链接(符号链接)。
  • -v:显示执行过程详细信息。

示例:

① 为 anaconda-ks.cfg 文件创建快捷方式(默认为硬链接)。

CODEzig
[root@ictstu ~]# ln anaconda-ks.cfg link1.cfg

ictstu

② 为 anaconda-ks.cfg 文件创建快捷方式(设定为软链接形式)。

CODEzig
[root@ictstu ~]# ln -s anaconda-ks.cfg link2.cfg

ictstu

常用系统工作命令

1. echo

echo 命令的功能是在终端上输出指定字符串或变量提取后的值,也可以将输出的指定字符串内容同管道符一起传递给后续命令作为标准输入信息进行二次处理,还可以同输出重定向符一起操作,将信息直接写入文件。

语法:

CODEzig
echo [选项] 字符串/变量

选项:

  • -E:禁止反斜杠转义。
  • -n:结尾不输出转义符号。

示例:

① 向屏幕打印”ICTSTU”字样。

CODEzig
[root@ictstu ~]# echo ICTSTU

ictstu

② 向屏幕输出变量$PATH的值。

CODEzig
[root@ictstu ~]# echo $PATH

ictstu

2. date

date 命令用于显示或者设置系统的时间和日期,重启系统后设置的时间失效。

备注

输出的时间格式默认为:MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒的值。

语法:

CODEzig
date [选项] 对象

选项:

  • -s:设置系统时间。
  • -u:显示格林尼治时间。

常用的时间格式:

  • %b 或 %h:英文方式显示月份(例如:May)。
  • %d:月份中的第几天(例如:01)。
  • %D 或 %x:短格式显示日期(例如:05/24/25)。
  • %F:长格式显示日期(例如:2025-05-25)。
  • %g 或 %y:显示年份的最后两位(例如:25)。
  • %G 或 %Y:显示完整的年份(例如:2025)。
  • %H 或 %k:显示小时(0023 或 023)
  • %I 或 %l:显示十二小时制小时(0112 或 112)。
  • %j:显示一年当中的第几天(001~366)。
  • %m:显示月份(01~12)。
  • %M:显示分钟(00~59)。
  • %n:换行符。
  • %N:显示纳秒(000000000~999999999)。
  • %p 或 %P:十二小时制上下午标识(AM 或 PM,am 或 pm)。
  • %q:季度(1~4)。
  • %r 或 %X:使用十二小时制显示时间,精确到秒钟(例如:02:25
    AM)。
  • %R:使用二十四小时制显示时间,精确到分钟(例如:02
    )。
  • %s:显示自 1970-01-01 00
    UTC 距今多少秒(例如:1748111338)。
  • %S:显示秒钟(00~60)。
  • %t:制表符。
  • %T:显示二十四小时制时间,精确到秒钟。(例如:02:31
    )。
  • %u:显示星期(1~7)1 表示星期一。
  • %U:显示一年当中的第几个星期,周日为每周第一天(00~53)。
  • %V 或 %W:显示一年当中的第几个星期,周一为每周第一天(00~53)。
  • %w:显示星期(0~6)0 表示星期日。
  • %z:使用数字形式显示时区(例如:+0800)。
  • %
    :使用数字形式显示时区(例如:+08
    )。
  • %::z:使用数字形式显示时区(例如:+08:00
    )。
  • %:::z:使用数字形式显示时区(例如:+08)。
  • %Z:使用字母缩写显示时区(例如:CTS)。

示例:

① 输出系统当前的时间。

CODEzig
[root@ictstu ~]# date

ictstu

② 按照”年-月-日”格式输出系统当前日期。

CODEzig
[root@ictstu ~]# date "+%Y-%m-%d"

ictstu

③ 设置当前系统的时间为”2025 年 6 月 6 日 8:30

”。

CODEzig
[root@ictstu ~]# date -s "20250606 8:30:00"

ictstu

3. timedatectl

timedatectl 命令用于显示和设置系统时间和日期,使用 timedatectl 设置的时间将会写入系统配置文件,重启系统后仍然生效。

语法:

CODEzig
timedatectl [选项] 对象

选项:

  • list-timezones:显示已知时区信息。
  • status:显示当前时间状态。
  • set-time TIME:设置系统时间。
  • set-local-rtc 0:设置硬件始终为 UTC 时间。
  • set-timezone ZONE:设置系统时区。
  • set-local-rtc 1:设置硬件始终为本地时间。
  • set-ntp (true/false):开启或关闭 NTP 时间服务器同步功能。

示例:

① 查看系统当前的时间日期等信息。

CODEzig
[root@ictstu ~]# timedatectl status

ictstu

② 将系统的时间设置为 9

CODEzig
[root@ictstu ~]# timedatectl set-time "9:18"

ictstu

③ 将系统的时区设置为 America/Edmonton。

CODEzig
[root@ictstu ~]# timedatectl set-timezone America/Edmonton

ictstu

4. wget

wget 命令用于从指定网址下载文件,支持 http、https、ftp 等协议,支持断开重连。

语法:

CODEzig
wget [选项] 网址

选项:

  • -4:基于 IPv4 网络协议。
  • -6:基于 IPv6 网络协议。
  • -r:递归处理所有子文件。
  • -t:设置最大尝试次数。
  • -b:启动后转入后台执行。
  • -T:设置最长等待时间。
  • -c:支持断点续传。
  • -v:显示执行过程详细信息。
  • -w:设置等待间隔(秒)。
  • -N:只获取比本地更新的文件。
  • -O:设置本地文件名。
  • —limit-rate:限制下载速度。
  • —spider:仅检查文件是否存在。

示例:

① 下载 openEuler 的镜像文件到本地。

CODEzig
[root@ictstu ~]# wget https://mirror.nyist.edu.cn/openeuler/openEuler-24.03-LTS-SP1/ISO/x86_64/openEuler-24.03-LTS-SP1-x86_64-dvd.iso

ictstu

② 下载 openEuler 的镜像文件到本地并重命名为 openEuler.iso。

CODEzig
[root@ictstu ~]# wget -O openEuler.iso https://mirror.nyist.edu.cn/openeuler/openEuler-24.03-LTS-SP1/ISO/x86_64/openEuler-24.03-LTS-SP1-x86_64-dvd.iso

ictstu

③ 下载 openEuler 的镜像文件到本地,并限制下载速度为 512kbit/s。

CODEzig
[root@ictstu ~]# wget --limit-rate=512 https://mirror.nyist.edu.cn/openeuler/openEuler-24.03-LTS-SP1/ISO/x86_64/openEuler-24.03-LTS-SP1-x86_64-dvd.iso

ictstu

5. ps

ps 命令用于静态显示当前系统的进程状态。可以查看到进程的所有信息,例如进程的 ID、发起者、系统资源(处理器与内存)使用占比、运行状态等。

语法:

CODEzig
ps [选项]

选项:

  • -a:显示所有的进程信息。
  • -u:使用用户为主的格式来显示程序状态。
  • -x:不区分终端主机。
  • -e:显示环境变量信息。
  • -f:用 ASCII 字符显示树状结构。
  • -o:用户自定义格式。

回显信息:

USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
进程所有者进程 IDCPU 占用率内存占用率虚拟内存使用率占用的固定内存所在终端进程状态启动时间CPU 占用时间执行的命令与选项

进程状态:

  • R:运行,进程正常运行中或者在运行队列中等待。
  • S:中断,进程处于休眠状态。
  • D:不可中断,进程不响应系统异步信号,无法使用 kill 命令中断。
  • Z:僵尸进程,进程已经停止,但是进程描述依然存在。
  • T:停止,进程收到停止信号后停止运行。

示例:

① 详细显示系统中全部的进程信息(快速排查内存、CPU 占用问题)。

CODEzig
[root@ictstu ~]# ps aux

ictstu

② 详细显示系统中全部的进程信息(分析进程层次结构或进程启动链)。

CODEzig
[root@ictstu ~]# ps -ef

ictstu

6. pstree

pstree 命令用于以树状图显示进程信息。

语法:

CODEzig
pstree [选项]

选项:

  • -a:显示完整信息。
  • -A:使用 ASCII 字符绘制树。
  • -g:显示进程组 ID。
  • -n:依据 PID 排序上下级进程。
  • -s:显示指定进程的父进程。
  • -p:显示进程号码。
  • -u:显示用户名。
  • -U:使用 UTF-8 线条绘制字符。

示例:

① 显示所有进程的信息。

CODEzig
[root@ictstu ~]# pstree -a

ictstu

② 显示所有进程的信息,带进程号。

CODEzig
[root@ictstu ~]# pstree -p

ictstu

7. top

top 命令用于动态显示系统的运行状态,包括 CPU、内存、进程等信息,类似于 Windows 的任务管理器。

语法:

CODEzig
top [选项]

选项:

  • -a:按内存使用情况排序。
  • -d:设置显示的更新速度。
  • -p:仅显示指定进程 ID。
  • -u:仅显示与指定用户 ID。
  • -M:显示内存单位。
  • -n:设置显示的总次数,完成后自动退出。

回显信息

ictstu

第一行:系统的一般信息。

  • 02:15
    :系统当前时间。
  • up 16 days, 5
    :系统开机以后运行的总时长。
  • 2 users:登录的用户数。
  • load average: 0.04, 0.01, 0.00:系统负载,分别表示 1 分钟、5 分钟、15 分钟的平均负载。

第二行:任务进程信息。

  • Tasks: 612 total:系统全部进程的数量。
  • 1 running:运行中的进程数量。
  • 611 sleeping:睡眠状态的进程数量。
  • 0 stopped:停止状态的进程数量。
  • 0 zombie:僵尸进程数量。

第三行:CPU 信息。

  • us:用户空间占用。
  • sy:内核空间占用。
  • ni:已经调整优先级的用户进程占用。
  • id:空闲,数值越低说明使用率越高。
  • wa:等待 IO 完成的占比。
  • hi:处理硬件中断的占用。
  • si:处理软中断占用。
  • st:虚拟机占用。

第四行:内存信息。

  • total:物理内存总量。
  • free:空闲内存总量。
  • used:使用中内存总量。
  • buff/cache:用户内核缓存的内存量。

第五行:交换分区信息。

  • total:交换分区总量。
  • free:空闲交换分区总量。
  • used:使用中交换分区总量。
  • avail Mem:可用交换分区总量。

进程区信息

PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND
进程号运行进程的用户优先级nice 值,-20~19,数值越小优先级越高占用虚拟内存占用真实内存共享内存大小进程状态占用 CPU 百分比占用内存百分比启动后占用总运行时间命令名

进程状态

  • R:运行。
  • S:睡眠。
  • D:不可中断的睡眠状态。
  • T:停止/跟踪。
  • Z:僵尸进程。

示例:

① 动态显示所有进程信息。

CODEzig
[root@ictstu ~]# top

ictstu

② 动态显示所有进程信息,每隔 5 秒钟刷新一次。

CODEzig
[root@ictstu ~]# top -d 5

ictstu

8. nice

nice 命令用于调整进程的优先级,合理分配系统的资源。优先级范围为-20~19,数字越小,优先级越高。nice 仅用于启动新进程,若需调整已运行进程的优先级,需使用 renice。

语法:

CODEzig
nice [选项] 命令或脚本

选项:

  • -g:匹配进程组 ID。
  • -n:设置优先级别。
  • -p:匹配进程 ID。
  • -u:匹配用户 ID。

示例:

① 以优先级为 -5 运行一个下载 openEuler 镜像的任务。

CODEzig
[root@ictstu ~]# nice -n 5 wget -b https://mirror.nyist.edu.cn/openeuler/openEuler-24.03-LTS-SP1/ISO/x86_64/openEuler-24.03-LTS-SP1-x86_64-dvd.iso

ictstu

② 将进程 PID 为 27874 的优先级调整为 10。

CODEzig
[root@ictstu ~]# renice -n 10 -p 27874

ictstu

9. kill

kill 命令用于结束进程。

语法:

CODEzig
kill [选项] 进程号

选项:

  • -a:不限制命令名与进程号的对应关系。
  • -p:不发送任何信号。
  • -l:显示系统支持的信号列表。
  • -s:设置向进程发送的信号。

信号列表:

信号代码信号名称说明
1SIGHUP让进程立即关闭,然后重新读取配置文件之后重启。
2SIGINT程序终止信号,用于终止前台进程,相当于快捷键【Ctrl+C】。
8SIGFPE在发生致命的算术运算错误时发出。
9SIGKILL用来立即结束程序的运行,一般用于强制终止进程。
14SIGALRM时钟定时信号。
15SIGETRM正常结束进程的信号,默认信号。
18SIGCONT可以让暂停的进程恢复执行,不能被阻断。
19SIGSTOP可以暂停前台进程,相当于快捷键【Ctrl+Z】,不能被阻断。

示例:

① 重启进程 27902。

CODEzig
[root@ictstu ~]# kill 1 27902

ictstu

② 强制终止进程 27935。

CODEzig
[root@ictstu ~]# kill 9 27935

ictstu

10. killall

killall 命令用于基于服务名关闭一组进程。

语法:

CODEzig
killall [选项] 服务名

选项:

  • -i:交互式,询问是否要结束某个进程。
  • -I:忽略进程名的大小写。
  • u:结束指定用户的进程。

示例:

① 结束指定 wget 服务所对应的全部进程。

CODEzig
[root@ictstu ~]# killall wget

ictstu

11. pkill

pkill 命令用于根据进程名称结束指定进程。与 killall 命令很相似,pkill 适用于需要灵活筛选(如部分匹配、按用户 / 终端筛选)时使用。

语法:

CODEzig
pkill [选项] 进程名

选项:

  • -c:按照进程 ID 结束进程。
  • -g:按照进程组结束进程。
  • -P:按照父进程 ID 结束进程。
  • -t:按照终端号踢出用户。
  • -u:按照用户 ID 结束进程。
  • -v:反向选择。

示例:

① 强制结束从虚拟 pts/0 虚拟终端登录的进程。

CODEzig
[root@ictstu ~]# pkill -t -9 pts/0

ictstu

12. pidof

pidof 命令用于查找服务进程的 PID 号码。

语法:

CODEzig
pidof [选项] 服务名

选项:

  • -c:仅显示同一根目录的进程 PID 值。
  • -o:忽略指定 PID 的进程。
  • -s:仅显示一个进程 PID。
  • -x:显示指定运行脚本的进程 PID。

示例:

① 显示 sshd 服务的进程 ID。

CODEzig
[root@ictstu ~]# pidof sshd

ictstu

系统状态检测命令

1. ifconfig

ifconfig 命令用于显示或设置网络设备参数信息,在 Windows 系统中是ipconfig命令,如果没有该命令则需要安装”net-tools”软件包。使用 ifconfig 命令配置的网络参数一般会在系统重启后失效,因此不建议使用该命令配置网络参数。

语法:

CODEzig
ifconfig [选项] [网卡名] [动作]

选项:

  • -a:显示所有网卡状态。
  • -v:显示执行过程的详细信息。
  • -s:显示简短状态列表。

动作:

  • add:设置网络设备的 IP 地址。
  • down:关闭指定的网络设备。
  • del:删除指定的网络设备。
  • up:启动指定的网络设备。

示例:

① 显示系统所有的网络设备信息。

CODEzig
[root@ictstu ~]# ifconfig

ictstu

② 显示名为 enp1s0 的网络设备的信息。

CODEzig
[root@ictstu ~]# ifconfig enp1s0

ictstu

2. uname

uname 命令用于查看系统主机名、内核及硬件架构等信息。

语法:

CODEzig
uname [选项]

选项:

  • -a:显示所有信息。
  • -i:显示硬件平台。
  • -m:显示硬件架构。
  • -n:显示主机名。
  • -o:显示操作系统名称。
  • -r:显示内核发行版本号。

示例:

① 查看系统内核名称。

CODEzig
[root@ictstu ~]# uname

ictstu

② 查看系统所有信息。

CODEzig
[root@ictstu ~]# uname -a

ictstu

3. uptime

uptime 命令用于查看系统负载情况,能够显示系统已经运行了多长时间、当前登入用户的数量,以及过去 1 分钟、5 分钟、15 分钟内的负载信息。

语法:

CODEzig
uptime [选项]

选项:

  • -p:以易读的方式显示。
  • -s:显示本次开机时间。

示例:

① 查看当前系统的负载情况。

CODEzig
[root@ictstu ~]# uptime

ictstu

② 显示系统本次的开机时间。

CODEzig
[root@ictstu ~]# uptime -s

ictstu

4. free

free 命令用于显示系统内存使用情况,包含物理内存和交换内存的总量、使用量、空闲量情况。

语法:

CODEzig
free [选项]

选项:

  • -h:以易读模式显示。
  • -b:设置显示单位为 B。
  • -g:设置显示单位为 GB。
  • -k:设置显示单位为 KB。
  • -m:设置显示单位为 MB。
  • -s:持续显示内存信息。
  • -t:显示使用的内存总和。

示例:

① 以易读模式显示当前系统使用的内存信息。

CODEzig
[root@ictstu ~]# free -h

ictstu

② 以易读模式显示当前系统使用的内存信息,并显示内存总和。

CODEzig
[root@ictstu ~]# free -ht

ictstu

③ 持续显示当前系统使用的内存信息,每隔 3 秒刷新一次。

CODEzig
[root@ictstu ~]# free -s 3

ictstu