在服务器管理、软件开发和日常运维中,Linux 命令行扮演着至关重要的角色。熟练掌握 Linux 常用命令,不仅能提高工作效率,更能让你在面对复杂问题时游刃有余。本文将深入探讨 Linux 常用命令,从入门到实战,助你成为 Linux 命令行高手。尤其对于使用宝塔面板的开发者,理解底层命令更有助于排查和优化应用。

为什么学习 Linux 命令?

  • 高效管理服务器:通过命令可以快速地完成服务器的配置、监控和维护,远比图形界面更高效。
  • 自动化运维:可以使用 Shell 脚本编写自动化任务,例如定时备份数据库、监控服务器状态等。
  • 问题排查:当服务器出现问题时,可以使用命令查看日志、进程状态等信息,快速定位问题。
  • 开发调试:在开发过程中,可以使用命令编译、运行和调试程序。

Linux 常用命令详解

文件操作类命令

  • ls: 列出目录内容。ls -l显示详细信息,ls -a显示所有文件(包括隐藏文件)。ls -h以人类可读的格式显示文件大小,配合-l参数使用。
    ls -l /var/log # 显示 /var/log 目录下的文件详细信息ls -la .       # 显示当前目录下的所有文件(包括隐藏文件)
  • cd: 切换目录。cd ..返回上一级目录,cd ~回到用户主目录。
    cd /home/user/documents # 切换到指定目录cd ..                   # 返回上一级目录
  • mkdir: 创建目录。mkdir -p可以递归创建多级目录。
    mkdir my_directory      # 创建名为 my_directory 的目录mkdir -p path/to/new/directory # 递归创建多级目录
  • rm: 删除文件或目录。rm -f强制删除,rm -r递归删除目录。
    rm file.txt             # 删除 file.txt 文件rm -rf directory/        # 递归强制删除 directory 目录
  • cp: 复制文件或目录。cp -r递归复制目录。
    cp file.txt destination/ # 复制 file.txt 到 destination 目录cp -r directory/ destination/ # 递归复制 directory 目录到 destination 目录
  • mv: 移动或重命名文件或目录。
    mv file.txt new_file.txt  # 重命名 file.txt 为 new_file.txtmv file.txt destination/ # 移动 file.txt 到 destination 目录
  • touch: 创建空文件或更新文件时间戳。
    touch new_file.txt        # 创建一个名为 new_file.txt 的空文件

系统管理类命令

  • ps: 显示当前进程状态。ps aux显示所有进程的详细信息,ps -ef显示所有进程的完整信息,grep命令通常与ps结合使用,筛选特定的进程,例如ps aux | grep nginx可以找到所有 Nginx 进程。
    ps aux | grep nginx    # 查找包含 nginx 关键词的进程ps -ef                # 显示所有进程的完整信息
  • top: 实时显示系统资源占用情况,包括 CPU、内存、进程等。
    top                     # 实时显示系统资源占用情况
  • kill: 杀死进程。需要进程 ID (PID)。可以使用 ps 命令找到 PID。
    kill 1234               # 杀死 PID 为 1234 的进程kill -9 1234            # 强制杀死 PID 为 1234 的进程
  • df: 显示磁盘空间使用情况。df -h以人类可读的格式显示。
    df -h                   # 显示磁盘空间使用情况
  • du: 显示目录或文件占用磁盘空间的大小。du -sh以人类可读的格式显示总大小。
    du -sh /var/log         # 显示 /var/log 目录占用磁盘空间的总大小
  • free: 显示内存使用情况。free -m以 MB 为单位显示。
    free -m                 # 显示内存使用情况
  • shutdown: 关闭系统。shutdown -h now立即关机,shutdown -r now立即重启。
    shutdown -h now           # 立即关机shutdown -r now           # 立即重启

网络相关命令

  • ping: 测试网络连通性。
    ping www.baidu.com        # 测试与 www.baidu.com 的连通性
  • netstat: 显示网络连接、路由表、接口统计等信息。netstat -tulnp显示所有 TCP/UDP 端口的监听状态和对应的进程。
    netstat -tulnp            # 显示所有 TCP/UDP 端口的监听状态和对应的进程
  • ifconfig: 显示或配置网络接口。在较新的 Linux 发行版中,通常使用 ip 命令代替。
    ifconfig                  # 显示网络接口信息
  • ip: 更强大的网络管理工具,可以显示和配置网络接口、路由等。例如:ip addr show显示网络接口地址,ip route show显示路由表。
    ip addr show              # 显示网络接口地址ip route show             # 显示路由表
  • ssh: 安全地远程连接到另一台计算机。
    ssh user@remote_host      # 通过 SSH 连接到 remote_host
  • wget: 从网络下载文件。
    wget https://example.com/file.txt # 下载文件

