跳转至

Linux 常用命令

在服务器管理中,Linux 系统常用命令的熟练掌握是至关重要的。为了全面涵盖各个方面的操作,以下内容将以更加详细的方式介绍 Linux 服务器中的常用命令,包括文件操作、系统监控、进程管理、网络配置、安全管理等。


1. 系统信息与性能监控

1.1 uname - 查看操作系统信息

uname [选项]

常用选项: - uname -a:显示所有系统信息(包括内核版本、主机名、硬件架构等)。 - uname -r:显示当前内核版本。

1.2 uptime - 查看系统运行时间和负载

uptime

显示系统的当前时间、运行时间、当前登录的用户数,以及最近 1、5、15 分钟的系统平均负载。

1.3 top - 实时查看系统资源使用情况

top

主要信息

  • PID:进程 ID。
  • USER:运行进程的用户。
  • PR:优先级。
  • %CPU:CPU 使用率。
  • %MEM:内存使用率。

q 退出,h 查看帮助,k 杀掉某个进程。

1.4 htop - 更友好的实时监控工具(需安装)

htop

htoptop 更直观,支持上下滚动和更丰富的进程信息展示。它提供图形化 CPU 和内存利用率。

1.5 free - 查看内存使用情况

free [选项]
  • free -h:以人类可读的格式显示内存使用情况,显示已用、可用、缓存内存等信息。

1.6 df - 查看磁盘空间使用情况

df [选项]
  • df -h:以人类可读的格式显示每个分区的使用情况(单位为 GB/MB)。
  • df -T:显示每个分区的文件系统类型。

1.7 du - 查看目录或文件的大小

du [选项] [路径]
  • du -sh /var/log:显示 /var/log 目录的总大小。
  • du -h --max-depth=1 /:显示根目录下每个一级子目录的大小。

