Linux¶
本文件旨在介绍 Debian Linux 的常用命令,以及主要应用和服务的配置和管理,例如,Nginx、GatLab 等的配置和管理。
Bash Shell¶
-
常用 Bash 命令
10 个最常用 Bash 命令
排名 命令 常用场景 排名 命令 常用场景 1 ls查看当前目录内容 6 cp拷贝文件/目录 2 cd界面切换目录 7 mv移动或重命名项目 3 pwd确认当前所在目录 8 touch新建或更新文件时间 4 mkdir创建新目录 9 cat查看或合并文件内容 5 rm删除文件/目录 10 grep文本模式搜索 -
Bash 终端下,常用应用
Bash 终端下,常用应用
序号 应用/命令 说明与用途 1 bash / shell 命令行解释器,执行用户输入的命令,如运行脚本、执行系统命令 2 vim 文本编辑器,用于编辑配置文件和代码 3 ssh 远程登录工具,用于连接远程服务器 4 scp / rsync 文件传输工具,用于复制文件和备份同步 5 top / htop 系统资源监控,查看进程、CPU和内存使用情况 6 git 版本控制工具,管理代码版本和协同开发 7 curl / wget 网络下载工具,用于下载文件和测试网络接口 8 tmux / screen 终端复用器,管理多个终端会话,支持断线重连 9 apt / apt-get 软件包管理器,用于安装、升级和卸载软件 10 grep / awk / sed 文本处理工具,用于筛选日志和格式化数据 -
Debian 服务器上,常用服务
Debian 服务器上,常用服务
序号 应用名称 说明与用途 1 OpenSSH 远程管理,提供安全的远程登录和终端访问 2 Exim4 系统通知邮件服务,处理系统和应用邮件传输 3 Apache2 或 Nginx Web 服务,运行网站和 Web 应用服务器 4 MariaDB / MySQL / PostgreSQL 数据库服务器,存储和管理应用数据 5 Samba / NFS 文件共享服务,实现跨平台文件访问和网络存储 6 DNS / DHCP / Proxy 网络基础设施服务,提供域名解析、IP分配和代理服务 7 CUPS 打印服务,支持网络打印和共享打印机 8 Nagios / Zabbix / Netdata 系统监控,实时监控服务器状态和性能 9 Fail2ban / firewalld / iptables 安全防护,防止恶意攻击和管理防火墙规则 10 rsyslog / logrotate 日志管理,收集、存储和轮替系统及应用日志 -
cat 命令速查表
cat是 Linux/Unix 中最常用的文件操作命令之一,用于查看、合并和创建文件。常用选项
选项 功能 -n为所有行编号(包括空行)。 -b仅为非空行编号。 -s将连续的空行压缩为一行。 -E在每行末尾显示 $,方便排查换行。-T将 TAB 显示为 ^I,方便排查缩进。-A显示所有不可见字符(等价于 -vET)。常见用法
命令 用途 cat -n file.txt显示文件并编号(含空行)。 cat -b file.txt显示文件并编号(忽略空行)。 cat -s file.txt显示文件并压缩多余空行。 cat -E file.txt显示文件行尾 $。cat -A file.txt调试文件:显示不可见字符。 cat file1 file2 > merged.txt合并多个文件到新文件。 cat file1 >> file2将 file1 追加到 file2。 cat > newfile
(Ctrl+D 保存)从键盘创建文件。 cat >> file
(Ctrl+D 保存)从键盘向已有文件追加。 cat file | less分页查看大文件。 cat -n file | grep "关键字"查找关键字并显示行号。 cat /dev/null > file快速清空文件内容。 小技巧
- 排查文件隐藏字符 →
cat -A file.txt - 快速清空日志文件 →
cat /dev/null > file.log - 带行号搜索 →
cat -n file.txt | grep "pattern"
- 排查文件隐藏字符 →
-
实时追踪日志文件 (以 GitLab 为例)
这个命令的目的是以管理员权限实时追踪 GitLab 的多个关键日志文件,并即时过滤出所有包含特定错误关键词的行,以便开发者或管理员能够快速诊断问题。
这是一个管道命令,它由三个主要部分组成:
sudo bash -c
sudo: 以超级用户(root)权限运行后面的命令。这是因为 GitLab 的日志文件通常由 git 用户或 root 用户拥有,普通用户没有权限读取;
bash -c '...': 使用 bash 来执行引号中的单行命令。这确保了整个命令作为一个整体被执行,特别是当命令中包含管道符 | 时tail -f
tail: 用于显示文件的末尾内容;
-f: 这是 follow 的缩写,意思是“持续追踪”。它会实时监听指定文件的新增内容,并将其输出到标准输出(屏幕)。这对于监控正在运行的应用程序产生的日志非常有用grep --line-buffered -E "..."
|: 这是一个管道符(pipe),它将前一个命令(tail)的输出作为后一个命令(grep)的输入;
--line-buffered: 这个选项非常重要。当 grep 接收来自管道的输入时,它通常会缓冲数据。这个选项强制 grep 在处理完每一行之后立即输出结果,而不是等待缓冲区填满。这对于实时日志监控至关重要,因为它能确保你立即看到新出现的匹配行;
-E: 启用扩展正则表达式,这样你就可以使用 | 来表示“或”关系
curl 简介¶
curl 是一个用来在命令行下进行数据传输的工具,支持多种协议(HTTP、HTTPS、FTP、SFTP 等)。它常用于调试网络请求、下载文件或与 API 交互。
curl 常用命令介绍
| # | 命令 | 参数介绍 | 作用说明 |
|---|---|---|---|
| 1 | curl -v | -v (verbose), 详细模式 |
详细模式,显示请求和响应的详细信息(请求头、响应头等) |
| 2 | curl -X <方法> | -X (request method) |
指定 HTTP 请求方法,如 GET、POST、PUT、DELETE 等 |
| 3 | curl -d <数据> | -d (data) |
发送 POST 请求时提交的数据,支持字符串或从文件读取数据 |
| 4 | curl -H <头> | -H (header) |
自定义 HTTP 头部,如 -H "Content-Type: application/json" |
| 5 | curl -o <文件> | -o (output) |
将响应内容保存到指定文件,而不是输出到终端 |
| 6 | curl -I | -I |
仅获取响应头信息,不返回响应体 |
| 7 | curl -L | -L (location) |
跟随服务器的重定向(HTTP 3xx 响应) |
| 8 | curl -u 用户名:密码 | -u (user) |
进行 HTTP 基本认证,提供用户名和密码 |
| 9 | curl --data-urlencode <数据> | --data-urlencode |
发送 URL 编码后的数据 |
| 10 | curl --compressed | --compressed |
请求服务器返回压缩内容(如 gzip)并自动解压 |
| 11 | curl -k | -k (insecure) |
忽略 HTTPS 证书验证,允许访问自签名证书的 HTTPS 网站 |
| 12 | curl -s | -s (silent) |
静默模式,不输出进度和错误信息 |
curl 详细用法示例¶
-
发送 GET 请求
-
发送 POST 请求
-
添加自定义请求头
-
认证相关
-
下载和保存文件
-
处理 Cookie
-
忽略 HTTPS 证书验证
-
支持压缩传输
-
超时控制
-
发送 PUT 和 DELETE 请求
Nginx¶
Nginx 常用命令¶
Nginx 最常用的 10 个命令
| 序号 | 命令 | 作用和使用场景 |
|---|---|---|
| 1 | sudo nginx |
启动 Nginx; 第一次启动或服务未运行时启动 |
| 2 | sudo nginx -s stop |
立即停止 Nginx; 紧急停止服务(不保存连接) |
| 3 | sudo nginx -s quit |
平滑停止 Nginx; 优雅退出,处理完当前连接再停止 |
| 4 | sudo nginx -s reload |
重新加载配置文件; 修改了配置文件后生效,不中断连接 |
| 5 | sudo nginx -t |
测试配置文件是否正确; 修改配置后先检查语法错误 |
| 6 | sudo nginx -T |
测试并输出完整配置; 调试配置文件时查看合并结果 |
| 7 | nginx -V |
不确定当前系统 Nginx 配置文件位置时; 显示编译参数和模块信息 |
| 8 | sudo systemctl start nginx |
启动 Nginx(systemd 管理); 使用 systemd 管理服务 |
| 9 | sudo systemctl stop nginx |
停止 Nginx(systemd 管理); 停止服务 |
| 10 | sudo systemctl restart nginx |
重启 Nginx(systemd 管理); 配置大改后重新启动 |
| 11 | sudo systemctl status nginx |
查看 Nginx 状态; 查看是否运行、最近日志等 |
| 12 | sudo systemctl enable nginx |
开机自动启动 Nginx 服务 |
| 13 | tail -f /var/log/nginx/error.log |
查看错误日志 |
| 14 | sudo netstat -tulnp | grep nginx |
查看监听端口 |
- sudo nginx -t
- sudo systemctl reload nginx
- 一般执行流程
systemctl 是管理 systemd 系统服务的命令,详见 systemd 系统服务中的介绍
主要文件夹和文件¶
| 文件夹 | 作用简介 | 文件 | 作用简介 |
|---|---|---|---|
| conf.d | 额外配置文件目录 | fastcgi.conf | FastCGI 参数配置 |
| modules-available | 可用模块配置 | fastcgi_params | FastCGI 参数(旧版) |
| modules-enabled | 已启用模块配置 | koi-utf | KOI8-R 与 UTF-8 映射表 |
| sites-available | 可用虚拟主机配置 | koi-win | KOI8-R 与 Windows 编码映射 |
| sites-enabled | 已启用虚拟主机配置 | mime.types | MIME 类型映射文件 |
| snippets | 配置片段(复用配置) | nginx.conf | Nginx 主配置文件 |
| proxy_params | 代理相关请求头配置 | ||
| scgi_params | SCGI 参数配置 | ||
| uwsgi_params | uWSGI 参数配置 | ||
| win-utf | Windows 编码与 UTF-8 映射表 |
-
conf.d
存放通用配置文件片段,这些文件会被主配置文件 nginx.conf 自动包含。默认规则:include /etc/nginx/conf.d/*.conf;所以放在 conf.d/ 目录里、扩展名是 .conf 的文件都会被加载。
常见用途:配置额外的虚拟主机(server 块); 设置全局反向代理、缓存、限流等; 按功能拆分配置文件,方便管理
特点:放进去的 .conf 文件会自动生效,不需要手动“启用”,只要语法正确 Nginx 就会加载 -
sites-available
存放站点配置文件(通常是 server 块),默认规则:Nginx 主配置文件中并不会直接include sites-available/*所以这个目录只是一个仓库,用来放置所有可能要启用的站点配置。
特点:存放的配置不会自动生效,用来“备份”或存档所有的站点配置,方便管理 -
sites-enabled
优点:方便启用/停用某个站点配置,不用改文件内容,只操作软链接;避免直接修改生效文件,减少风险
存放已启用的站点配置文件,由主配置文件 nginx.conf 引入。在 nginx.conf 里有这样一行:include /etc/nginx/sites-enabled/*;sites-enabled 里的文件通常不是直接写的,而是软链接到 sites-available 里的文件:
Nginx 配置决策图¶
flowchart LR
A["你要添加的是 Nginx 配置吗?"]
A --> B{"这个配置会不会频繁启用/禁用?"}
B -- "是" --> C["配置是某个站点(server块)"]
B -- "否" --> D["配置是通用功能或固定站点"]
C --> E["放到 sites-available; ln -s 到 sites-enabled"]
D --> F["放到 conf.d(会自动加载)"]