文本处理类命令

  • cat: 连接文件并打印到标准输出。
    cat file.txt              # 显示 file.txt 文件的内容
  • head: 显示文件的前几行,默认显示前 10 行。
    head file.txt             # 显示 file.txt 文件的前 10 行head -n 20 file.txt      # 显示 file.txt 文件的前 20 行
  • tail: 显示文件的后几行,默认显示后 10 行。tail -f可以实时监控文件新增内容,常用于查看日志。
    tail file.txt             # 显示 file.txt 文件的后 10 行tail -f file.log         # 实时监控 file.log 文件的新增内容
  • grep: 在文件中搜索匹配指定模式的行。
    grep "error" file.log     # 在 file.log 文件中搜索包含 "error" 的行
  • sed: 流编辑器,用于对文本进行替换、删除、插入等操作。
    sed 's/old/new/g' file.txt # 将 file.txt 文件中的所有 "old" 替换为 "new"
  • awk: 强大的文本处理工具,可以按列处理文本数据。
    awk '{print $1}' file.txt   # 打印 file.txt 文件中每一行的第一列
  • wc: 统计文件中的行数、字数和字符数。
    wc file.txt               # 统计 file.txt 文件中的行数、字数和字符数

用户和权限管理

  • useradd: 创建新用户。
    useradd newuser             # 创建名为 newuser 的用户
  • passwd: 修改用户密码。
    passwd newuser              # 修改 newuser 的密码
  • chmod: 修改文件或目录的权限。
    chmod 755 file.txt          # 设置 file.txt 的权限为 755
  • chown: 修改文件或目录的所有者。
    chown newuser file.txt      # 设置 file.txt 的所有者为 newuser
  • chgrp: 修改文件或目录的所属组。
    chgrp newgroup file.txt     # 设置 file.txt 的所属组为 newgroup

Linux 命令实战与避坑

实战案例:使用 Shell 脚本监控 Nginx 状态并自动重启

假设我们需要监控 Nginx 的状态,如果 Nginx 停止运行,则自动重启 Nginx。可以编写以下 Shell 脚本:

#!/bin/bashnginx_pid=$(ps aux | grep nginx | grep -v grep | awk '{print $2}')if [ -z "$nginx_pid" ]; then  echo "Nginx is not running, restarting..."  systemctl start nginx # 或者使用 service nginx startelse  echo "Nginx is running (PID: $nginx_pid)"fi

将脚本保存为 check_nginx.sh,并使用 chmod x check_nginx.sh 添加执行权限,然后使用 crontab -e 添加定时任务,例如每分钟执行一次该脚本:

* * * * * /path/to/check_nginx.sh

避坑经验

  • 谨慎使用 rm -rf:该命令会强制递归删除目录,没有任何提示,一旦误操作,可能会导致数据丢失。
  • 注意命令的参数和选项:不同的参数和选项会影响命令的行为,务必仔细阅读命令的帮助文档 (man command)。
  • 理解管道 (|) 和重定向 (>, >>):管道可以将一个命令的输出作为另一个命令的输入,重定向可以将命令的输出保存到文件中。理解这些概念对于编写复杂的 Shell 脚本至关重要。
  • 权限问题:在执行某些命令时,可能需要 root 权限,可以使用 sudo 命令提升权限。但要避免滥用 sudo,尽量以普通用户身份执行操作。
  • 使用 Tab 键自动补全:Tab 键可以自动补全命令、文件名和目录名,可以提高输入效率,并避免拼写错误。

掌握这些 Linux 常用命令,能够帮助你更好地进行服务器管理和运维。配合诸如 Nginx 反向代理、负载均衡、高并发连接数优化等技术,将能够构建更稳定、更高效的应用系统。此外,熟悉宝塔面板等可视化工具背后所依赖的 Linux 命令,也能帮助你更好地理解和管理服务器。

相关阅读

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