Linux 服务器基础运维:常用命令与系统管理

好的,各位尊敬的“码农”、未来的“架构师”、以及偶尔迷失在代码海洋里的“程序猿”们,大家好!今天咱们不聊高深的算法,也不谈玄乎的架构,咱们来聊聊各位赖以生存的“老伙计”——Linux 服务器。

与其说这是篇技术文章,不如说这是一场“Linux 服务器基础运维生存指南”,教你如何优雅地玩转 Linux,避免在关键时刻掉链子,甚至还能在老板面前秀一把操作,赢得加薪升职的机会。😎

一、Linux:你真的了解它吗?(前戏很重要!)

别看 Linux 长得一副“极客”样,黑底白字,冷冰冰的,其实它内心住着一个“管家婆”。它负责管理服务器上的一切,从软件的安装卸载,到硬件资源的分配,再到网络连接的维护,无所不能。

想象一下,你的代码是“公主”,需要一个坚实的城堡来保护,Linux 就是那个城堡,而运维就是城堡的“守护者”。守护者不给力,公主就会被“Bug”这个恶龙抓走! 🐉

所以,学好 Linux 运维,就是为了保护你的“公主”,让你的代码在服务器上安全稳定地运行。

二、常用命令:行走江湖的必备技能

Linux 的世界里,命令就是你的“魔法咒语”,掌握了这些咒语,你就能呼风唤雨,掌控全局。别怕命令多,咱们化繁为简,把常用的命令分成几类,方便记忆。

  1. 文件操作类:增删改查,一个都不能少!

    • 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

  2. 文件内容查看类:窥探秘密的窗口

    • 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" 的行。

  3. 进程管理类:掌控全局的指挥官

    • 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 将最近放到后台的进程召回到前台。

  4. 用户和权限管理类:保护你的“数据王国”

    • 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 脚本添加执行权限。

  5. 网络管理类:连接世界的桥梁

    • ping: 测试网络连通性。相当于“发送信号”,看看对方是否在线。

      举个栗子🌰:ping baidu.com,测试是否可以连接到百度。

    • ifconfigip addr: 显示网络接口信息。相当于“身份证明”,展示你的网络配置。

      举个栗子🌰:直接输入 ifconfigip addr,查看 IP 地址、MAC 地址等信息。

    • netstatss: 显示网络连接状态。相当于“交通监控”,了解网络流量情况。

      • netstat -tulnp: 显示所有 TCP 和 UDP 端口的监听状态。

      举个栗子🌰:netstat -tulnp | grep 80,查看 80 端口的监听状态。

    • ssh: 远程登录到服务器。相当于“时空穿梭”,远程控制服务器。

      举个栗子🌰:ssh [email protected],以 user 用户身份登录到 IP 地址为 192.168.1.100 的服务器。

  6. 系统信息类:了解“身体状况”

    • 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,查看内存的使用情况。

  7. 软件包管理类:软件的“进出口”

    • 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 类似。

三、系统管理:运筹帷幄的艺术

除了掌握常用命令,还需要了解一些基本的系统管理技巧,才能更好地维护服务器。

  1. 日志管理:追踪问题的线索

    • 系统日志:/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 命令实时追踪日志更新。

  2. 定时任务:自动化的利器

    crontab 命令可以用来设置定时任务,让服务器自动执行一些重复性的工作,例如:

    • 定期备份数据。
    • 定期清理日志。
    • 定时执行脚本。

    使用 crontab -e 命令编辑当前用户的定时任务列表。

    例如,每天凌晨 3 点备份数据库:

    0 3 * * * mysqldump -u root -p密码 数据库名 > /backup/database.sql
  3. 防火墙:保护服务器的安全卫士

    ufw (Uncomplicated Firewall) 是 Ubuntu 上常用的防火墙工具,可以用来限制服务器的访问端口,防止恶意攻击。

    • ufw enable: 启用防火墙。
    • ufw disable: 禁用防火墙。
    • ufw allow <port>: 允许指定端口的访问。
    • ufw deny <port>: 拒绝指定端口的访问。
    • ufw status: 查看防火墙状态。

    例如,允许 80 端口的访问:

    ufw allow 80

    firewalld 是 CentOS/RHEL 上常用的防火墙工具,用法与 ufw 类似。

  4. 性能监控:实时掌握服务器状态

    除了 top 命令,还可以使用其他工具来监控服务器的性能,例如:

    • vmstat: 显示虚拟内存、进程、CPU 活动等信息。
    • iostat: 显示磁盘 I/O 统计信息。
    • sar: 收集和报告系统活动信息。

    通过监控服务器的性能指标,可以及时发现瓶颈,优化服务器配置。

四、进阶之路:成为 Linux 大神的修炼

掌握了以上基础知识,你已经可以胜任一些简单的 Linux 运维工作了。但是,想要成为真正的 Linux 大神,还需要不断学习和实践。

  1. 学习 Shell 脚本:让你的命令更强大

    Shell 脚本是一种脚本语言,可以用来编写复杂的命令序列,实现自动化运维。

    学习 Shell 脚本,可以让你更高效地管理服务器,例如:

    • 编写自动部署脚本。
    • 编写自动监控脚本。
    • 编写自动备份脚本。
  2. 深入理解 Linux 内核:了解服务器的“灵魂”

    Linux 内核是操作系统的核心,了解内核的原理,可以让你更深入地理解服务器的运行机制,更好地优化服务器性能。

  3. 学习容器技术:拥抱云计算的未来

    Docker 和 Kubernetes 是目前流行的容器技术,可以用来快速部署和管理应用程序。

    学习容器技术,可以让你更好地适应云计算的发展趋势,提高开发和运维效率。

  4. 参与开源项目:贡献社区,提升自我

    参与 Linux 相关的开源项目,可以让你学习到最新的技术,结识更多的专家,提升自己的技术水平。

五、总结:Linux 运维,永无止境

Linux 运维是一个不断学习和实践的过程,需要不断地积累经验,才能成为真正的专家。

希望今天的分享能够帮助大家更好地了解 Linux 服务器,掌握一些基本的运维技巧。

记住,Linux 运维不仅仅是一项技术,更是一种艺术,需要用心去体会,用智慧去解决问题。

祝大家在 Linux 的世界里,玩得开心,学有所成! 🎉

最后,送大家一句“真理”:遇到问题,先 Google! 😉

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注