Linux实操
约 4419 字大约 15 分钟
2026-01-14
各类小技巧
强制退出
在终端中,使用 Ctrl + C 可以强制退出当前正在运行的程序。
退出或登出
在终端中,使用 Ctrl + D 可以退出当前登录的用户会话。不能用于退出 vi/vim。
历史命令搜索
- 在终端中,使用
history可以查看之前执行的命令历史记录。 - 可以使用
Ctrl + R来进行历史命令搜索。输入部分命令,终端会显示匹配的历史命令。 - 可以通过
!加上命令编号来执行历史记录中的命令。例如,!123可以执行第 123 条命令;!ls可以执行最近一次执行的 ls 命令。
光标移动
- 使用
Ctrl + A可以将光标移动到命令行的开头; - 使用
Ctrl + E可以将光标移动到命令行的结尾。 - 使用
Ctrl + F可以将光标向右移动一个字符; - 使用
Ctrl + B可以将光标向左移动一个字符。 - 使用
Ctrl + 键盘左键可以将光标向左移动一个单词; - 使用
Ctrl + 键盘右键可以将光标向右移动一个单词。 - ...
清空屏幕
- 使用
Ctrl + L可以清空屏幕。 - 使用
clear命令也可以清空屏幕。
软件安装
yum 命令
yum:RPM 包管理器,用于自动化安装配置 Linux 软件,并自动处理软件之间的依赖关系。
yum [-y] [install | remove | search] 软件包名-y:自动回答 yes,无需确认。install:安装软件包。remove:移除软件包。search:搜索软件包。
yum 命令需要 root 权限才能执行。可以使用 su 命令切换到 root 用户,或者在命令前加上 sudo。
apt 命令
apt:用于自动化安装配置 Linux 软件,并自动处理软件之间的依赖关系。
CentOS 使用 yum 命令,Debian/Ubuntu 使用 apt 命令。
apt [-y] [install | remove | search] 软件包名-y:自动回答 yes,无需确认。install:安装软件包。remove:移除软件包。search:搜索软件包。
apt 命令需要 root 权限才能执行。可以使用 su 命令切换到 root 用户,或者在命令前加上 sudo。
systemctl 命令
systemctl:用于管理 Linux 系统的服务和进程。
Linux 系统很多软件(内置或第三方)均支持使用 systemctl 命令控制:启动、停止、开机自启,能够被 systemctl 管理的软件,一般也称之为:服务
systemctl [start | stop | restart | status | enable | disable] 服务名start:启动服务。stop:停止服务。restart:重启服务。status:查看服务状态。enable:开机自启服务。disable:取消开机自启服务。
系统内置的服务比较多,文件路径一般在 /etc/systemd/system/ 目录下,比如:
NetworkManager:网络管理服务。network:网络服务。sshd:SSH 服务。firewalld:防火墙服务。- ...
In 命令软连接
在 Linux 系统中,使用 ln 命令可以创建软连接(symbolic link)。软连接是一种特殊的文件,它指向另一个文件或目录。
类似于 Windows 系统中的快捷方式。
ln -s 目标文件 软连接文件-s:创建软连接。目标文件:要创建软连接的目标文件或目录。软连接文件:创建的软连接文件或目录。
软连接的优势在于可以方便地切换不同版本的软件,而不需要修改系统环境变量。
日期、时区
date 命令
date 命令用于显示或设置系统日期和时间。
date [-d] [+格式]- 格式:用于指定日期和时间的显示格式。
%Y:四位数的年份(例如:2023)。%y:两位数的年份(例如:23)。%m:两位数的月份(01-12)。%d:两位数的日期(01-31)。%H:24 小时制的小时数(00-23)。%M:分钟数(00-59)。%S:秒数(00-59)。%s:从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的秒数。
例如,要显示当前日期和时间,执行以下命令:
date要显示当前日期,执行以下命令:
date "+%Y-%m-%d %H:%M:%S"
-d:用于指定要显示或设置的日期和时间,一般用于计算未来或过去的时间。+/-number day:表示未来或过去的天数。+/-number month:表示未来或过去的月数。+/-number year:表示未来或过去的年数。+/-number hour:表示未来或过去的小时数。+/-number minute:表示未来或过去的分钟数。+/-number second:表示未来或过去的秒数。- 可以和格式化字符串配合使用
# 显示未来 1 天的日期
date -d "+1 day" "+%Y-%m-%d %H:%M:%S"时区
时区是指地球上不同区域的时间差异。在 Linux 系统中,时区信息存储在 /etc/localtime 文件中。
可以使用 timedatectl 命令来查看和设置时区。
timedatectl要设置时区为东八区(北京时间),执行以下命令:
timedatectl set-timezone Asia/Shanghai
ntp 程序
ntp:网络时间协议(Network Time Protocol),用于同步系统时间与网络时间服务器的时间。
ntp 程序需要 root 权限才能执行。可以使用 su 命令切换到 root 用户,或者在命令前加上 sudo。
ntpdate -u 时间服务器地址-u:使用 UDP 协议进行时间同步。时间服务器地址:要同步时间的网络时间服务器地址。
例如,要将系统时间同步到 ntp 时间服务器 ntp.aliyun.com,执行以下命令:
# 安装 ntp 程序
yum -y install ntp
# 启动 ntp 服务
systemctl start ntpd
# 同步时间
ntpdate -u ntp.aliyun.com
IP 地址
查看 IP 地址
可以使用 ip addr 命令查看系统的 IP 地址。
ip addr
主机名
主机名是用于标识系统的名称,一般在 /etc/hostname 文件中配置。
- 查看
hostname- 修改
hostnamectl set-hostname 新主机名重新登录后生效。
网络传输
ping 命令
ping 命令用于测试与目标主机的网络连接是否正常。
ping [-c 次数] 目标主机地址-c 次数:指定 ping 命令发送的次数。目标主机地址:要测试连接的目标主机的 IP 地址或域名。

