为什么要把服务跑在 Linux 上
部署线上服务的时候,Linux 是绕不开的选择。它的稳定性确实让人放心——很多机器跑上几年都没崩过,相比之下 Windows 动不动就蓝屏或卡死,完全没法比。另外,Linux 源码开放,没有闭源商业系统那些说不清的'后门',用起来心里有底。
目录结构:一切皆文件
Linux 的目录布局是统一且清晰的,挑几个关键的说一下:
/bin:存放最常用的命令,实际是个到/usr/bin的快捷方式。/sbin:管理员用的管理程序。/home:普通用户的家目录,每个用户一个文件夹。/root:超级管理员的家目录。/etc:所有系统配置文件都塞在这里。/usr:类似 Windows 的 Program Files,用户装的大部分软件都在这里。/var:经常变动的文件,比如日志、数据库文件。/tmp:临时文件,重启后可能清理掉。/proc和/sys:虚拟目录,反映内存和内核状态,别往里面写东西。/opt:可选的第三方软件安装目录,比如自己编译的 nginx 可以丢进去。/mnt和/media:挂载点,/mnt通常临时用,/media是系统自动挂载 U 盘之类的地方。
其他目录(/boot、/lib、/dev、/lost+found、/srv、/www)在服务器日常维护里不那么频繁出现,用到时查手册就行。
编辑器:vi / vim
vim 是 vi 的加强版,用语法高亮帮你排错。打开文件默认是正常模式,按 i 进编辑模式,改完了按 Esc 退出,然后 :wq 保存退出。不想记太多快捷键?先会用这几个,以后慢慢补。
网络配置
改 IP 地址
网络配置文件在 /etc/sysconfig/network-scripts/ifcfg-ens33(不同系统可能名字不同),编辑完执行:
service network restart
主机名和 hosts
查当前主机名:
hostname
永久改主机名可以编辑 /etc/hostname,重启生效。如果想不重启临时生效,用 hostnamectl set-hostname 新名字。
/etc/hosts 加一行 IP 和主机名的映射,之后就能用主机名互相访问了:
vim /etc/hosts
# 添加类似 192.168.1.10 myserver
服务管理
旧系统用 service 命令,新系统用 systemctl。推荐直接用 systemctl。
systemctl start|stop|restart|status 服务名
systemctl enable|disable 服务名 # 开机自启
所有服务定义在 /usr/lib/systemd/system/,用 systemctl list-unit-files 可以看所有单元状态。
防火墙
CentOS/RHEL 用 firewalld,Debian/Ubuntu 可能用 ufw,这里只说 firewalld。
开关防火墙和自启动:
systemctl stop firewalld
systemctl start firewalld
systemctl enable firewalld
systemctl disable firewalld
端口管理:
firewall-cmd --list-ports
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --remove-port=8080/tcp --permanent
firewall-cmd --reload
只对特定 IP 开放端口:
firewall-cmd --permanent --add-rich-rule="rule family=\"ipv4\" source address=\"192.168.1.100\" port port=\"5432\" protocol=\"tcp\" accept"
firewall-cmd --reload
关机重启与系统信息
先 sync 把内存数据同步到磁盘,再执行关机或重启:
sync
reboot
shutdown -h now
查看内核版本:uname -a
查看 CentOS 具体版本:cat /etc/centos-release
常用命令速查
文件与目录
pwd:当前目录绝对路径。ls:查看目录内容,常用组合:ls -lh(人性化大小、长格式)、ls -a(显示隐藏文件)。cd:切换目录,cd -回到上一次的目录。mkdir -p a/b/c:递归创建多级目录。rmdir:只能删空目录,不常用。touch file:创建空文件或更新文件时间。cp:复制,cp -r递归复制目录。rm:删除,rm -rf强制递归删除,谨慎使用。mv:移动或重命名。cat -n:查看小文件,显示行号。more和less:分屏查看大文件,less更强大,可以用/搜索。echo:输出文本,echo -e支持转义字符。tail -n 行数:看尾部内容,tail -f实时跟踪日志。>和>>:输出重定向,>覆盖,>>追加。ln -s 原文件 链接名:创建软链接(快捷方式)。history:历史命令,history -c清空。date:显示日期,date -s设置系统时间。
用户和组
useradd 用户名
passwd 用户名
usermod -g 组名 用户名
groupadd 组名
userdel -r 用户名 # 删掉用户和家目录
id 用户名 # 检查用户是否存在
su - 用户名 # 切换用户并加载环境变量
sudo 授权普通用户执行 root 命令,需提前在 /etc/sudoers 配置。
权限管理
ll 看到的那一串 -rwxr-xr-- 中:
- 第一个字符:
-文件,d目录,l链接。 - 后9位每三位一组:所有者、属组、其他人的权限。
r读,w写,x执行。
修改权限两种方式:
chmod u+x,g-w,o=r 文件 # 符号模式
chmod 755 文件 # 数字模式,r=4,w=2,x=1
chmod -R 755 目录 # 递归修改整个目录
改所有者:chown -R 用户:组 目录
查找与过滤
find 目录 -name "*.log":按名字或大小查找。locate:从数据库快速定位,首次用需updatedb。grep:文本搜索,常用选项-i忽略大小写、-n显示行号、-r递归、-v排除。- 管道符
|:把前一个命令的结果传给后面的命令,比如ps -ef | grep java。
压缩与解压
gzip 文件:压缩单个文件,不保留原文件。gunzip解压。zip 压缩名.zip 源:可以打包目录,保留原文件。unzip解压,-d指定目标目录。tar -zcvf 包名.tar.gz:打包并 gzip 压缩。tar -zxvf解压,-C指定目录。
磁盘与分区
df -h:查看磁盘整体使用情况。du -sh *:当前目录下各文件或子目录的磁盘占用。lsblk:列出块设备挂载情况。mount 设备 挂载点:挂载,umount卸载。fdisk -l:查看磁盘分区,fdisk 设备进入分区编辑界面(需 root)。
进程管理
ps aux或ps -ef:列出进程,经常配合grep查找特定进程。kill -9 PID:强制杀死进程。pstree -p:树状显示进程关系。top:实时监控系统负载。netstat -anp | grep 端口:查端口占用。crontab -e:设置定时任务,每行分 时 日 月 周 命令,别忘了重启服务systemctl restart crond。
软件包管理
Red Hat 系用 RPM 和 YUM。RPM 底层,需要手动处理依赖;YUM 会自动解决依赖并安装。
RPM:
rpm -ivh 包名.rpm
rpm -qa | grep 关键字
rpm -e 包名 # 卸载,--nodeps 忽略依赖检查
YUM:
yum install 包名
yum remove 包名
yum update 包名
YUM 的仓库配置在 /etc/yum.repos.d/,国内通常换成阿里云或清华镜像源以提速。

