1. Ubuntu工作常用命令全指南作为一个长期使用Ubuntu进行开发和系统管理的工程师我整理了一份工作中最常用的命令清单并附上那些容易被忽略但至关重要的细节。这些命令涵盖了从基础系统操作到高级权限管理的方方面面都是经过实际项目验证的高频实用工具。1.1 包管理核心命令apt-get是Ubuntu系统的基石但很多人只停留在基础用法。完整的包管理应该这样操作# 更新软件源列表不是更新软件本身 sudo apt-get update # 安装软件包推荐加上-y参数自动确认 sudo apt-get install -y package_name # 彻底删除软件包包括配置文件 sudo apt-get purge package_name # 查找软件包 apt-cache search keyword # 查看软件包信息 apt-cache show package_name重要提示永远不要在脚本中使用apt-get upgrade或apt-get dist-upgrade这会导致不可预期的系统变更。生产环境应该明确指定要更新的软件包。1.2 文件权限深度管理chmod命令的数值模式比符号模式更精确这是我推荐的权限设置方案# 目录建议权限所有者完全控制组可读可进入其他无权限 sudo chmod 750 directory_name # 敏感配置文件权限仅所有者可读写 sudo chmod 600 config_file # 递归修改目录及子文件权限 sudo chmod -R 755 /path/to/directory常见误区不要随意使用chmod 777这是严重的安全隐患对于web目录正确的做法是设置适当的用户组权限而非完全开放使用ls -l检查权限时注意第一个字符表示文件类型d目录l链接等2. 系统服务管理实战技巧2.1 systemctl服务控制现代Ubuntu版本使用systemd管理服务这些命令必须熟练掌握# 启动服务并设为开机自启 sudo systemctl enable --now service_name # 查看服务状态注意Active和Loaded状态 sudo systemctl status service_name # 重新加载修改后的服务配置 sudo systemctl daemon-reload # 列出所有失败的服务 systemctl --failed经验之谈服务启动失败时先用journalctl -u service_name查看详细日志修改服务配置后必须执行daemon-reload才能生效禁用服务时使用sudo systemctl mask service_name可以防止被意外启动2.2 进程管理进阶命令除了常用的ps和top这些命令在排查问题时非常有用# 查找占用特定端口的进程 sudo lsof -i :8080 # 查看进程树关系 pstree -p # 按内存使用排序进程 ps aux --sort-%mem | head # 实时监控磁盘I/O sudo iotop -o3. 网络配置与调试3.1 网络诊断三板斧# 检查网络连通性使用TCP协议测试 nc -zv example.com 443 # 显示详细路由信息 ip route show # 持续监控网络质量需安装mtr mtr -rw example.com3.2 SSH安全配置要点在/etc/ssh/sshd_config中必须修改的配置项PermitRootLogin no PasswordAuthentication no ClientAliveInterval 300 MaxAuthTries 3修改后务必执行sudo systemctl restart sshd使配置生效。4. 磁盘与日志管理4.1 智能磁盘清理方案# 查找大文件大于100MB find / -type f -size 100M -exec ls -lh {} \; # 自动清理旧的内核版本保留2个最新 sudo apt-get autoremove --purge # 查看磁盘使用详情人类可读格式 df -h # 找出占用空间最大的目录 du -h --max-depth1 / | sort -hr4.2 日志管理最佳实践# 实时查看系统日志 sudo tail -f /var/log/syslog # 按时间过滤日志显示最近1小时 journalctl --since 1 hour ago # 将日志按服务分类查看 journalctl -u nginx -u mysql5. 用户与权限体系5.1 安全用户管理# 创建系统用户无home目录不可登录 sudo adduser --system --no-create-home username # 修改用户附加组处理权限问题 sudo usermod -aG groupname username # 查看用户有效权限 groups username # 锁定/解锁用户账户 sudo passwd -l username sudo passwd -u username5.2 sudo权限精细控制在/etc/sudoers.d/目录下创建单独文件不要直接修改sudoers文件# 允许用户执行特定命令无需密码 username ALL(ALL) NOPASSWD: /usr/bin/systemctl restart nginx使用visudo -c检查语法是否正确。6. 开发环境必备命令6.1 Git高效工作流# 撤销工作区修改危险操作谨慎使用 git checkout -- filename # 修改最近一次提交信息 git commit --amend # 查找引入bug的提交 git bisect start git bisect bad git bisect good commit_id6.2 Docker日常操作# 清理无用镜像和容器 docker system prune -f # 查看容器资源使用情况 docker stats # 进入运行中的容器 docker exec -it container_name /bin/bash # 将容器保存为镜像 docker commit container_name new_image_name7. 系统安全加固要点7.1 防火墙配置# 允许特定IP访问SSH sudo ufw allow from 192.168.1.100 to any port 22 # 拒绝所有入站连接默认策略 sudo ufw default deny incoming # 启用防火墙并查看状态 sudo ufw enable sudo ufw status verbose7.2 文件完整性检查# 生成重要文件的校验和 sudo sha256sum /etc/passwd /etc/shadow /root/file_checksums.txt # 定期检查文件是否被修改 sudo sha256sum -c /root/file_checksums.txt8. 实用小技巧合集8.1 终端效率提升# 快速返回上一个工作目录 cd - # 重复上条命令但用sudo执行 sudo !! # 创建并进入目录 mkdir -p project/{src,test} cd $_ # 显示命令执行时间 time ls -R8.2 系统信息速查# 查看CPU信息 lscpu # 查看内存使用情况 free -h # 查看系统运行时间和负载 uptime # 列出所有PCI设备 lspci -nnk9. 常见问题排查指南9.1 依赖问题解决方案# 修复损坏的依赖关系 sudo apt-get install -f # 清理下载失败的包 sudo apt-get clean # 重建软件包缓存 sudo dpkg --configure -a9.2 性能问题诊断# 查看系统负载详情 sudo atop # 监控系统调用 sudo strace -p process_id # 分析磁盘I/O等待 sudo iostat -x 210. 自动化脚本编写要点10.1 安全脚本实践#!/bin/bash set -euo pipefail # 遇到错误立即退出使用未定义变量报错 # 检查是否为root用户 if [ $(id -u) -ne 0 ]; then echo 请使用root用户或sudo执行此脚本 2 exit 1 fi # 记录操作日志 exec (tee /var/log/script.log) 2110.2 实用函数示例# 检查服务是否运行 is_service_active() { systemctl is-active --quiet $1 } # 等待端口可用 wait_for_port() { until nc -z localhost $1; do sleep 1 done } # 获取公网IP get_public_ip() { curl -s ifconfig.me }在Ubuntu系统中掌握这些命令和技巧可以显著提升工作效率。最重要的是理解每个命令背后的原理而不是死记硬背。在实际工作中我建议将这些常用命令整理成cheatsheet并根据具体工作场景不断补充完善。遇到问题时多查看man手册man command_name和官方文档这比盲目搜索网络资源更可靠。
Ubuntu系统管理与开发必备命令大全
1. Ubuntu工作常用命令全指南作为一个长期使用Ubuntu进行开发和系统管理的工程师我整理了一份工作中最常用的命令清单并附上那些容易被忽略但至关重要的细节。这些命令涵盖了从基础系统操作到高级权限管理的方方面面都是经过实际项目验证的高频实用工具。1.1 包管理核心命令apt-get是Ubuntu系统的基石但很多人只停留在基础用法。完整的包管理应该这样操作# 更新软件源列表不是更新软件本身 sudo apt-get update # 安装软件包推荐加上-y参数自动确认 sudo apt-get install -y package_name # 彻底删除软件包包括配置文件 sudo apt-get purge package_name # 查找软件包 apt-cache search keyword # 查看软件包信息 apt-cache show package_name重要提示永远不要在脚本中使用apt-get upgrade或apt-get dist-upgrade这会导致不可预期的系统变更。生产环境应该明确指定要更新的软件包。1.2 文件权限深度管理chmod命令的数值模式比符号模式更精确这是我推荐的权限设置方案# 目录建议权限所有者完全控制组可读可进入其他无权限 sudo chmod 750 directory_name # 敏感配置文件权限仅所有者可读写 sudo chmod 600 config_file # 递归修改目录及子文件权限 sudo chmod -R 755 /path/to/directory常见误区不要随意使用chmod 777这是严重的安全隐患对于web目录正确的做法是设置适当的用户组权限而非完全开放使用ls -l检查权限时注意第一个字符表示文件类型d目录l链接等2. 系统服务管理实战技巧2.1 systemctl服务控制现代Ubuntu版本使用systemd管理服务这些命令必须熟练掌握# 启动服务并设为开机自启 sudo systemctl enable --now service_name # 查看服务状态注意Active和Loaded状态 sudo systemctl status service_name # 重新加载修改后的服务配置 sudo systemctl daemon-reload # 列出所有失败的服务 systemctl --failed经验之谈服务启动失败时先用journalctl -u service_name查看详细日志修改服务配置后必须执行daemon-reload才能生效禁用服务时使用sudo systemctl mask service_name可以防止被意外启动2.2 进程管理进阶命令除了常用的ps和top这些命令在排查问题时非常有用# 查找占用特定端口的进程 sudo lsof -i :8080 # 查看进程树关系 pstree -p # 按内存使用排序进程 ps aux --sort-%mem | head # 实时监控磁盘I/O sudo iotop -o3. 网络配置与调试3.1 网络诊断三板斧# 检查网络连通性使用TCP协议测试 nc -zv example.com 443 # 显示详细路由信息 ip route show # 持续监控网络质量需安装mtr mtr -rw example.com3.2 SSH安全配置要点在/etc/ssh/sshd_config中必须修改的配置项PermitRootLogin no PasswordAuthentication no ClientAliveInterval 300 MaxAuthTries 3修改后务必执行sudo systemctl restart sshd使配置生效。4. 磁盘与日志管理4.1 智能磁盘清理方案# 查找大文件大于100MB find / -type f -size 100M -exec ls -lh {} \; # 自动清理旧的内核版本保留2个最新 sudo apt-get autoremove --purge # 查看磁盘使用详情人类可读格式 df -h # 找出占用空间最大的目录 du -h --max-depth1 / | sort -hr4.2 日志管理最佳实践# 实时查看系统日志 sudo tail -f /var/log/syslog # 按时间过滤日志显示最近1小时 journalctl --since 1 hour ago # 将日志按服务分类查看 journalctl -u nginx -u mysql5. 用户与权限体系5.1 安全用户管理# 创建系统用户无home目录不可登录 sudo adduser --system --no-create-home username # 修改用户附加组处理权限问题 sudo usermod -aG groupname username # 查看用户有效权限 groups username # 锁定/解锁用户账户 sudo passwd -l username sudo passwd -u username5.2 sudo权限精细控制在/etc/sudoers.d/目录下创建单独文件不要直接修改sudoers文件# 允许用户执行特定命令无需密码 username ALL(ALL) NOPASSWD: /usr/bin/systemctl restart nginx使用visudo -c检查语法是否正确。6. 开发环境必备命令6.1 Git高效工作流# 撤销工作区修改危险操作谨慎使用 git checkout -- filename # 修改最近一次提交信息 git commit --amend # 查找引入bug的提交 git bisect start git bisect bad git bisect good commit_id6.2 Docker日常操作# 清理无用镜像和容器 docker system prune -f # 查看容器资源使用情况 docker stats # 进入运行中的容器 docker exec -it container_name /bin/bash # 将容器保存为镜像 docker commit container_name new_image_name7. 系统安全加固要点7.1 防火墙配置# 允许特定IP访问SSH sudo ufw allow from 192.168.1.100 to any port 22 # 拒绝所有入站连接默认策略 sudo ufw default deny incoming # 启用防火墙并查看状态 sudo ufw enable sudo ufw status verbose7.2 文件完整性检查# 生成重要文件的校验和 sudo sha256sum /etc/passwd /etc/shadow /root/file_checksums.txt # 定期检查文件是否被修改 sudo sha256sum -c /root/file_checksums.txt8. 实用小技巧合集8.1 终端效率提升# 快速返回上一个工作目录 cd - # 重复上条命令但用sudo执行 sudo !! # 创建并进入目录 mkdir -p project/{src,test} cd $_ # 显示命令执行时间 time ls -R8.2 系统信息速查# 查看CPU信息 lscpu # 查看内存使用情况 free -h # 查看系统运行时间和负载 uptime # 列出所有PCI设备 lspci -nnk9. 常见问题排查指南9.1 依赖问题解决方案# 修复损坏的依赖关系 sudo apt-get install -f # 清理下载失败的包 sudo apt-get clean # 重建软件包缓存 sudo dpkg --configure -a9.2 性能问题诊断# 查看系统负载详情 sudo atop # 监控系统调用 sudo strace -p process_id # 分析磁盘I/O等待 sudo iostat -x 210. 自动化脚本编写要点10.1 安全脚本实践#!/bin/bash set -euo pipefail # 遇到错误立即退出使用未定义变量报错 # 检查是否为root用户 if [ $(id -u) -ne 0 ]; then echo 请使用root用户或sudo执行此脚本 2 exit 1 fi # 记录操作日志 exec (tee /var/log/script.log) 2110.2 实用函数示例# 检查服务是否运行 is_service_active() { systemctl is-active --quiet $1 } # 等待端口可用 wait_for_port() { until nc -z localhost $1; do sleep 1 done } # 获取公网IP get_public_ip() { curl -s ifconfig.me }在Ubuntu系统中掌握这些命令和技巧可以显著提升工作效率。最重要的是理解每个命令背后的原理而不是死记硬背。在实际工作中我建议将这些常用命令整理成cheatsheet并根据具体工作场景不断补充完善。遇到问题时多查看man手册man command_name和官方文档这比盲目搜索网络资源更可靠。