wget 命令
wget 命令用于从网络上下载文件。
wget [-b] 下载链接-b:后台下载,下载完成后在后台继续执行其他命令。下载链接:要下载的文件的链接。
可以使用 tail -f wget-log 命令查看下载进度。
注意:无论是否下载完成,wget 命令都会在当前目录下生成一个与下载链接同名的文件。如果下载未完成,请及时清理未完成的不可用文件。
curl 命令
curl 命令用于从网络上获取数据。
curl [-o 输出文件] 下载链接-o 输出文件:指定将下载的数据保存到的文件路径。下载链接:要获取数据的链接。

端口
端口是用于标识网络上不同应用程序或服务的数字。每个端口都有一个唯一的编号,范围从 0 到 65535。
端口分为两大类:物理端口和逻辑端口。
- 物理端口:直接连接到计算机的端口,如 USB 端口、以太网端口等。
- 逻辑端口:用于应用程序或服务的端口,如 HTTP(80)、HTTPS(443)、FTP(21)等。
端口分为 3 类:
- 知名端口(Well-known ports):范围从 0 到 1023。这些端口被预定义为特定的服务,如 HTTP(80)、HTTPS(443)、FTP(21)等。
- 注册端口(Registered ports):范围从 1024 到 49151。这些端口可以用于自定义服务或应用程序。
- 动态或私有端口(Dynamic or private ports):范围从 49152 到 65535。这些端口通常用于临时或私有用途。
nmap 命令
nmap:网络映射器(Network Mapper),用于扫描网络上的主机和端口。
使用 nmap 命令,安装:yum -y install nmap
nmap -sT -Pn 目标主机地址-sT:使用 TCP 扫描模式。-Pn:禁用主机发现,直接扫描目标主机。目标主机地址:要扫描的目标主机的 IP 地址或域名。

netstat 命令
netstat:网络统计工具(Network Statistics Tool),用于显示网络连接、路由表和网络接口等信息。
使用 netstat 命令,安装:yum -y install net-tools
netstat -anp-a:显示所有端口,包括监听和非监听端口。-t:显示 TCP 端口。-u:显示 UDP 端口。-l:显示监听端口。-n:以数字形式显示端口号。
结合管道符和 grep 命令,筛选出监听端口。
netstat -anp | grep 6000
进程管理
程序运行时,会占用系统资源,如 CPU、内存、磁盘等。可以使用进程管理工具来查看、管理和监控系统中的进程。
ps 命令
ps:进程状态(Process Status),用于查看当前系统中的进程信息。
ps [-e -f]
ps -ef | grep 进程名-e:显示所有进程。-f:显示详细信息,包括用户名、进程 ID、CPU 占用率、内存占用率、启动时间、命令等。