1.8 iostat - 显示磁盘 I/O 统计(需安装 sysstat

iostat [选项]
  • iostat:显示每个设备的 CPU 使用情况和 I/O 统计。
  • iostat -x:显示详细的设备 I/O 统计信息。

1.9 vmstat - 系统性能监控

vmstat [时间间隔] [次数]
  • vmstat 1 5:每秒刷新一次,共输出 5 次系统的内存、CPU、I/O 等情况。

1.10 sar - 系统性能历史记录(需安装 sysstat

sar [选项] [时间间隔] [次数]
  • sar -u 1 3:每秒显示一次 CPU 使用情况,显示 3 次。
  • sar -r 1 3:每秒显示一次内存使用情况,显示 3 次。

2. 文件与目录操作

2.1 ls - 列出目录内容

ls [选项] [目录]

常用选项: - ls:列出当前目录的内容。 - ls -l:以详细列表模式显示文件信息(包括权限、所有者、大小、修改时间等)。 - ls -a:显示所有文件,包括隐藏文件(以 . 开头)。 - ls -h:以人类可读的方式显示文件大小。

2.2 cd - 切换目录

cd [目录]
  • cd /path/to/directory:切换到指定目录。
  • cd ~:切换到用户的主目录。
  • cd -:切换到上一次所在的目录。

2.3 pwd - 显示当前所在目录

pwd

显示当前工作目录的绝对路径。

2.4 cp - 复制文件或目录

cp [选项] 源文件 目标路径

常用选项: - cp file1 /path/to/destination/:复制文件 file1 到目标路径。 - cp -r dir1 /path/to/destination/:递归复制目录 dir1 及其内容。

2.5 mv - 移动或重命名文件

mv [选项] 源文件 目标路径

常用操作: - mv file1 /path/to/destination/:将文件 file1 移动到目标路径。 - mv file1 file2:将 file1 重命名为 file2

2.6 rm - 删除文件或目录

rm [选项] 文件名

常用选项: - rm file1:删除文件 file1。 - rm -r dir1:递归删除目录 dir1 及其内容。 - rm -i:删除前提示确认。

2.7 mkdir - 创建新目录

mkdir [选项] 目录名
  • mkdir newdir:创建目录 newdir
  • mkdir -p /path/to/newdir:递归创建目录,包括必要的父目录。

2.8 touch - 创建空文件或更新文件时间戳

touch 文件名
  • touch newfile:创建一个新的空文件 newfile
  • touch -t 202309251200 file:将 file 的时间戳设置为 2023年09月25日12时00分。

2.9 find - 查找文件或目录

find [路径] [选项] [搜索条件]

常用示例: - find /home -name "*.log":在 /home 目录下查找所有 .log 文件。 - find / -type d -name "test":查找名为 test 的目录。 - find /var/log -mtime -7:查找过去 7 天内修改过的文件。

2.10 locate - 快速查找文件(需安装)

locate 文件名
  • locate filename:快速查找文件 filename,其基于预先生成的数据库。

3. 权限管理

3.1 chmod - 修改文件权限

chmod [权限] 文件名
  • chmod 755 script.sh:为文件 script.sh 设置 rwxr-xr-x 权限。
  • chmod +x script.sh:为文件 script.sh 添加执行权限。

3.2 chown - 修改文件所有者

chown [选项] 所有者:用户组 文件名
  • chown user1:group1 file1:将 file1 的所有者改为 user1,所属组改为 group1
  • chown -R user1:group1 /path/to/dir:递归修改目录及其文件的所有者和所属组。

3.3 umask - 设置默认权限掩码

umask [权限掩码]
  • umask 022:设置文件默认权限掩码,使新文件默认权限为 644,目录为 755

4. 进程管理

4.1 ps - 查看当前进程

ps [选项]
  • ps aux:显示所有进程及其详细信息,包括进程号、CPU 使用率、内存使用率等。
  • ps -ef:显示所有进程的完整格式。

4.2 kill - 终止进程

kill [选项] 进程号
  • kill 1234:终止进程号为 1234 的进程。
  • kill -9 1234:强制终止进程号为 1234 的进程。

4.3 pkill - 根据进程名终止进程

pkill [选项] 进程名
  • pkill nginx:终止所有名为 nginx 的进程。

4.4 systemctl - 管理系统服务

systemctl [动作] [服务名]

常用命令: - systemctl start nginx:启动 nginx 服务。 - systemctl stop nginx:停止 nginx 服务。 - systemctl restart nginx:重启 nginx 服务。 - systemctl status nginx:查看 nginx 服务状态。 - systemctl enable nginx:设置 nginx 服务开机自动启动。 - systemctl disable nginx:取消 nginx 服务开机启动。

4.5 service - 管理服务(旧版命令)

service [服务名] [动作]

常用命令: - service nginx start:启动 nginx 服务。 - service nginx stop:停止 nginx 服务。


5. 网络管理

5.1 ip - 查看和配置网络接口

ip [选项] 命令

常用命令: - ip addr:查看网络接口的 IP 地址。 - ip link:显示网络接口的状态。 - ip route:查看路由信息。

5.2 ping - 测试网络连通性

ping [选项] 目标
  • ping google.com:测试到 google.com 的网络连通性。

5.3 netstat - 查看网络连接(ss 是其替代品)

netstat [选项]

常用选项: - netstat -tuln:显示正在监听的 TCP/UDP 端口。 - netstat -anp:显示所有网络连接及其关联进程。

5.4 ss - 替代 netstat 的现代工具

ss [选项]
  • ss -tuln:显示正在监听的 TCP/UDP 端口。
  • ss -anp:显示所有网络连接及其关联进程。

sssocket statistics)是一个强大且高效的工具,用于查看 Linux 系统中的网络连接情况,通常用来替代较旧的 netstat 命令。与 netstat 相比,ss 的速度更快,并且可以显示更多详细的网络连接信息。ss 可以用于监控 TCP、UDP、UNIX 套接字等。

以下是 ss 命令的详细讲解:


1. ss 命令基本语法

ss [选项]

2. 常用选项及参数详解

2.1 显示所有连接

ss -a

-a 选项显示所有连接,包括监听和非监听的套接字。

2.2 显示所有监听的端口

ss -l

-l 选项显示所有正在监听的套接字(例如服务器监听的端口),适合用于检查哪些服务正在监听某些端口。

2.3 显示 TCP 连接

ss -t

-t 选项显示当前的 TCP 连接信息。

2.4 显示 UDP 连接

ss -u

-u 选项显示当前的 UDP 连接信息。

2.5 显示 UNIX 套接字

ss -x

-x 选项显示当前的 UNIX 套接字连接(例如进程间通信)。

2.6 显示所有连接(TCP 和 UDP)

ss -tun

-tun 是将 -t(TCP)、-u(UDP)和 -n(不解析名称)组合在一起,用于显示所有 TCP 和 UDP 连接,并不解析主机名和端口号,而是显示数字格式。

2.7 显示监听的 TCP 端口

ss -tnl

-tnl 选项显示当前正在监听的 TCP 端口。

2.8 显示网络连接的进程(PID)

ss -p

-p 选项显示每个连接所对应的进程及其 PID。适合用于查看哪个进程正在使用某个端口。

2.9 显示每个连接的详细信息

ss -i

-i 选项显示连接的详细信息,包括 TCP 协议的拥塞状态、重传次数等。

2.10 过滤特定端口

如果你想要过滤只使用某个端口的连接,可以使用以下命令:

  • 过滤 TCP 端口 80bash ss -t '( sport = :80 )'
  • 过滤 UDP 端口 53bash ss -u '( dport = :53 )'

2.11 显示统计信息

ss -s

-s 选项显示汇总的网络统计信息,类似于 netstat -s。这适用于检查当前系统的整体网络状态,包括打开的连接数、监听的端口数、TCP 状态等。


3. ss 常用组合命令示例

3.1 显示所有 TCP 连接(数字格式)

ss -tn

-t 显示 TCP 连接,-n 使用数字格式显示 IP 和端口号,而不是将它们解析为域名和服务名称。

3.2 显示所有 UDP 连接

ss -un

显示所有 UDP 连接,并且端口号和地址以数字显示。

3.3 显示所有 TCP 连接及其状态

ss -tna

-a 显示所有连接,-t 限定为 TCP,-n 禁用名称解析。这会列出所有 TCP 连接以及它们的状态(例如 ESTABLISHED, CLOSE_WAIT, LISTEN 等)。

3.4 显示所有监听的 TCP 和 UDP 端口

ss -tuln

显示所有正在监听的 TCP 和 UDP 端口。

3.5 显示使用 IPv6 的连接

ss -6

仅显示使用 IPv6 协议的连接。

3.6 显示套接字缓冲区信息

ss -m

显示每个连接的套接字缓冲区使用情况,适合检查网络性能问题。

3.7 显示所有与某个 IP 相关的连接

ss dst 192.168.1.1

显示所有与目标 IP 地址 192.168.1.1 相关的连接。

3.8 根据进程 ID 过滤

ss -pt | grep PID

列出与指定 PID 相关的所有连接。


4. 输出字段解释

ss 输出的默认字段包括:

  • Netid:协议类型(例如 tcp, udp, unix)。
  • State:连接的状态(例如 ESTABLISHED, LISTEN, TIME-WAIT)。
  • Recv-Q:接收队列中的数据字节数。
  • Send-Q:发送队列中的数据字节数。
  • Local Address:Port:本地地址和端口。
  • Peer Address:Port:远程地址和端口。

5. TCP 状态解释

ss 的输出中,TCP 连接的状态字段显示当前连接的状态。常见的状态包括:

  • LISTEN:服务器正在监听连接请求。
  • ESTABLISHED:连接已建立,正在传输数据。
  • SYN-SENT:客户端已经发送了 SYN 请求,等待对方响应。
  • SYN-RECEIVED:服务器已经收到了 SYN 请求,正在等待确认。
  • FIN-WAIT-1:主动关闭连接的一方已经发送 FIN 包,等待对方的确认。
  • FIN-WAIT-2:主动关闭连接的一方已收到对方的确认,等待对方发送 FIN 包。
  • CLOSE-WAIT:被动关闭连接的一方已收到 FIN 包,正在等待应用程序关闭连接。
  • TIME-WAIT:确保远程主机收到了连接关闭请求后的短暂等待期。
  • CLOSED:连接已经完全关闭。

6. ssnetstat 对比

  • ss 更快速、精确,且可以显示比 netstat 更多的细节。
  • ss 通过内核 netlink 套接字获取数据,而 netstat 则需要从 /proc 文件系统中读取,性能较差。
  • netstat 是传统工具,支持多年的老系统,而 ss 是现代 Linux 的标配。

通过 ss 命令,系统管理员可以方便地查看网络连接、监控端口状态以及进行网络故障排除。掌握并灵活运用 ss 的各种选项,可以显著提高网络排障的效率。

5.5 curl - 命令行网络请求工具

curl [选项] URL
  • curl http://example.com:请求 example.com 并返回响应内容。
  • curl -I http://example.com:仅返回响应头信息。

curl 是一个功能强大的命令行工具,用于在命令行或脚本中发出 HTTP 请求,获取远程服务器的数据。它支持多种协议,包括 HTTP、HTTPS、FTP 等,广泛用于自动化任务、接口测试、数据抓取等。

以下是 curl 命令的详细讲解:


1. 基本语法

curl [选项] [URL]

curl 命令后可以跟不同的选项来完成不同的任务,主要用来与 URL 交互。


2. 常用选项及参数详解

2.1 请求网页内容

curl http://example.com

最简单的 curl 使用方法是直接请求网页内容,curl 会输出网页的 HTML 源代码。

2.2 保存文件

curl -o filename http://example.com/file.zip

-o 选项将下载的内容保存为指定文件名。

curl -O http://example.com/file.zip

-O 选项则使用远程文件名保存文件。比如远程 URL 是 file.zip,文件也会保存为 file.zip

2.3 显示响应头信息

curl -I http://example.com

-I 选项仅获取响应头信息,不会下载实际的内容。它适合用来查看服务器响应的状态码和头部信息。

2.4 发送自定义请求头

curl -H "User-Agent: Mozilla/5.0" http://example.com

-H 选项允许你发送自定义的 HTTP 请求头。例如上面命令修改了 User-Agent,模拟了浏览器的请求。

2.5 发送 GET 请求

curl http://example.com?param1=value1&param2=value2

GET 请求是 HTTP 的默认请求方法,直接将参数附加在 URL 后面。

2.6 发送 POST 请求

curl -X POST -d "param1=value1&param2=value2" http://example.com

-X POST 明确表示发送 POST 请求,-d 选项用来传递 POST 数据。

curl -X POST -d @data.json http://example.com

你也可以通过 -d @filename 的方式将文件中的内容作为 POST 数据发送。

2.7 发送 JSON 数据

curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com

-H 选项设置 Content-Typeapplication/json,然后通过 -d 发送 JSON 格式的数据。

2.8 下载多个文件

curl -O http://example.com/file1.zip -O http://example.com/file2.zip

可以一次下载多个文件,每个文件都使用 -O 选项指定 URL。

2.9 限制下载速度

curl --limit-rate 100K http://example.com/file.zip

--limit-rate 选项用于限制下载速度,单位可以是 K(千字节)或 M(兆字节)。

2.10 显示下载进度

curl -# http://example.com/file.zip

-# 选项显示下载进度条,适合用于下载较大的文件。

2.11 断点续传

curl -C - -O http://example.com/file.zip

-C - 选项用于断点续传,可以从上次中断的地方继续下载文件。

2.12 发送表单数据(模拟表单提交)

curl -F "username=admin" -F "password=123456" http://example.com/login

-F 选项可以用来模拟 HTML 表单提交,适合用于自动化提交表单请求。

2.13 跟踪重定向

curl -L http://example.com

-L 选项会跟随 HTTP 重定向。如果目标 URL 会重定向到另一个地址(如 301302),curl 会自动跟随重定向后的 URL。

2.14 显示详细请求过程

curl -v http://example.com

-v 选项用于显示详细的请求过程,包括请求头、响应头、以及传输的细节。

2.15 使用代理

curl -x http://proxy.example.com:8080 http://example.com

-x 选项用于通过代理服务器发送请求,后面跟上代理服务器的地址和端口。

2.16 上传文件

curl -T filename ftp://example.com/

-T 选项用于上传文件到 FTP 服务器。

2.17 认证请求(HTTP Basic 认证)

curl -u username:password http://example.com

-u 选项用于进行 HTTP 基本认证,curl 会将用户名和密码以 Base64 编码发送给服务器。

curl -c cookies.txt http://example.com

-c 选项可以将服务器返回的 cookie 保存到文件中。

curl -b cookies.txt http://example.com

-b 选项可以从文件中读取 cookie 并发送给服务器。

2.19 跳过 SSL 证书验证

curl -k https://example.com

-k 选项用于忽略 SSL 证书验证,适用于测试环境中 SSL 证书无效的情况。


3. curl 输出格式

3.1 输出到文件

curl 默认将服务器响应输出到标准输出(终端)。通过以下方式可以将输出重定向到文件:

curl http://example.com -o output.html

将结果保存到 output.html

3.2 输出到终端但隐藏下载进度

curl -s http://example.com

-s 选项会隐藏下载进度、错误信息,适合用于脚本中避免杂乱的输出。

3.3 只显示 HTTP 响应码

curl -o /dev/null -s -w "%{http_code}" http://example.com

通过 -w 选项可以自定义输出内容,%{http_code} 只会输出响应的 HTTP 状态码。


4. 协议支持

curl 支持多种协议,包括: - HTTP/HTTPS - FTP - SFTP - SCP - LDAP - FILE - SMTP/SMTPS - POP3/IMAP


5. curl 实用示例

5.1 获取网页的 HTTP 状态码

curl -o /dev/null -s -w "%{http_code}" http://example.com

返回状态码,例如 200 表示请求成功。

5.2 测试 API 接口

curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' http://api.example.com/endpoint

用于向 API 发送 POST 请求,发送 JSON 数据。

5.3 模拟浏览器行为

curl -A "Mozilla/5.0" http://example.com

通过设置 User-Agent 模拟来自某种浏览器的请求。


curl 是非常灵活的网络工具,不仅可以执行简单的 HTTP 请求,还能处理文件下载、表单提交、身份认证等复杂场景。通过理解和组合各种选项,你可以将 curl 用于数据抓取、接口测试、自动化操作等各种网络交互任务。

5.6 wget - 下载文件

wget [选项] URL
  • wget http://example.com/file.zip:下载文件 file.zip

6. 软件包管理

6.1 Debian/Ubuntu 系统

  • apt update:更新软件包索引。
  • apt upgrade:升级所有已安装的软件包。
  • apt install package_name:安装软件包。
  • apt remove package_name:卸载软件包。

6.2 CentOS/RHEL 系统

  • yum update:更新软件包和系统。
  • yum install package_name:安装指定软件包。
  • yum remove package_name:卸载指定软件包。

以上是 Linux 服务器管理中常用命令的详细介绍,涵盖了系统监控、文件管理、权限控制、进程管理、网络配置和软件管理等方面。这些命令的熟练运用将帮助你高效管理和维护服务器。

rpm(Red Hat Package Manager)是 Linux 下用于管理软件包的工具,适用于基于 RPM 包管理的发行版,如 Red Hat、CentOS、Fedora 等。rpm 命令用于安装、查询、升级、删除和验证 RPM 包,是 Linux 系统中包管理的重要组成部分。

以下是 rpm 命令的详细讲解:


1. 基本语法

rpm [选项] [软件包]

rpm 命令根据不同的选项执行不同的操作,最常见的功能包括安装、查询、升级和删除 RPM 包。


2. 常用选项及功能详解

2.1 安装软件包

rpm -ivh package.rpm

-i 选项用于安装一个 RPM 包,-v 表示显示详细信息,-h 则是显示进度条(哈希符号)。

2.2 安装时忽略依赖关系

rpm -ivh --nodeps package.rpm

--nodeps 选项允许在安装时忽略依赖关系。如果你强行安装一个包而不检查依赖关系,可能会导致软件运行出错。

2.3 安装并覆盖已有文件

rpm -ivh --replacefiles package.rpm

--replacefiles 选项允许覆盖已经安装的软件包文件。

2.4 升级软件包

rpm -Uvh package.rpm

-U 选项用于升级一个已安装的 RPM 包,如果该包尚未安装,rpm 会执行安装。

2.5 安装/升级时保留旧配置文件

rpm -Uvh --oldpackage package.rpm

--oldpackage 选项用于降级软件包(即安装旧版本)。

2.6 删除软件包

rpm -e package_name

-e 选项用于删除一个已安装的 RPM 包,注意这里需要输入的是软件包的名称,而不是 RPM 文件。

2.7 强制删除

rpm -e --nodeps package_name

--nodeps 选项允许删除时忽略依赖关系,强行删除软件包。


3. 查询功能

3.1 查询已安装的软件包

rpm -qa

-qa 选项用于列出所有已安装的软件包,通常配合 grep 使用:

rpm -qa | grep package_name

可以查询指定的软件包是否已安装。

3.2 查询软件包详细信息

rpm -qi package_name

-qi 选项用于查看指定已安装包的详细信息,例如版本、说明、大小等。

3.3 查询软件包文件列表

rpm -ql package_name

-ql 选项用于列出已安装软件包的所有文件。

3.4 查询文件属于哪个软件包

rpm -qf /path/to/file

-qf 选项用于查询某个系统文件是由哪个 RPM 包安装的。

3.5 查询软件包的依赖关系

rpm -qR package_name

-qR 选项用于列出某个已安装软件包的依赖关系。


4. 验证功能

4.1 验证软件包的完整性

rpm -V package_name

-V 选项用于验证已安装软件包的文件是否被修改。

输出结果格式如下:

S.5....T.  /etc/myconfig.conf

其中每个符号表示不同的校验结果: - S:文件大小被更改 - 5:MD5 校验和不匹配 - T:文件时间戳被更改

4.2 验证签名

rpm --checksig package.rpm

--checksig 选项用于验证 RPM 包的 GPG 签名,以确保包来源可信。


5. RPM 文件管理

5.1 查看 RPM 包的内容

rpm -qpl package.rpm

-qpl 选项用于查看 RPM 包中包含的文件列表(未安装)。

5.2 查看 RPM 包的详细信息

rpm -qpi package.rpm

-qpi 选项用于查看 RPM 包的详细信息(未安装)。

5.3 查询 RPM 包的依赖关系

rpm -qpR package.rpm

-qpR 选项用于查看 RPM 包的依赖关系(未安装)。


6. RPM 数据库管理

6.1 重建 RPM 数据库

rpm --rebuilddb

--rebuilddb 选项用于重建 RPM 数据库,适用于数据库损坏或其他数据库相关问题时。

6.2 清除 RPM 数据库中的缓存文件

rpm --initdb

--initdb 选项用于初始化数据库,通常在初次安装 RPM 时使用。


7. 实用示例

7.1 下载并安装 RPM 包

wget http://example.com/package.rpm
rpm -ivh package.rpm

从 URL 下载 RPM 包并安装。

7.2 升级多个 RPM 包

rpm -Uvh package1.rpm package2.rpm

同时升级多个 RPM 包。

7.3 查询特定软件包的版本

rpm -qa | grep httpd

查询已安装的 httpd 软件包版本。

7.4 删除已安装软件包

rpm -e httpd

删除 httpd 软件包。

7.5 验证 RPM 包的完整性

rpm -V httpd

验证 httpd 软件包的文件完整性。


8. RPM 与 YUM 对比

特性 rpm yum
基本功能 管理单个软件包 自动解决依赖关系,管理仓库和软件包
安装包 需要手动安装依赖包 自动安装所有依赖
使用场景 安装单个包或包文件 连接仓库,进行包的批量管理和更新
数据库管理 管理已安装包的信息数据库 通过仓库源获取包及更新信息

rpm 是一个功能强大、精细的软件包管理工具,适用于管理独立的 RPM 包。当你需要进行依赖管理和批量安装时,yumdnf 是更好的选择。