好的,各位尊敬的“码农”、未来的“架构师”、以及偶尔迷失在代码海洋里的“程序猿”们,大家好!今天咱们不聊高深的算法,也不谈玄乎的架构,咱们来聊聊各位赖以生存的“老伙计”——Linux 服务器。
与其说这是篇技术文章,不如说这是一场“Linux 服务器基础运维生存指南”,教你如何优雅地玩转 Linux,避免在关键时刻掉链子,甚至还能在老板面前秀一把操作,赢得加薪升职的机会。😎
一、Linux:你真的了解它吗?(前戏很重要!)
别看 Linux 长得一副“极客”样,黑底白字,冷冰冰的,其实它内心住着一个“管家婆”。它负责管理服务器上的一切,从软件的安装卸载,到硬件资源的分配,再到网络连接的维护,无所不能。
想象一下,你的代码是“公主”,需要一个坚实的城堡来保护,Linux 就是那个城堡,而运维就是城堡的“守护者”。守护者不给力,公主就会被“Bug”这个恶龙抓走! 🐉
所以,学好 Linux 运维,就是为了保护你的“公主”,让你的代码在服务器上安全稳定地运行。
二、常用命令:行走江湖的必备技能
Linux 的世界里,命令就是你的“魔法咒语”,掌握了这些咒语,你就能呼风唤雨,掌控全局。别怕命令多,咱们化繁为简,把常用的命令分成几类,方便记忆。
-
文件操作类:增删改查,一个都不能少!
-
ls
: 列出文件和目录。相当于“鹰眼”,扫视全局。ls -l
: 详细列表,看到更多信息(权限、大小、修改时间等)。ls -a
: 显示所有文件,包括隐藏文件(以.
开头的文件)。ls -t
: 按修改时间排序。ls -R
: 递归显示所有子目录。
举个栗子🌰:
ls -l /home/user/documents
,查看/home/user/documents
目录下的文件详情。 -
cd
: 切换目录。相当于“传送术”,想去哪儿就去哪儿。cd ..
: 返回上一级目录。cd ~
: 回到用户主目录。cd -
: 返回上一次所在的目录。
举个栗子🌰:
cd /var/log
,进入/var/log
目录,看看系统日志。 -
pwd
: 显示当前目录。相当于“定位术”,迷路了就靠它。举个栗子🌰:直接输入
pwd
,屏幕会显示你当前所在的目录。 -
mkdir
: 创建目录。相当于“造房子”,想要多少房子都行。mkdir -p /path/to/new/directory
: 创建多层目录,如果父目录不存在,会自动创建。
举个栗子🌰:
mkdir -p /home/user/project/docs
,创建/home/user/project/docs
目录。 -
rmdir
: 删除空目录。相当于“拆房子”,前提是房子里没人住(没有文件)。举个栗子🌰:
rmdir /home/user/empty_dir
,删除/home/user/empty_dir
目录。 -
touch
: 创建空文件。相当于“画个圈”,先占个地儿。举个栗子🌰:
touch my_new_file.txt
,创建一个名为my_new_file.txt
的空文件。 -
rm
: 删除文件或目录。相当于“彻底摧毁”,请谨慎使用!rm -r
: 递归删除目录及其内容。rm -f
: 强制删除,不提示。rm -rf /
: 千万不要作死! 这是一个“毁灭地球”的命令。
举个栗子🌰:
rm -rf /home/user/temp_files
,彻底删除/home/user/temp_files
目录。 -
cp
: 复制文件或目录。相当于“克隆术”,复制粘贴大法好。cp -r
: 递归复制目录及其内容。
举个栗子🌰:
cp -r /home/user/old_project /home/user/new_project
,复制/home/user/old_project
目录到/home/user/new_project
。 -
mv
: 移动或重命名文件或目录。相当于“搬家术”或“改名术”。举个栗子🌰:
mv my_file.txt new_file.txt
,将my_file.txt
重命名为new_file.txt
。
-
-
文件内容查看类:窥探秘密的窗口
-
cat
: 显示文件内容。相当于“一口气读完”,适合小文件。举个栗子🌰:
cat /etc/passwd
,查看系统用户列表。 -
less
: 分页显示文件内容。相当于“慢慢品读”,适合大文件。空格键
: 向下翻页。b
: 向上翻页。/keyword
: 搜索关键字。q
: 退出。
举个栗子🌰:
less /var/log/syslog
,分页查看系统日志。 -
head
: 显示文件头部几行。相当于“开个头”,了解大概。head -n 10
: 显示文件前 10 行。
举个栗子🌰:
head -n 5 /var/log/apache2/access.log
,查看 Apache 访问日志的前 5 行。 -
tail
: 显示文件尾部几行。相当于“收个尾”,关注最新动态。tail -n 10
: 显示文件最后 10 行。tail -f
: 实时追踪文件更新。
举个栗子🌰:
tail -f /var/log/nginx/error.log
,实时查看 Nginx 错误日志。 -
grep
: 查找文件中包含指定字符串的行。相当于“大海捞针”,找到关键信息。grep -i
: 忽略大小写。grep -v
: 反向查找,显示不包含指定字符串的行。
举个栗子🌰:
grep "error" /var/log/syslog
,在系统日志中查找包含 "error" 的行。
-
-
进程管理类:掌控全局的指挥官
-
ps
: 显示当前进程状态。相当于“点名”,看看谁在工作。ps aux
: 显示所有用户的进程,包括详细信息。ps -ef
: 另一种显示所有进程的方式。
举个栗子🌰:
ps aux | grep nginx
,查看所有包含 "nginx" 的进程。 -
top
: 实时显示系统资源占用情况。相当于“体检报告”,了解服务器健康状况。CPU 使用率
: CPU 的繁忙程度。内存使用率
: 内存的剩余空间。swap 使用率
: 交换空间的使用情况,如果 swap 使用率很高,说明内存不足。
举个栗子🌰:直接输入
top
,观察 CPU 和内存的使用情况。 -
kill
: 终止进程。相当于“枪毙”,解决顽固分子。kill -9 <PID>
: 强制终止进程,不给它任何机会。
举个栗子🌰:
kill -9 12345
,强制终止 PID 为 12345 的进程。 -
bg
: 将进程放到后台运行。相当于“挂机”,让它自己慢慢跑。举个栗子🌰:先运行一个耗时很长的命令,然后按
Ctrl+Z
暂停,再输入bg
将它放到后台运行。 -
fg
: 将后台进程放到前台运行。相当于“召回”,重新掌控它。举个栗子🌰:输入
fg
将最近放到后台的进程召回到前台。
-
-
用户和权限管理类:保护你的“数据王国”
-
useradd
: 创建新用户。相当于“增加人口”,壮大你的“王国”。举个栗子🌰:
useradd newuser
,创建一个名为newuser
的新用户。 -
passwd
: 设置用户密码。相当于给“王国”的公民发放“身份证”。举个栗子🌰:
passwd newuser
,设置newuser
的密码。 -
userdel
: 删除用户。相当于“驱逐出境”,剔除不必要的成员。userdel -r <username>
: 删除用户及其主目录。
举个栗子🌰:
userdel -r olduser
,删除olduser
用户及其主目录。 -
chown
: 更改文件或目录的所有者。相当于“产权变更”,改变文件的归属。举个栗子🌰:
chown newuser myfile.txt
,将myfile.txt
的所有者更改为newuser
。 -
chgrp
: 更改文件或目录的所属组。相当于“划分势力范围”,改变文件的所属组。举个栗子🌰:
chgrp newgroup myfile.txt
,将myfile.txt
的所属组更改为newgroup
。 -
chmod
: 更改文件或目录的权限。相当于“设置门禁”,控制谁可以访问。chmod 777 myfile.txt
: 所有人都有读、写、执行权限(不推荐)。chmod 755 myfile.txt
: 所有者有读、写、执行权限,所属组和其他人只有读、执行权限(常用)。
举个栗子🌰:
chmod 755 my_script.sh
,给my_script.sh
脚本添加执行权限。
-
-
网络管理类:连接世界的桥梁
-
ping
: 测试网络连通性。相当于“发送信号”,看看对方是否在线。举个栗子🌰:
ping baidu.com
,测试是否可以连接到百度。 -
ifconfig
或ip addr
: 显示网络接口信息。相当于“身份证明”,展示你的网络配置。举个栗子🌰:直接输入
ifconfig
或ip addr
,查看 IP 地址、MAC 地址等信息。 -
netstat
或ss
: 显示网络连接状态。相当于“交通监控”,了解网络流量情况。netstat -tulnp
: 显示所有 TCP 和 UDP 端口的监听状态。
举个栗子🌰:
netstat -tulnp | grep 80
,查看 80 端口的监听状态。 -
ssh
: 远程登录到服务器。相当于“时空穿梭”,远程控制服务器。举个栗子🌰:
ssh [email protected]
,以user
用户身份登录到 IP 地址为192.168.1.100
的服务器。
-
-
系统信息类:了解“身体状况”
-
uname
: 显示系统信息。相当于“出生证明”,告诉你服务器的操作系统类型。uname -a
: 显示所有系统信息。
举个栗子🌰:直接输入
uname -a
,查看内核版本、主机名等信息。 -
df
: 显示磁盘空间使用情况。相当于“仓库盘点”,了解硬盘剩余空间。df -h
: 以人类可读的格式显示磁盘空间。
举个栗子🌰:
df -h
,查看所有磁盘分区的空间使用情况。 -
du
: 显示目录或文件占用的磁盘空间。相当于“账单明细”,了解哪些文件占用了大量空间。du -sh <directory>
: 以人类可读的格式显示目录的总大小。
举个栗子🌰:
du -sh /var/log
,查看/var/log
目录占用的磁盘空间。 -
free
: 显示内存使用情况。相当于“血常规检查”,了解内存剩余空间。free -m
: 以 MB 为单位显示内存使用情况。
举个栗子🌰:
free -m
,查看内存的使用情况。
-
-
软件包管理类:软件的“进出口”
-
apt
(Debian/Ubuntu): Advanced Package Tool,用于安装、卸载、更新软件包。apt update
: 更新软件包列表。apt upgrade
: 升级已安装的软件包。apt install <package_name>
: 安装软件包。apt remove <package_name>
: 卸载软件包。apt search <keyword>
: 搜索软件包。
举个栗子🌰:
apt install nginx
,安装 Nginx Web 服务器。 -
yum
(CentOS/RHEL): Yellowdog Updater, Modified,与apt
类似,用于安装、卸载、更新软件包。yum update
: 更新软件包。yum install <package_name>
: 安装软件包。yum remove <package_name>
: 卸载软件包。yum search <keyword>
: 搜索软件包。
举个栗子🌰:
yum install httpd
,安装 Apache Web 服务器。 -
dnf
(Fedora): Dandified Yum,yum
的继任者,功能更强大,速度更快。- 用法与
yum
类似。
- 用法与
-
三、系统管理:运筹帷幄的艺术
除了掌握常用命令,还需要了解一些基本的系统管理技巧,才能更好地维护服务器。
-
日志管理:追踪问题的线索
- 系统日志:
/var/log/syslog
(Debian/Ubuntu),/var/log/messages
(CentOS/RHEL)。记录系统运行时的各种信息,包括错误、警告、事件等。 - Web 服务器日志:
/var/log/apache2/access.log
,/var/log/apache2/error.log
(Apache),/var/log/nginx/access.log
,/var/log/nginx/error.log
(Nginx)。记录 Web 服务器的访问和错误信息。 - 应用日志:应用程序自己产生的日志,通常位于应用程序的安装目录下或指定的日志目录下。
要定期查看日志,分析问题,及时发现并解决潜在的隐患。可以使用
grep
命令查找关键信息,使用tail -f
命令实时追踪日志更新。 - 系统日志:
-
定时任务:自动化的利器
crontab
命令可以用来设置定时任务,让服务器自动执行一些重复性的工作,例如:- 定期备份数据。
- 定期清理日志。
- 定时执行脚本。
使用
crontab -e
命令编辑当前用户的定时任务列表。例如,每天凌晨 3 点备份数据库:
0 3 * * * mysqldump -u root -p密码 数据库名 > /backup/database.sql
-
防火墙:保护服务器的安全卫士
ufw
(Uncomplicated Firewall) 是 Ubuntu 上常用的防火墙工具,可以用来限制服务器的访问端口,防止恶意攻击。ufw enable
: 启用防火墙。ufw disable
: 禁用防火墙。ufw allow <port>
: 允许指定端口的访问。ufw deny <port>
: 拒绝指定端口的访问。ufw status
: 查看防火墙状态。
例如,允许 80 端口的访问:
ufw allow 80
firewalld
是 CentOS/RHEL 上常用的防火墙工具,用法与ufw
类似。 -
性能监控:实时掌握服务器状态
除了
top
命令,还可以使用其他工具来监控服务器的性能,例如:vmstat
: 显示虚拟内存、进程、CPU 活动等信息。iostat
: 显示磁盘 I/O 统计信息。sar
: 收集和报告系统活动信息。
通过监控服务器的性能指标,可以及时发现瓶颈,优化服务器配置。
四、进阶之路:成为 Linux 大神的修炼
掌握了以上基础知识,你已经可以胜任一些简单的 Linux 运维工作了。但是,想要成为真正的 Linux 大神,还需要不断学习和实践。
-
学习 Shell 脚本:让你的命令更强大
Shell 脚本是一种脚本语言,可以用来编写复杂的命令序列,实现自动化运维。
学习 Shell 脚本,可以让你更高效地管理服务器,例如:
- 编写自动部署脚本。
- 编写自动监控脚本。
- 编写自动备份脚本。
-
深入理解 Linux 内核:了解服务器的“灵魂”
Linux 内核是操作系统的核心,了解内核的原理,可以让你更深入地理解服务器的运行机制,更好地优化服务器性能。
-
学习容器技术:拥抱云计算的未来
Docker 和 Kubernetes 是目前流行的容器技术,可以用来快速部署和管理应用程序。
学习容器技术,可以让你更好地适应云计算的发展趋势,提高开发和运维效率。
-
参与开源项目:贡献社区,提升自我
参与 Linux 相关的开源项目,可以让你学习到最新的技术,结识更多的专家,提升自己的技术水平。
五、总结:Linux 运维,永无止境
Linux 运维是一个不断学习和实践的过程,需要不断地积累经验,才能成为真正的专家。
希望今天的分享能够帮助大家更好地了解 Linux 服务器,掌握一些基本的运维技巧。
记住,Linux 运维不仅仅是一项技术,更是一种艺术,需要用心去体会,用智慧去解决问题。
祝大家在 Linux 的世界里,玩得开心,学有所成! 🎉
最后,送大家一句“真理”:遇到问题,先 Google! 😉