- UID:进程所属用户的 ID。
- PID:进程 ID。
- PPID:父进程 ID。
- C:CPU 占用率。
- STIME:进程启动时间。
- TTY:进程所属的终端设备。
- TIME:进程占用的 CPU 时间。
- CMD:进程的命令名称。
kill 命令
kill:终止进程(Kill Process),用于终止指定的进程。
kill [-9] 进程ID-9:强制终止进程,不等待进程结束。进程ID:要终止的进程的 ID。
例如,要终止进程 ID 为 1234 的进程,执行以下命令:
kill 1234top 命令
top:实时进程监控工具(Top Process Monitor),用于动态查看系统中的进程信息。
默认每 3 秒刷新一次,按 q 键退出。
top [选项]-d:指定刷新时间,单位为秒。默认值为 3 秒。-n:指定刷新次数。默认值为 1 次。-p:指定要监控的进程 ID。默认值为所有进程。-c:显示进程的命令名称,而不是完整的命令路径。-b:以批处理模式运行 top,不显示交互界面。-i:显示所有进程,包括空闲进程。-u:指定要监控的用户。默认值为所有用户。

- PID:进程 ID。
- USER:进程所属用户。
- PR:进程优先级。
- NI:进程 Nice 值。
- VIRT:进程虚拟内存占用量。
- RES:进程实际内存占用量。
- SHR:进程共享内存占用量。
- S:进程状态(S 表示睡眠,R 表示运行)。
- %CPU:进程占用的 CPU 占用率。
- %MEM:进程占用的内存占用率。
- TIME+:进程占用的 CPU 时间。
- COMMAND:进程的命令名称。
top - 22:24:47 up 21:47, 2 users, load average: 0.00, 0.01, 0.05
top:命令名称,22:24:47:系统时间,up 21:47:系统运行时间,2 users: 2 个用户登录,load average: 0.00, 0.01, 0.05 系统负载
Tasks: 195 total, 1 running, 194 sleeping, 0 stopped, 0 zombie
195 个进程,1 个运行中进程,194 个睡眠进程,0 个停止进程,0 个僵尸进程
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu(s):CPU 使用率,us:用户 CPU 使用率,sy:系统 CPU 使用率,ni:高优先级进程占用 CPU 时间百分比,id:空闲 CPU 率,wa:IO 等待 CPU 占用率,hi:CPU 硬件中断率,si:CPU 软件中断率,st:强制等待占用 CPU 率
KiB Mem : 995896 total, 131772 free, 485152 used, 378972 buff/cache
Kib Mem:物理内存,total:总量,free:空闲,used:使用,buff/cache:buff 和 cache 占用
KiB Swap: 2098172 total, 1816828 free, 281344 used. 263828 avail Mem
KibSwap:虚拟内存(交换空间),total:总量,free:空闲,used:使用,buff/cache:buff 和 cache 占用
磁盘信息监控
df 命令
df:磁盘空间(Disk Free),用于显示文件系统的磁盘空间使用情况。
df [-h]-h:以人类可读的格式显示磁盘空间使用情况。

- 文件系统:文件系统的类型。
- 大小:文件系统的总大小。
- 已用:文件系统已使用的空间。
- 可用:文件系统可用的空间。
- 已用%:文件系统已使用空间的百分比。
- 挂载点:文件系统挂载的目录。
iostat 命令
iostat:I/O 统计(I/O Statistics),用于显示系统的 I/O 统计信息。
iostat [-d] [-h] [-n] [-p] [-t] [-x] [interval [count]]-d:显示设备 I/O 统计信息。-h:以人类可读的格式显示统计信息。-n:不显示设备名称。-p:显示设备分区 I/O 统计信息。-t:显示时间戳。-x:显示扩展统计信息。interval:刷新时间间隔,单位为秒。默认值为 1 秒。count:刷新次数。默认值为无穷大。

