Linux 常用命令¶
在服务器管理中,Linux 系统常用命令的熟练掌握是至关重要的。为了全面涵盖各个方面的操作,以下内容将以更加详细的方式介绍 Linux 服务器中的常用命令,包括文件操作、系统监控、进程管理、网络配置、安全管理等。
1. 系统信息与性能监控¶
1.1 uname - 查看操作系统信息¶
uname [选项]
uname -a:显示所有系统信息(包括内核版本、主机名、硬件架构等)。
- uname -r:显示当前内核版本。
1.2 uptime - 查看系统运行时间和负载¶
uptime
1.3 top - 实时查看系统资源使用情况¶
top
PID:进程 ID。USER:运行进程的用户。PR:优先级。%CPU:CPU 使用率。%MEM:内存使用率。
按 q 退出,h 查看帮助,k 杀掉某个进程。
1.4 htop - 更友好的实时监控工具(需安装)¶
htop
htop 比 top 更直观,支持上下滚动和更丰富的进程信息展示。它提供图形化 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:显示所有网络连接及其关联进程。
ss(socket 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 端口 80:
ss -t '( sport = :80 )' - 过滤 UDP 端口 53:
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
3.3 显示所有 TCP 连接及其状态¶
ss -tna
-a 显示所有连接,-t 限定为 TCP,-n 禁用名称解析。这会列出所有 TCP 连接以及它们的状态(例如 ESTABLISHED, CLOSE_WAIT, LISTEN 等)。
3.4 显示所有监听的 TCP 和 UDP 端口¶
ss -tuln
3.5 显示使用 IPv6 的连接¶
ss -6
3.6 显示套接字缓冲区信息¶
ss -m
3.7 显示所有与某个 IP 相关的连接¶
ss dst 192.168.1.1
192.168.1.1 相关的连接。
3.8 根据进程 ID 过滤¶
ss -pt | grep 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. ss 与 netstat 对比¶
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¶m2=value2
2.6 发送 POST 请求¶
curl -X POST -d "param1=value1¶m2=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-Type 为 application/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 会重定向到另一个地址(如 301 或 302),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 编码发送给服务器。
2.18 显示 cookie 信息¶
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
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
7.2 升级多个 RPM 包¶
rpm -Uvh package1.rpm package2.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 包。当你需要进行依赖管理和批量安装时,yum 或 dnf 是更好的选择。