Linux常用命令大全(非常全面):开发者必备系统操作指南
一、文件与目录管理命令
1.1 基础操作类
ls命令:文件列表展示的核心工具,支持多种参数组合。常用参数包括-l(长格式显示权限/所有者/大小等信息)、-a(显示隐藏文件)、-h(人类可读文件大小)。例如ls -lah /etc可查看系统配置目录的详细信息。
cd命令:目录切换的快捷方式,支持相对路径与绝对路径。特殊路径符号..(上级目录)、~(用户家目录)、-(上次所在目录)可提升操作效率。例如cd ~/projects快速进入用户项目目录。
pwd命令:显示当前工作目录的绝对路径,在脚本调试中尤为重要。结合$(pwd)可实现路径变量的动态获取。
1.2 文件操作类
cp命令:文件复制工具,支持递归复制目录(-r参数)。高级用法包括保留文件属性(-p)、仅复制更新文件(-u)。例如cp -rp /backup/* /restore/可完整备份目录结构。
mv命令:兼具文件移动与重命名功能。跨设备移动时建议配合-v参数显示操作详情,避免数据传输异常。
rm命令:需谨慎使用的删除工具,-r参数递归删除目录,-f强制删除无提示。安全建议:使用rm -i交互式删除或通过alias rm='rm -i'设置别名。
touch命令:创建空文件或更新文件时间戳。在自动化脚本中常用于检查文件是否存在,例如touch /tmp/lockfile创建进程锁文件。
1.3 目录操作类
mkdir命令:创建目录,-p参数可自动创建父目录。例如mkdir -p /var/log/nginx/{access,error}一次性创建多级目录结构。
rmdir命令:仅删除空目录,安全但功能有限。实际开发中更常用rm -r删除非空目录。
find命令:强大的文件搜索工具,支持按名称(-name)、类型(-type)、时间(-mtime)等条件筛选。例如find /home -name "*.log" -mtime +7 -delete可自动清理7天前的日志文件。
二、系统信息查看命令
2.1 硬件信息类
lscpu命令:显示CPU架构信息,包括核心数、线程数、缓存大小等关键参数。在性能优化时可用于确认CPU资源。
free命令:内存使用监控工具,-h参数显示易读单位。结合watch -n 1 free -h可实时监控内存变化。
df命令:磁盘空间使用情况报告,-h参数优化显示。生产环境中常用df -i查看inode使用情况,预防因文件数量过多导致的磁盘问题。
2.2 进程管理类
ps命令:进程状态查看工具,-ef参数显示完整进程信息。与grep结合可精准定位进程,例如ps -ef | grep nginx查找nginx相关进程。
top命令:动态系统监控工具,按M按内存排序、P按CPU排序。替代工具htop提供更友好的交互界面和颜色标识。
kill命令:终止进程的标准方式,-9参数强制终止。安全建议:先尝试-15(SIGTERM)正常终止,无效时再使用-9(SIGKILL)。
三、网络相关命令
3.1 连接测试类
ping命令:网络连通性测试工具,-c参数指定发送包数量。生产环境建议限制包数量(如ping -c 4 example.com),避免持续发送影响网络。
netstat命令:网络连接状态查看,-tulnp参数显示TCP/UDP监听端口及对应进程。替代工具ss(Socket Statistics)性能更优。
3.2 数据传输类
scp命令:安全文件复制工具,基于SSH协议。例如scp /local/file.txt user@remote:/path/实现本地到远程的文件传输。
rsync命令:增量同步工具,支持本地和远程同步。-a参数保留文件属性,--delete参数删除目标端多余文件。例如rsync -avz --delete /source/ user@remote:/backup/实现精确备份。
四、权限管理命令
4.1 基础权限类
chmod命令:修改文件权限,支持数字模式(如755)和符号模式(如u+x)。生产环境建议使用符号模式精确控制权限。
chown命令:修改文件所有者,-R参数递归修改目录权限。例如chown -R nginx:nginx /var/www/将网站目录所有权赋予nginx用户。
4.2 高级权限类
sudo命令:以超级用户权限执行命令,-i参数切换至root用户。安全建议:通过/etc/sudoers文件精确配置用户权限,避免滥用ALL权限。
setfacl命令:设置细粒度访问控制列表(ACL),突破传统权限系统的限制。例如setfacl -m u为特定用户赋予目录读写执行权限。
rwx /project/
五、文本处理命令
5.1 查看类
cat命令:显示文件内容,-n参数显示行号。大文件查看建议使用less或more分页工具。
head/tail命令:分别显示文件开头和结尾内容。-n参数指定行数,-f参数实时追踪文件更新(如日志监控)。
5.2 过滤类
grep命令:文本搜索工具,-i忽略大小写,-r递归搜索目录。高级用法包括正则表达式匹配(如grep -E "[0-9]{3}-[0-9]{4}"搜索电话号码格式)。
awk命令:强大的文本分析工具,支持字段分割和条件处理。例如awk '{print $1,$3}' logfile提取日志文件的第一和第三列。
sed命令:流编辑器,支持文本替换和删除。例如sed -i 's/old/new/g' file.txt全局替换文件内容。
六、压缩与归档命令
6.1 压缩类
gzip/gunzip命令:高效压缩工具,生成.gz后缀文件。压缩比适中,保留原始文件需使用-c参数重定向输出。
bzip2/bunzip2命令:更高压缩比的工具,生成.bz2后缀文件。压缩速度较慢,适合存储归档。
6.2 归档类
tar命令:归档工具,-c创建归档,-x解压归档,-z调用gzip压缩,-j调用bzip2压缩。例如tar -czvf archive.tar.gz /data/创建gzip压缩的归档文件。
zip/unzip命令:跨平台兼容的压缩工具,支持密码保护(-e参数)。例如zip -r -e secret.zip /sensitive/创建加密的递归压缩包。
七、系统服务管理命令
7.1 SysVinit系统
service命令:管理SysVinit服务,例如service nginx restart重启web服务。现代系统建议使用systemctl替代。
7.2 systemd系统
systemctl命令:现代Linux系统的服务管理工具,支持start/stop/status等子命令。例如systemctl enable nginx设置服务开机自启。
journalctl命令:查看systemd日志,-u参数指定服务单元,-f参数实时追踪日志。例如journalctl -u nginx -f监控nginx服务日志。
八、开发相关命令
8.1 包管理类
apt命令(Debian系):apt install安装软件包,apt search搜索软件,apt remove卸载软件。建议定期执行apt update && apt upgrade更新系统。
yum/dnf命令(RHEL系):yum install安装软件,yum groupinstall安装软件组。Fedora系统使用更快的dnf替代yum。
8.2 版本控制类
git命令:分布式版本控制工具,clone克隆仓库,commit提交变更,push推送代码。生产环境建议配置git config --global core.editor vim指定编辑器。
svn命令:集中式版本控制工具,checkout检出代码,update同步更新。在企业遗留系统中仍有应用。
九、安全相关命令
9.1 防火墙类
iptables命令:Netfilter防火墙规则管理工具,-A添加规则,-D删除规则。例如iptables -A INPUT -p tcp --dport 22 -j ACCEPT允许SSH连接。
firewalld命令(RHEL7+):动态防火墙管理工具,支持区域(zone)概念。例如firewall-cmd --add-service=http --permanent永久开放HTTP服务。
9.2 审计类
last命令:查看用户登录历史,结合-n参数限制显示行数。例如last -n 10显示最近10次登录记录。
auditd服务:Linux审计框架,可记录文件访问、系统调用等事件。通过/etc/audit/audit.rules文件配置审计规则。
十、实用技巧与建议
-
命令组合:善用管道(
|)和重定向(>/>>)构建高效工作流。例如cat access.log | awk '{print $1}' | sort | uniq -c统计访问IP频率。 -
历史命令:通过
history命令查看执行记录,!n快速重复第n条命令。建议设置HISTSIZE=10000扩大历史记录容量。 -
别名设置:在
~/.bashrc中定义常用命令别名,例如alias ll='ls -lah'简化操作。 -
手册查阅:遇到不熟悉的命令时,使用
man 命令名查看详细手册。例如man ssh了解SSH配置选项。 -
安全实践:定期执行
sudo apt update && sudo apt upgrade -y更新系统,使用fail2ban防止暴力破解,配置SSH密钥认证替代密码登录。
本指南系统梳理了Linux系统操作的核心命令,覆盖从基础文件管理到高级安全配置的全场景。开发者可通过持续实践掌握这些工具,结合具体业务需求构建高效的工作流程。建议结合官方文档(如man手册)深入学习参数细节,在实际项目中逐步提升系统管理能力。