Ubuntu 系统常见操作指令

作为开发者,日常和服务器打交道时,Ubuntu 是最常用的 Linux 发行版之一。本文整理了 Ubuntu 系统中最高频的操作指令,涵盖系统管理、文件操作、网络连接、软件安装等方面。

系统基础信息

查看系统版本

1
2
3
4
5
6
7
8
9
10
11
# 查看 Ubuntu 版本号
lsb_release -a

# 查看内核版本
uname -r

# 查看系统架构(amd64/arm64)
dpkg --print-architecture

# 查看系统启动时间
uptime

查看系统资源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看内存使用情况
free -h

# 查看磁盘使用情况
df -h

# 查看当前目录占用空间
du -sh *

# 查看 CPU 信息
cat /proc/cpuinfo | grep "model name" | head -1

# 系统负载
top
# 或者更现代的替代品
htop

文件和目录操作

基础操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 进入目录
cd /path/to/directory

# 返回上级目录
cd ..

# 返回用户主目录
cd ~

# 上一次所在目录
cd -

# 查看当前目录(print working directory)
pwd

浏览文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 列出当前目录文件(不显示隐藏文件)
ls

# 列出所有文件(包括隐藏文件)
ls -a

# 列表形式显示,包含详细信息
ls -la

# 按时间排序(最新在前)
ls -lt

# 递归显示子目录
ls -R

# 显示目录而非内容
ls -d */

文件权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 修改文件权限(755 = rwxr-xr-x)
chmod 755 file.sh

# 给文件添加执行权限
chmod +x script.sh

# 递归修改目录权限
chmod -R 755 /path/to/dir

# 修改文件所有者
chown user:group file.txt

# 递归修改目录所有者
chown -R user:group /path/to/dir

文件操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 创建空文件
touch filename.txt

# 创建目录
mkdir dirname

# 创建多级目录
mkdir -p /path/to/nested/dir

# 复制文件
cp source.txt destination.txt

# 复制目录(递归)
cp -r source_dir/ destination_dir/

# 移动/重命名文件
mv oldname.txt newname.txt

# 删除文件
rm filename.txt

# 强制删除(不提示)
rm -f filename.txt

# 删除空目录
rmdir dirname

# 删除目录及内容
rm -rf dirname/

文本查看和编辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看文件内容(全部)
cat filename.txt

# 分页查看文件
less filename.txt
# 按 q 退出,空格翻页

# 从头查看(可指定行数)
head -n 20 filename.txt

# 从尾查看(查看日志常用)
tail -n 50 filename.txt

# 实时跟踪日志
tail -f /var/log/syslog

# 统计文件行数、字数
wc -l filename.txt

搜索文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 在当前目录按名称查找
find . -name "filename.txt"

# 忽略大小写
find . -iname "filename"

# 查找特定类型(f=文件,d=目录)
find . -type f -name "*.log"

# 查找大于 100MB 的文件
find . -size +100M

# 查找 7 天内修改过的文件
find . -mtime -7

# 全局搜索命令位置
which python3

# 搜索命令位置(包含说明)
type -a python3

用户和权限管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 查看当前用户
whoami

# 查看所有登录用户
who

# 查看用户信息
id username

# 添加用户
sudo adduser username

# 删除用户
sudo deluser username

# 修改用户密码
passwd username

# 切换用户
su - username

# 以 root 执行单条命令
sudo command

# 查看 sudo 权限
sudo -l

软件包管理 (APT)

更新软件源

1
2
3
4
5
6
7
8
# 更新软件包列表
sudo apt update

# 升级所有可升级的软件包
sudo apt upgrade

# 升级系统版本(慎用)
sudo apt dist-upgrade

安装/卸载软件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装软件包
sudo apt install nginx

# 安装多个软件
sudo apt install nginx git vim

# 重新安装
sudo apt reinstall nginx

# 卸载软件(保留配置)
sudo apt remove nginx

# 卸载软件(删除配置)
sudo apt purge nginx

# 自动清理不需要的依赖
sudo apt autoremove

搜索和查看

1
2
3
4
5
6
7
8
9
10
11
# 搜索软件包
apt search nginx

# 查看软件包信息
apt show nginx

# 查看已安装的软件包
apt list --installed

# 检查软件包是否安装
dpkg -l nginx

系统服务管理

Ubuntu 使用 systemd 管理服务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 查看服务状态
sudo systemctl status nginx

# 启动服务
sudo systemctl start nginx

# 停止服务
sudo systemctl stop nginx

# 重启服务
sudo systemctl restart nginx

# 重新加载配置(不中断服务)
sudo systemctl reload nginx

# 设置开机启动
sudo systemctl enable nginx

# 禁用开机启动
sudo systemctl disable nginx

# 查看所有运行中的服务
systemctl list-units --type=service

# 查看服务是否 active
systemctl is-active nginx

网络操作

查看网络配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看 IP 地址
ip addr

# 查看网络接口详细信息
ip link show

# 查看 DNS 配置
cat /etc/resolv.conf

# 查看端口监听
ss -tlnp

# 查看网络连接状态
netstat -an

网络测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 测试网络连通性
ping -c 4 google.com

# 查看路由表
ip route

# 追踪路由
traceroute google.com

# 测试端口连通性
telnet example.com 80

# 或者用 nc
nc -zv example.com 80

# DNS 查询
dig example.com

# 下载文件
wget https://example.com/file.zip

# 下载并显示进度
curl -O https://example.com/file.zip

SSH 连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 连接到远程服务器
ssh user@server_ip

# 指定端口
ssh -p 2222 user@server_ip

