(一)Ubuntu 命令汇总
(一) 基础文件/目录操作命令
| 命令 | 作用 | 示例 |
|---|---|---|
pwd | 查看当前目录路径 | pwd |
ls | 查看当前目录下的文件列表 | ls -l(详细格式),ls -a(显示隐藏文件) |
cd | 进入某个目录 | cd /home/username/ |
mkdir | 创建目录 | mkdir myfolder |
touch | 创建空文件 | touch file.txt |
rm | 删除文件/目录 | rm file.txt,rm -r folder/ |
cp | 复制文件/目录 | cp file1.txt file2.txt,cp -r folder1 folder2/ |
mv | 移动/重命名文件 | mv old.txt new.txt,mv file.txt ../ |
输出文件结构 sudo apt install tree
tree | 显示当前目录树状结构 |
|---|---|
tree -L 2 | 限制为 2 层深度 |
tree -a | 显示所有文件(包括隐藏文件) |
tree -f | 显示完整路径 |
tree -sh | 显示人类可读的文件大小 |
tree -d | 只显示目录 |
tree -tp | 按修改时间排序并显示权限 |
(二) 防火墙
Ubuntu 默认使用的是 ufw(Uncomplicated Firewall),这是一个简单易用的防火墙工具,底层其实是基于 iptables,但更容易操作。
1. 基础操作
| 命令 | 功能 |
|---|---|
sudo ufw status | 查看防火墙当前状态(是否开启/规则) |
sudo ufw enable | 启用防火墙 |
sudo ufw disable | 关闭防火墙 |
sudo ufw reload | 重新加载防火墙配置(修改后需要) |
sudo ufw reset | 重置所有规则(慎用) |
2. 开放/关闭端口
| 命令 | 功能 |
|---|---|
sudo ufw allow 22 | 允许 22 端口(SSH)进入 |
sudo ufw allow 8080 | 允许 8080 端口进入 |
sudo ufw allow from 192.168.1.10 | 允许某个 IP 所有端口访问 |
sudo ufw allow from 192.168.1.10 to any port 80 | 允许某 IP 访问你机器的 80 端口 |
sudo ufw deny 80 | 拒绝 80 端口进入 |
sudo ufw delete allow 22 | 删除已开放的 22 端口规则 |
3. 频率限制
| 命令 | 功能 |
|---|---|
sudo ufw limit ssh | 对 SSH 登录设置连接频率限制(防止暴力破解) |
4. 高级规则(可选)
| 命令 | 作用 |
|---|---|
sudo ufw default deny incoming | 默认拒绝所有进入连接(推荐) |
sudo ufw default allow outgoing | 默认允许所有外出连接 |
想更高级操作可以学习 iptables,但一般使用 ufw 就足够了。
(三)端口进程管理
1. 查找端口进程
-
方法一:
lsof(list open files)方式sudo lsof -i :端口号 -
方法二:
也可以用
netstat方式(需要安装net-tools)sudo netstat -tulnp | grep :端口号如果没有
netstat,你可以安装它:sudo apt install net-tools -
方法三:
ss方式(系统内置更现代的工具)sudo ss -ltnp | grep :端口号
2. 杀掉某个端口上的进程
查到 PID 之后,用 kill 命令终止进程。
sudo lsof -i :8080 # 找出占用端口的 PID,比如是 1234
sudo kill 1234 # 终止该进程
⚠️ 有些进程可能需要强制杀死:
sudo kill -9 1234
3. 实时查看
查看所有监听的端口:
sudo ss -tuln
t= TCPu= UDPl= listening(监听中)n= 显示数字端口号而不是服务名
监控某个端口是否开放:
watch -n 1 'sudo ss -ltnp | grep :8000'
每秒刷新一次,实时监控端口状态。
(四)后台进程管理
1. Screen 工具
screen 是一个终端多 路复用器,你可以在里面开启多个会话,每个会话都是一个“独立的终端”,即使你断开 SSH,里面的任务也照常运行。每个用户的 screen 列表都是互相隔离的。
安装 screen
sudo apt update
sudo apt install screen
常用命令汇总
| 命令 | 作用 |
|---|---|
screen | 启动一个新的 screen 会话 |
screen -S name | 启动一个命名会话(推荐) |
Ctrl + A 然后按 D | detach(从会话中退出,不关闭) |
screen -ls | 查看当前所有会话 |
screen -r name | 重新连接(resume)一个会话 |
screen -X -S name quit | 杀死某个会话 |
2. tmux 工具
tmux和 screen 类似但是功能更强,适合多窗口管理界面化得更好。
(五)解压和压缩
部分工具安装指令,
sudo apt install unzip
sudo apt install unrar
sudo apt install p7zip-full
| 格式 | 压缩命令 | 解压命令 |
|---|---|---|
.tar | tar -cvf file.tar dir/ | tar -xvf file.tar |
.tar.gz | tar -czvf file.tar.gz dir/ | tar -xzvf file.tar.gz |
.zip | zip -r file.zip dir/ | unzip file.zip |
.rar | unrar x | unrar x file.rar |
.7z | 7z a file.7z dir/ | 7z x file.7z |
(六)系统服务
1. 已有的系统服务
这里以 nginx 服务为例
| 功能 | 命令 |
|---|---|
| 启动 Nginx | sudo systemctl start nginx |
| 停止 Nginx | sudo systemctl stop nginx |
| 重启 Nginx | sudo systemctl restart nginx |
| 重载配置 | sudo systemctl reload nginx |
| 查看状态 | sudo systemctl status nginx |
| 开机自启 | sudo systemctl enable nginx |
| 禁用自启 | sudo systemctl disable nginx |
2. 创建自定义系统服务
首先创建一个服务文件
服务文件 myapp.service 通常放在 /etc/systemd/system/ 下(系统级),或 ~/.config/systemd/user/(用户级):
以下是一个示例服务文件,用于在 Ubuntu 中注册并管理一个 Python 应用或任何后台程序:
[Unit]
Description=My Custom App Service
After=network.target
[Service]
ExecStart=/usr/bin/python3 /home/youruser/myapp.py
WorkingDirectory=/home/youruser/
Restart=always
User=youruser
Environment=ENV_VAR=value
[Install]
WantedBy=multi-user.target
systemd 的服务单元(
.service文件)由三大部分组成:
[Unit]:定义服务的描述和依赖条件[Service]:定义服务的行为[Install]:定义如何启用 服务
配置项 含义 Description=My Custom App Service显示服务的简要描述, systemctl status或日志中可见。After=network.target表示此服务应在 network.target(网络初始化完成)之后再启动。适合依赖网络的服务,如 Web 服务、数据库等。ExecStart=/usr/bin/python3 /home/youruser/myapp.py指定服务启动时运行的命令,比如执行一个 Python 脚本。需要填写完整路径。 WorkingDirectory=/home/youruser/设置服务运行的当前工作目录。相对路径、依赖文件等都以这个目录为基础。 Restart=always如果程序崩溃或退出,systemd 会自动重启它。可选项有 no,on-failure,always,on-abort等。User=youruser指定服务运行的 Linux 用户,建议使用非 root 用户运行一般程序,提高安全性。 Environment=ENV_VAR=value设置环境变量,在程序启动前注入。可以设置多个,比如 ENV1=val1 ENV2=val2。WantedBy=multi-user.target表示当系统运行到 multi-user.target(正常多用户图形/非图形模式)时自动启动这个服务。用于实现开机自启。
启动流程总结(假设服务名为 myapp.service)
sudo systemctl daemon-reload # 通知 systemd 读取新服务文件
sudo systemctl enable myapp.service # 设置开机自启
sudo systemctl start myapp.service # 启动服务
sudo systemctl status myapp.service # 查看运行状态
-
路径错误:
ExecStart的路径必须是完整路径,可以用which python3查找。 -
权限问题:
User=youruser指定用户必须有权限访问相关目录和文件。 -
服务未运行:查看日志排错:
journalctl -u myapp.service -xe
3. 管理自定义系统服务
启动与管理服务
| 操作 | 命令 |
|---|---|
| 重新加载服务配置 | sudo systemctl daemon-reexec 或 daemon-reload |
| 启动服务 | sudo systemctl start myapp.service |
| 停止服务 | sudo systemctl stop myapp.service |
| 重启服务 | sudo systemctl restart myapp.service |
| 查看服务运行状态 | sudo systemctl status myapp.service |
| 设置开机自启 | sudo systemctl enable myapp.service |
| 关闭开机自启 | sudo systemctl disable myapp.service |
| 查看所有自定义服务 | systemctl list-units --type=service |
使用 journalctl 查看输出日志:
journalctl -u myapp.service
跟踪实时输出:
journalctl -u myapp.service -f
Restart=always会在服务异常退出时自动重启;- 如果你只想在当前用户会话中使用服务,可将
.service文件放在~/.config/systemd/user/,并使用systemctl --user管理; - 脚本类服务也可用
ExecStart=/bin/bash /path/to/script.sh形式运行
(七)查看系统基本属性
你已经通过 SSH 登录到服务器,现在可以使用以下命令组来系统性地查看:
1. 操作系统信息
cat /etc/os-release
或更简洁版本:
lsb_release -a
2. 内存信息(RAM)
free -h
或查看更详细内存 + 交换空间:
cat /proc/meminfo