网络状态监控
sar 命令
sar:系统活动报告(System Activity Reporter),用于收集和报告系统的活动信息。
sar [-A] [-d] [-n] [-u] [interval [count]]
# 显示网络设备统计信息,刷新时间间隔为 3 秒,刷新次数为 2 次
sar -n DEV 3 2-A:显示所有报告。-d:显示设备 I/O 统计信息。-n:显示网络统计信息。-u:显示 CPU 统计信息。interval:刷新时间间隔,单位为秒。默认值为 1 秒。count:刷新次数。默认值为无穷大。

环境变量
环境变量是在操作系统中定义的一些变量,用于存储系统配置信息或用户自定义的信息。
在 Linux 系统中执行env命令可以查看当前环境变量。
环境变量是一种 KeyValue 型结构,即名称和值

问:为什么在任何目录都能执行/usr/bin/cd 这个程序?
# 查看环境变量中是否有 PATH 变量
env | grep PATH
[root@centos ~]# env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin因为在环境变量中定义了 PATH 变量,它的值是一个冒号分隔的目录列表。当执行一个程序时,系统会在 PATH 变量中定义的目录中查找该程序。如果找到,就执行该程序;如果没有找到,就报错。所以在/usr/bin 目录搜索到了 cd 命令,并执行。
$符号
$ 符号用于引用环境变量的值。
例如,要引用 PATH 变量的值,执行以下命令:
echo $PATH
# 引用 PATH 变量的值,并在其后添加 ABC
echo ${PATH}ABC设置环境变量
可以使用 export 命令设置环境变量。
export 变量名=值例如,要设置 PATH 变量的值为 /usr/local/bin:/usr/bin:/bin,执行以下命令:
export PATH=/usr/local/bin:/usr/bin:/bin设置环境变量后,当前会话中生效。如果要使设置永久生效,需要将设置添加到 ~/.bashrc 文件中。
例如,要将 PATH 变量永久设置为 /usr/local/bin:/usr/bin:/bin,执行以下命令:
echo 'export PATH=/usr/local/bin:/usr/bin:/bin' >> ~/.bashrc针对所有用户生效,需要将设置添加到 /etc/profile 文件中。
重新登录后生效。
上传、下载
rz 命令
rz:上传文件(Receive Zmodem),用于从本地计算机上传文件到远程计算机。
rz执行该命令后,会弹出文件选择对话框,选择要上传的文件。

sz 命令
sz:下载文件(Send Zmodem),用于从远程计算机下载文件到本地计算机。
sz 文件名例如,要下载远程计算机上的文件 test.txt,执行以下命令:
sz test.txt执行该命令后,会弹出文件保存对话框,选择要保存的本地目录。

压缩、解压
tar 命令
tar:磁带归档(Tape Archive),用于将多个文件或目录打包成一个文件,或者从打包文件中提取文件。
tar [-czvf] 打包文件名 要打包的文件或目录
tar [-xzvf] 打包文件名-c:创建打包文件。-z:使用 gzip 压缩打包文件。-v:显示详细信息。-f:指定打包文件名。-x:从打包文件中提取文件。-C:指定提取文件的目录。
常见压缩组合:
-cvf:创建打包文件。
tar -cvf test.tar 1.txt 2.txt-zcvf:创建压缩打包文件。
tar -zcvf test.tar.gz 1.txt 2.txtz 选项一般使用的话,会处于第一位,f 选项必须在最后一位。
常见解压组合:
-xvf:从打包文件中提取文件。
tar -xvf test.tar-zxvf:从压缩打包文件中提取文件。
tar -zxvf test.tar.gz -C /tmpf 选项一般使用的话,会处于最后一位。z 选项一般使用的话,会处于第一位。C 选项单独使用,和解压参数分开。
zip 命令
zip:压缩文件(Zip File),用于将多个文件或目录压缩成一个文件。
zip [-r] 压缩文件名 要压缩的文件或目录-r:递归压缩子目录。压缩文件名:指定压缩后的文件名。要压缩的文件或目录:要压缩的文件或目录。
例如,要压缩当前目录下的所有文件和子目录,执行以下命令:
zip -r test.zip .unzip 命令
unzip:解压文件(Unzip File),用于将压缩文件解压到当前目录。
unzip [-d] 压缩文件名-d:指定解压目录。压缩文件名:要解压的压缩文件名。
例如,要解压当前目录下的 test.zip 文件,执行以下命令:
unzip test.zip
unzip test.zip -d /tmp