# 使用密钥登录
ssh -i ~/.ssh/my_key.pem user@server_ip

# 远程执行命令
ssh user@server_ip "df -h"

# 生成 SSH 密钥
ssh-keygen -t rsa -b 4096

# 复制公钥到服务器
ssh-copy-id user@server_ip

防火墙 (UFW)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 查看防火墙状态
sudo ufw status

# 开启防火墙
sudo ufw enable

# 关闭防火墙
sudo ufw disable

# 允许 SSH 连接(必须!)
sudo ufw allow ssh

# 允许 80 端口
sudo ufw allow 80/tcp

# 允许指定 IP 访问
sudo ufw allow from 192.168.1.100

# 拒绝访问
sudo ufw deny 3306/tcp

# 删除规则
sudo ufw delete allow 80/tcp

# 查看所有规则
sudo ufw status verbose

进程管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 查看当前终端的进程
ps

# 查看所有进程
ps aux

# 进程树
pstree

# 实时查看进程(按 CPU 使用排序)
top
# 或者
htop

# 查找进程
pgrep -a python

# 杀掉进程(温和)
kill process_id

# 强制杀掉进程
kill -9 process_id

# 按名称杀掉进程
killall nginx

# 后台运行程序
./script.sh &

# 查看后台任务
jobs

# 将任务放到后台
# Ctrl+Z 挂起当前任务

# 恢复后台任务
bg

# 将后台任务调到前台
fg

压缩和解压

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# tar 打包(不压缩)
tar -cvf archive.tar directory/

# tar 解包
tar -xvf archive.tar

# tar.gz 压缩
tar -czvf archive.tar.gz directory/

# tar.gz 解压
tar -xzvf archive.tar.gz

# tar.bz2 压缩(压缩率更高但更慢)
tar -cjvf archive.tar.bz2 directory/

# tar.bz2 解压
tar -xjvf archive.tar.bz2

# zip 压缩
zip -r archive.zip directory/

# zip 解压
unzip archive.zip

# 查看 zip 内容
unzip -l archive.zip

磁盘操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 查看所有磁盘分区
lsblk

# 查看磁盘使用情况
df -h

# 挂载磁盘
sudo mount /dev/sdb1 /mnt

# 卸载磁盘
sudo umount /mnt

# 格式化磁盘
sudo mkfs.ext4 /dev/sdb1

# 查看磁盘 UUID
sudo blkid

# 自动挂载配置(编辑 /etc/fstab)
UUID=xxx /mnt ext4 defaults 0 2

日志查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看系统日志
sudo tail -f /var/log/syslog

# 查看认证日志
sudo tail -f /var/log/auth.log

# 查看 Nginx 访问日志
sudo tail -f /var/log/nginx/access.log

# 查看 Nginx 错误日志
sudo tail -f /var/log/nginx/error.log

# 查看历史登录记录
last

# 查看失败登录尝试
sudo lastb

# 查看系统启动日志
sudo dmesg

# 简化版 dmesg
sudo dmesg | less

定时任务 (Cron)

1
2
3
4
5
6
7
8
# 编辑当前用户的定时任务
crontab -e

# 查看当前用户的定时任务
crontab -l

# 删除当前用户的所有定时任务
crontab -r

Crontab 格式:

1
2
3
4
5
6
7
* * * * * command
│ │ │ │ │
│ │ │ │ └── 星期 (0-7, 0和7都是周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日期 (1-31)
│ └──────── 小时 (0-23)
└───────── 分钟 (0-59)

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 每分钟执行一次
* * * * * /path/to/script.sh

# 每天凌晨 3 点执行
0 3 * * * /path/to/script.sh

# 每周一早上 6 点执行
0 6 * * 1 /path/to/script.sh

# 每月 1 号凌晨 2 点执行
0 2 1 * * /path/to/script.sh

# 每 5 分钟执行一次
*/5 * * * * /path/to/script.sh

其他常用指令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 查看系统时间
date

# 设置时区
sudo timedatectl set-timezone Asia/Shanghai

# 查看日历
cal

# 计算器
bc

# 清屏
clear

# 历史命令
history

# 显示环境变量
printenv

# 查看变量值
echo $PATH

# 创建快捷方式/软链接
ln -s /path/to/original /path/to/link

# 查看命令帮助
command --help

# 或者
man command

实用技巧

1. 命令行补全

Tab 键自动补全命令、文件名、路径。

2. 复用历史命令

  • / 浏览历史命令
  • Ctrl+R 搜索历史命令
  • !! 执行上一条命令
  • !n 执行第 n 条历史命令

3. 管道和重定向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 将命令输出保存到文件
command > output.txt

# 追加到文件
command >> output.txt

# 将错误输出重定向
command 2> error.txt

# 同时重定向标准输出和错误
command > output.txt 2>&1

# 将上一个命令的输出作为下一个命令的输入
command1 | command2

# 示例:查找包含 "error" 的日志
cat /var/log/syslog | grep error

# 统计行数
cat /var/log/syslog | wc -l

4. 后台运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# nohup:退出终端后继续运行
nohup ./script.sh &

# screen:多窗口终端
screen -S mysession # 创建会话
screen -ls # 列出会话
screen -r mysession # 恢复会话
Ctrl+A D # 分离会话

# tmux:更现代的终端复用器
tmux new -s mysession # 创建会话
tmux ls # 列出会话
tmux attach -t mysession # 恢复会话
Ctrl+B D # 分离会话

掌握这些常用指令,足以应付日常的 Ubuntu 服务器管理工作。建议收藏本文,需要时随时查阅。


有问题欢迎留言交流!