系统管理
systemctl - 系统服务管理
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
start | 启动服务 | systemctl start nginx |
stop | 停止服务 | systemctl stop nginx |
restart | 重启服务 | systemctl restart nginx |
status | 查看服务状态 | systemctl status nginx |
enable | 开机自启 | systemctl enable nginx |
disable | 禁用自启 | systemctl disable nginx |
reload | 重新加载配置 | systemctl reload nginx |
服务状态说明:
| 状态 | 说明 |
|---|---|
active (running) | 服务正在运行 |
active (exited) | 服务已退出但成功 |
inactive (dead) | 服务未运行 |
failed | 服务启动失败 |
指令输出示例:
$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-12-15 10:30:00 CST; 2h ago
Docs: man:nginx(8)
Main PID: 1234 (nginx)
Tasks: 3 (limit: 4915)
Memory: 2.5M
CGroup: /system.slice/nginx.service
├─1234 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1235 nginx: worker process
└─1236 nginx: worker process
$ systemctl start nginx
# 启动nginx服务
$ systemctl enable nginx
# 设置nginx开机自启
top - 显示系统进程信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 指定进程 ID | top -p 1234 |
-u | 指定用户名 | top -u username |
-n | 刷新次数 | top -n 5 |
-d | 刷新间隔(秒) | top -d 2 |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| PID | 进程 ID | 1234 |
| USER | 进程所有者 | root |
| PR | 进程优先级 | 20 |
| NI | nice 值 | 0 |
| VIRT | 虚拟内存使用量 | 123456 |
| RES | 物理内存使用量 | 1234 |
| SHR | 共享内存大小 | 456 |
| S | 进程状态 | S (睡眠) |
| %CPU | CPU 使用率 | 2.5 |
| %MEM | 内存使用率 | 1.2 |
| TIME+ | 累计 CPU 时间 | 0:15.30 |
| COMMAND | 命令名称 | bash |
指令输出示例:
$ top
top - 14:30:45 up 2 days, 3:45, 2 users, load average: 0.52, 0.58, 0.59
Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 1.2 sy, 0.0 ni, 96.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8192.0 total, 1234.5 free, 2345.6 used, 4611.9 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 5123.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 root 20 0 123456 1234 456 S 2.5 1.2 0:15.30 bash
5678 user 20 0 234567 2345 567 S 1.8 2.1 0:25.45 nginx
df - 显示磁盘空间使用情况
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-h | 以人类可读格式显示 | df -h |
-T | 显示文件系统类型 | df -T |
-i | 显示 inode 信息 | df -i |
-a | 显示所有文件系统 | df -a |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| Filesystem | 文件系统名称 | /dev/sda1 |
| Size | 总大小 | 20G |
| Used | 已使用空间 | 15G |
| Avail | 可用空间 | 4.0G |
| Use% | 使用率百分比 | 79% |
| Mounted on | 挂载点 | / |
指令输出示例:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 15G 4.0G 79% /
tmpfs 3.2G 0 3.2G 0% /dev/shm
/dev/sdb1 100G 50G 45G 53% /home
free - 显示内存使用情况
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-h | 以人类可读格式显示 | free -h |
-s | 持续监控,指定间隔 | free -s 5 |
-t | 显示总计行 | free -t |
-m | 以 MB 为单位显示 | free -m |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| total | 总内存 | 8192 |
| used | 已使用内存 | 4096 |
| free | 空闲内存 | 2048 |
| shared | 共享内存 | 512 |
| buff/cache | 缓冲/缓存内存 | 1536 |
| available | 可用内存 | 3584 |
指令输出示例:
$ free -h
total used free shared buff/cache available
Mem: 8.0Gi 4.0Gi 2.0Gi 512Mi 2.0Gi 3.5Gi
Swap: 2.0Gi 0Bi 2.0Gi
ps - 显示进程状态
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
aux | 显示所有用户的所有进程 | ps aux |
-ef | 显示所有进程的详细信息 | ps -ef |
-p | 指定进程 ID | ps -p 1234 |
-u | 指定用户名 | ps -u username |
-o | 自定义输出格式 | ps -o pid,ppid,cmd |
输出参数解释表格:
| 输出字段 | 说明 | 示例 |
|---|---|---|
| USER | 进程所有者 | root |
| PID | 进程 ID | 1234 |
| PPID | 父进程 ID | 1 |
| %CPU | CPU 使用率 | 2.5 |
| %MEM | 内存使用率 | 1.2 |
| VSZ | 虚拟内存大小 | 123456 |
| RSS | 物理内存大小 | 1234 |
| TTY | 终端 | pts/0 |
| STAT | 进程状态 | S |
| START | 启动时间 | 10:30 |
| TIME | 累计 CPU 时间 | 0:15.30 |
| COMMAND | 命令 | bash |
指令输出示例:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 123456 1234 ? Ss 10:30 0:01 /sbin/init
root 123 0.0 0.0 234567 2345 ? S 10:30 0:00 /usr/sbin/sshd
user 1234 0.5 1.2 345678 3456 pts/0 Ss 10:35 0:15 bash
user 5678 0.0 0.5 456789 4567 pts/0 R+ 14:30 0:00 ps aux
kill - 终止进程
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-9 | 强制终止进程 | kill -9 1234 |
-15 | 正常终止进程(默认) | kill -15 1234 |
-l | 列出所有信号 | kill -l |
-s | 指定信号 | kill -s SIGTERM 1234 |
指令输出示例:
$ kill -9 1234
# 强制终止进程ID为1234的进程
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
export - 设置环境变量
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 显示所有环境变量 | export -p |
-n | 取消环境变量 | export -n VAR |
指令输出示例:
$ export PATH=$PATH:/usr/local/bin
$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
$ export -p
declare -x HOME="/home/user"
declare -x JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin"
env - 显示环境变量
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-i | 忽略继承的环境变量 | env -i command |
-u | 取消指定变量 | env -u VAR command |
-0 | 以 null 结尾 | env -0 |
指令输出示例:
$ env
USER=user
HOME=/home/user
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/bash
TERM=xterm-256color
$ env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
unset - 删除环境变量
指令输出示例:
$ export TEST_VAR="test value"
$ echo $TEST_VAR
test value
$ unset TEST_VAR
$ echo $TEST_VAR
crontab - 管理定时任务
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-e | 编辑定时任务 | crontab -e |
-l | 列出定时任务 | crontab -l |
-r | 删除所有任务 | crontab -r |
-u | 指定用户 | crontab -u username -e |
crontab 时间格式:
| 字段 | 说明 | 范围 |
|---|---|---|
| 分钟 | 分钟 | 0-59 |
| 小时 | 小时 | 0-23 |
| 日期 | 日期 | 1-31 |
| 月份 | 月份 | 1-12 |
| 星期 | 星期几 | 0-7 (0 和 7 都是周日) |
常用时间表达式:
| 表达式 | 说明 |
|---|---|
* * * * * | 每分钟执行 |
0 * * * * | 每小时执行 |
0 0 * * * | 每天 0 点执行 |
0 0 * * 0 | 每周日 0 点执行 |
0 0 1 * * | 每月 1 号 0 点执行 |
*/5 * * * * | 每 5 分钟执行 |
指令输出示例:
$ crontab -l
# m h dom mon dow command
0 2 * * * /usr/bin/backup.sh
0 0 * * 0 /usr/bin/weekly-cleanup.sh
*/15 * * * * /usr/bin/check-disk-space.sh
$ crontab -e
# 打开编辑器,可以添加新的定时任务
# 0 3 * * * /usr/bin/daily-backup.sh
at - 一次性定时任务
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 从文件读取命令 | at -f script.sh 10:00 |
-m | 任务完成时发送邮件 | at -m 10:00 |
-l | 列出待执行任务 | at -l |
-d | 删除指定任务 | at -d 1 |
时间格式示例:
| 格式 | 说明 |
|---|---|
10:00 | 今天 10:00 |
10:00 tomorrow | 明天 10:00 |
now + 1 hour | 1 小时后 |
now + 2 days | 2 天后 |
midnight | 午夜 |
noon | 中午 |
指令输出示例:
$ at 10:00
at> echo "Hello World" > /tmp/hello.txt
at> <EOT>
job 1 at Mon Dec 15 10:00:00 2023
$ at -l
1 Mon Dec 15 10:00:00 2023 a user
$ at now + 1 hour
at> /usr/bin/backup.sh
at> <EOT>
job 2 at Mon Dec 15 15:30:00 2023
ufw - Ubuntu 防火墙
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
enable | 启用防火墙 | ufw enable |
disable | 禁用防火墙 | ufw disable |
status | 查看状态 | ufw status |
allow | 允许端口 | ufw allow 80 |
deny | 拒绝端口 | ufw deny 22 |
delete | 删除规则 | ufw delete allow 80 |
reload | 重新加载 | ufw reload |
指令输出示例:
$ ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
22/tcp (v6) ALLOW IN Anywhere (v6)
80/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
$ ufw allow 8080
Rules updated
Rules updated (v6)
$ ufw deny 3306
Rules updated
Rules updated (v6)
iptables - Linux 防火墙
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-A | 添加规则 | iptables -A INPUT -p tcp --dport 80 -j ACCEPT |
-D | 删除规则 | iptables -D INPUT -p tcp --dport 80 -j ACCEPT |
-L | 列出规则 | iptables -L |
-F | 清空规则 | iptables -F |
-P | 设置默认策略 | iptables -P INPUT DROP |
-s | 指定源地址 | iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT |
-d | 指定目标地址 | iptables -A OUTPUT -d 8.8.8.8 -j ACCEPT |
-p | 指定协议 | iptables -A INPUT -p tcp -j ACCEPT |
--dport | 目标端口 | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
--sport | 源端口 | iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT |
常用链说明:
| 链 | 说明 |
|---|---|
INPUT | 入站流量 |
OUTPUT | 出站流量 |
FORWARD | 转发流量 |
常用动作说明:
| 动作 | 说明 |
|---|---|
ACCEPT | 接受 |
DROP | 丢弃 |
REJECT | 拒绝 |
LOG | 记录日志 |
指令输出示例:
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP tcp -- anywhere anywhere tcp dpt:telnet
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
$ iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 允许80端口入站流量
$ iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
# 允许192.168.1.0/24网段的入站流量
firewall-cmd - CentOS 防火墙
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
--state | 查看状态 | firewall-cmd --state |
--reload | 重新加载 | firewall-cmd --reload |
--list-all | 列出所有规则 | firewall-cmd --list-all |
--add-port | 添加端口 | firewall-cmd --add-port=80/tcp |
--remove-port | 删除端口 | firewall-cmd --remove-port=80/tcp |
--add-service | 添加服务 | firewall-cmd --add-service=http |
--remove-service | 删除服务 | firewall-cmd --remove-service=http |
--permanent | 永久规则 | firewall-cmd --permanent --add-port=80/tcp |
指令输出示例:
$ firewall-cmd --state
running
$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client ssh
ports: 80/tcp 443/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich-rules:
$ firewall-cmd --add-port=8080/tcp
success
$ firewall-cmd --permanent --add-service=http
success
uname - 显示系统信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-a | 显示所有信息 | uname -a |
-s | 显示内核名称 | uname -s |
-n | 显示主机名 | uname -n |
-r | 显示内核版本 | uname -r |
-v | 显示内核编译信息 | uname -v |
-m | 显示硬件架构 | uname -m |
-p | 显示处理器类型 | uname -p |
-i | 显示硬件平台 | uname -i |
-o | 显示操作系统 | uname -o |
指令输出示例:
$ uname -a
Linux hostname 5.4.0-74-generic #83-Ubuntu SMP Sat May 8 02:35:39 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ uname -r
5.4.0-74-generic
$ uname -m
x86_64
hostname - 显示或设置主机名
显示命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 显示完整主机名 | hostname -f |
-s | 显示短主机名 | hostname -s |
-d | 显示域名 | hostname -d |
-i | 显示 IP 地址 | hostname -i |
-y | 显示 NIS 域名 | hostname -y |
指令输出示例:
$ hostname
hostname
$ hostname -f
hostname.example.com
$ hostname -i
192.168.1.100
设置主机名命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
set | 临时设置主机名 | hostname newname |
ctl | 永久设置主机名(需 root 权限,推荐) | hostnamectl set-hostname newname |
-F | 从文件读取主机名 | hostname -F /etc/hostname |
设置主机名指令输出示例:
# 永久设置主机名(推荐方法)
$ sudo hostnamectl set-hostname myserver
$ hostname
myserver
uptime - 显示系统运行时间
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 显示运行时间 | uptime -p |
-s | 显示启动时间 | uptime -s |
-V | 显示版本信息 | uptime -V |
指令输出示例:
$ uptime
14:30:45 up 2 days, 3:45, 2 users, load average: 0.52, 0.58, 0.59
$ uptime -p
up 2 days, 3 hours, 45 minutes
$ uptime -s
2023-12-13 10:45:00
who - 显示当前登录用户
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-a | 显示所有信息 | who -a |
-b | 显示系统启动时间 | who -b |
-d | 显示死进程 | who -d |
-H | 显示标题行 | who -H |
-l | 显示登录进程 | who -l |
-m | 显示当前用户 | who -m |
-q | 显示用户数量 | who -q |
-r | 显示运行级别 | who -r |
-s | 显示简短信息 | who -s |
-T | 显示终端状态 | who -T |
-u | 显示空闲时间 | who -u |
-w | 显示终端写状态 | who -w |
指令输出示例:
$ who
user pts/0 2023-12-15 10:30 (192.168.1.100)
user pts/1 2023-12-15 14:25 (192.168.1.101)
$ who -a
system boot 2023-12-13 10:45
run-level 5 2023-12-13 10:45
user + pts/0 2023-12-15 10:30 . 1234 (192.168.1.100)
user + pts/1 2023-12-15 14:25 . 5678 (192.168.1.101)
last - 显示用户登录历史
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-n | 显示指定行数 | last -n 10 |
-f | 指定日志文件 | last -f /var/log/wtmp |
-R | 不显示主机名 | last -R |
-x | 显示系统关闭 | last -x |
-a | 显示主机名 | last -a |
指令输出示例:
$ last -n 5
user pts/1 192.168.1.101 Wed Dec 15 14:25 still logged in
user pts/0 192.168.1.100 Wed Dec 15 10:30 still logged in
user pts/1 192.168.1.101 Wed Dec 15 09:15 - 14:20 (05:05)
user pts/0 192.168.1.100 Tue Dec 14 16:30 - 18:45 (02:15)
user pts/1 192.168.1.101 Tue Dec 14 14:20 - 16:25 (02:05)
wtmp begins Tue Dec 14 14:20:01 2023
date - 显示或设置系统时间
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-d | 显示指定日期 | date -d "2023-12-15" |
-s | 设置系统时间 | date -s "2023-12-15 14:30:00" |
-u | 显示 UTC 时间 | date -u |
-R | 显示 RFC 格式 | date -R |
-I | 显示 ISO 格式 | date -I |
指令输出示例:
$ date
Wed Dec 15 14:30:45 CST 2023
$ date -R
Wed, 15 Dec 2023 14:30:45 +0800
$ date -I
2023-12-15
$ date -d "2023-12-15"
Fri Dec 15 00:00:00 CST 2023
useradd - 创建新用户
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-m | 创建用户主目录 | useradd -m username |
-s | 指定默认 shell | useradd -s /bin/bash username |
-g | 指定主组 | useradd -g users username |
-G | 指定附加组 | useradd -G sudo username |
-u | 指定用户 ID | useradd -u 1001 username |
指令输出示例:
$ useradd -m -s /bin/bash -G sudo newuser
# 创建用户newuser,包含主目录,默认shell为bash,加入sudo组
$ id newuser
uid=1001(newuser) gid=1001(newuser) groups=1001(newuser),27(sudo)
passwd - 设置用户密码
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-l | 锁定用户账户 | passwd -l username |
-u | 解锁用户账户 | passwd -u username |
-d | 删除用户密码 | passwd -d username |
-S | 显示密码状态 | passwd -S username |
指令输出示例:
$ passwd newuser
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
$ passwd -S newuser
newuser P 12/15/2023 0 99999 7 -1
关机命令
shutdown - 关机
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-h | 关机 | shutdown -h now |
-r | 重启 | shutdown -r now |
-c | 取消关机 | shutdown -c |
-t | 设置延迟时间 | shutdown -t 60 |
-k | 发送信号但不关机 | shutdown -k |
指令输出示例:
$ shutdown -h now
# 立即关机
$ shutdown -r now
# 立即重启
$ shutdown -c
# 取消关机
$ shutdown -t 60
# 设置延迟时间为60秒
$ shutdown -k
# 发送信号但不关机
硬件信息命令
lscpu - 显示 CPU 信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-p | 显示所有核心 | lscpu -p |
-e | 显示扩展信息 | lscpu -e |
-a | 显示所有信息 | lscpu -a |
指令输出示例:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 142
Model name: Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
Stepping: 10
CPU MHz: 1992.000
CPU max MHz: 4100.0000
CPU min MHz: 1200.0000
BogoMIPS: 4192.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-3
NUMA node1 CPU(s): 4-7
lsblk - 显示块设备信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-f | 显示文件系统 | lsblk -f |
-b | 显示块设备 | lsblk -b |
-p | 显示挂载点 | lsblk -p |
-a | 显示所有设备 | lsblk -a |
指令输出示例:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 1000.2G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 995.2G 0 part /
└─sda3 8:3 0 5G 0 part /home
hdparm - 显示硬盘信息
命令参数解释表格:
| 参数 | 说明 | 示例 |
|---|---|---|
-i | 显示硬盘信息 | hdparm -i /dev/sda |
-x | 显示扩展信息 | hdparm -x /dev/sda |
-C | 显示缓存信息 | hdparm -C /dev/sda |
-T | 显示传输速度 | hdparm -T /dev/sda |
指令输出示例:
$ hdparm -i /dev/sda
/dev/sda:
Timing cached reads: 12 ms
Timing buffered disk reads: 12 ms
