建站新手第一次拿到VPS不知道如何操作,第一次SSH进服务器,很多人的感觉是:黑屏、光标、不知道该干什么。其实Linux命令没那么难,日常管理VPS真正用到的命令就那几十个,剩下的遇到了查一下就行。
SSH连接
最基础的连接命令:
ssh root@你的服务器IP
第一次连接会弹出指纹确认提示,输入yes回车即可。之后每次连接这台服务器就不会再问了。
如果服务商默认端口不是22,或者你已经修改过SSH端口(推荐这么做),加上-p指定端口:
ssh -p 2222 root@你的服务器IP
用SSH密钥登录比密码更安全,私钥在本地,服务器只存公钥,暴力破解基本无效:
# 本地生成密钥对
ssh-keygen -t ed25519
# 上传公钥到服务器
ssh-copy-id -p 2222 root@你的服务器IP
# 之后用密钥登录
ssh -i ~/.ssh/id_ed25519 -p 2222 root@你的服务器IP
密钥登录配好之后,建议在/etc/ssh/sshd_config里把PasswordAuthentication改成no,彻底关掉密码登录。
文件和目录操作
这几个命令每天都会用到:
ls # 列出当前目录内容
ls -lh # 显示详细信息,文件大小用人类可读格式
cd /var/www # 进入指定目录
cd .. # 返回上一级
cd ~ # 回到home目录
pwd # 显示当前所在路径
创建和删除:
mkdir myapp # 创建目录
mkdir -p a/b/c # 递归创建多层目录
touch config.env # 创建空文件
rm file.txt # 删除文件
rm -rf folder/ # 删除整个目录(不可恢复,慎用)
rm -rf是我见过新手最容易翻车的命令。执行前确认路径,特别是路径里有变量的时候,路径为空可能变成删根目录。
复制和移动:
cp file.txt backup.txt # 复制文件
cp -r folder/ backup_folder/ # 复制整个目录
mv file.txt /home/user/ # 移动文件
mv oldname.txt newname.txt # 重命名
查看文件内容:
cat config.txt # 直接输出全部内容
less config.txt # 分页查看,q退出
tail -f /var/log/nginx/error.log # 实时追踪日志输出
grep "error" app.log # 在文件里搜索关键词
tail -f是排查问题时最常用的命令之一,特别是看Nginx报错或者服务启动失败的时候,开一个终端跑tail -f实时看日志,另一个终端操作,问题出在哪一步一目了然。
权限控制
用ls -l看文件权限:
ls -l /var/www/html
# 输出示例:
# -rw-r--r-- 1 www-data www-data 1234 index.html
开头的-rw-r--r--就是权限字符串,分三组:文件所有者、所属组、其他人,每组三位分别是读(r=4)、写(w=2)、执行(x=1)。
chmod修改权限:
chmod 755 deploy.sh # 所有者可读写执行,其他人可读可执行
chmod 644 config.txt # 所有者可读写,其他人只读
chmod -R 755 /var/www # 递归修改整个目录
常见权限数字快速记忆:755给脚本和目录,644给普通文件,600给私钥文件。
chown修改所有者:
chown www-data:www-data /var/www/html
chown -R www-data:www-data /var/www # 递归修改整个目录
Nginx和Apache通常以www-data用户运行,网站文件所有者要设对,否则会出现403权限错误。这是新手部署WordPress最常遇到的坑之一。
进程和系统管理
查看系统资源占用:
top # 实时监控CPU和内存,q退出
htop # 更好看的版本,需要先安装:apt install htop
ps aux # 列出所有进程
ps aux | grep nginx # 找特定进程
结束进程:
kill 1234 # 发送终止信号,进程可以做清理
kill -9 1234 # 强制立刻结束,不给清理机会
pkill nginx # 按进程名结束
查看端口占用(排查"端口已被占用"问题):
ss -tulpn
# 或者
netstat -tulpn # 需要安装net-tools
查看磁盘和内存:
df -h # 磁盘使用情况
du -sh /var/www # 某个目录占用多少空间
free -h # 内存使用情况
软件安装(Ubuntu/Debian)
apt update # 更新软件包列表
apt upgrade -y # 升级所有已安装包
apt install nginx -y # 安装软件
apt remove nginx # 卸载软件
apt autoremove # 清理不再需要的包
查找软件包:
apt search nginx
服务管理(systemd)
现代Linux用systemd管理服务:
systemctl start nginx # 启动
systemctl stop nginx # 停止
systemctl restart nginx # 重启
systemctl reload nginx # 重新加载配置(不中断连接)
systemctl enable nginx # 设置开机自启
systemctl disable nginx # 取消开机自启
systemctl status nginx # 查看服务状态
status命令是排查问题的第一步,能看到服务是否在运行、最近的日志输出、以及退出代码。
查看详细日志:
journalctl -u nginx # 查看某个服务的完整日志
journalctl -u nginx -f # 实时追踪
journalctl -u nginx --since "1 hour ago" # 看最近一小时的日志
网络调试
ping google.com # 测试连通性,Ctrl+C停止
curl -I https://example.com # 查看HTTP响应头
wget https://example.com/file.tar.gz # 下载文件
ip a # 查看网络接口和IP地址
路由追踪(排查网络问题):
traceroute google.com
mtr google.com # 更好用的版本,实时显示
提高效率的几个技巧
Tab键自动补全路径和命令名,这个习惯能省很多时间,也能避免路径打错。
方向键上下翻历史命令,history查看所有历史记录,!1234执行历史里第1234条命令。
Ctrl+C中断当前命令,Ctrl+Z把当前命令放到后台,fg把它拉回来继续。
管道符|把命令组合起来:
# 找出占用内存最多的前5个进程
ps aux --sort=-%mem | head -5
# 在日志里实时过滤包含error的行
tail -f /var/log/nginx/error.log | grep "error"
# 统计某个目录下的文件数量
ls /var/www | wc -l
快速备忘表
| 场景 | 命令 |
|---|---|
| 连接服务器 | ssh root@IP |
| 查看目录内容 | ls -lh |
| 进入目录 | cd /path |
| 删除文件 | rm file 或 rm -rf folder |
| 修改权限 | chmod 755 file |
| 修改所有者 | chown user:user file |
| 查看资源 | htop 或 top |
| 查看端口 | ss -tulpn |
| 查看磁盘 | df -h |
| 安装软件 | apt install xxx -y |
| 服务管理 | systemctl start/stop/status |
| 实时日志 | tail -f logfile |
命令不需要一次全部记住,遇到具体需求的时候查一下,多用几次自然就记住了。真正影响效率的是遇到问题知道该用什么命令去查,而不是背下来所有参数。