程序员常用的linux命令(Linux常用命令)


Linux命令行是程序员日常开发与运维的核心工具,其高效性、灵活性和跨平台特性使其成为解决复杂技术问题的利器。通过组合基础命令与管道符(|),程序员能快速完成文件操作、进程管理、网络调试等任务,而无需依赖图形化界面。例如,一条grep命令可替代Windows下复杂的查找功能,awk则能实现数据清洗与格式化。更重要的是,Linux命令遵循标准化设计原则,如chmod的权限符号体系、tar的压缩参数规范,使得学习成本随经验积累逐渐降低。对于程序员而言,掌握这些命令不仅是效率提升的关键,更是理解底层系统运行机制的窗口。
一、文件与目录操作
文件操作是Linux命令的基础应用场景,涵盖创建、复制、移动、删除等核心功能。
命令 | 功能 | 常用参数 | 示例 |
---|---|---|---|
cp | 复制文件或目录 | -r(递归)、-i(交互式)、-u(仅当源文件较新时覆盖) | cp -r /src/ /dst/ 递归复制目录 |
mv | 移动或重命名文件 | -f(强制覆盖)、-n(不覆盖现有文件) | mv file1 file2 重命名文件 |
rm | 删除文件或目录 | -r(递归)、-f(强制) | rm -rf dir/ 危险操作需谨慎 |
目录操作常与cd
(切换路径)、mkdir
(创建目录)配合使用。例如mkdir -p dir1/dir2
可一次性创建多级目录,而rmdir
仅能删除空目录。
二、权限与所有权管理
Linux采用UGO(User/Group/Other)模型,通过chmod和chown控制文件访问。
命令 | 作用对象 | 参数语法 | 典型场景 |
---|---|---|---|
chmod | 文件/目录权限 | 数字法(755)、符号法(u+x,g-w) | 设置Web目录为755 允许公网访问 |
chown | 文件/目录所有者 | 用户:组(如root:root) | 修复误操作后文件归属 |
sudo | 临时提权 | -u 用户名(如sudo -i -u postgres) | 以指定用户执行命令 |
特殊权限位(suid/sgid)可通过chmod u+s
设置,使程序以文件所有者身份运行。例如/usr/bin/sudo
的suid位允许普通用户执行提权操作。
三、进程与作业管理
进程管理涉及查看、终止、后台运行等操作,是服务器维护的核心技能。
命令 | 功能 | 输出特点 | 适用场景 |
---|---|---|---|
ps | 查看当前进程 | 静态快照,需配合参数(如-ef) | 定位特定PID进程 |
top | 实时监控进程 | 动态刷新,显示CPU/内存占用 | 排查高负载问题 |
kill | 终止进程 | 信号类型(-9强制终止,-15优雅退出) | 清理僵尸进程 |
nohup command &
可将任务置于后台并忽略挂起信号,配合screen
或tmux
实现长期任务管理。例如nohup python server.py &
可启动后台服务。
四、网络诊断工具
网络相关命令帮助程序员验证服务连通性、分析传输问题。
命令 | 主要功能 | 典型参数 | 输出解读 |
---|---|---|---|
ping | 测试IP连通性 | -c次数、-s包大小 | 丢包率高于1%需警惕 |
netstat | 查看网络连接状态 | -tulnp(显示监听端口及进程) | 排查端口占用问题 |
traceroute | 追踪路由路径 | -m跳数限制 | 定位网络延迟节点 |
ss -tuln
是现代替代方案,比netstat更高效。例如ss -p nginx
可查看Nginx进程监听的端口。
五、软件包管理
不同发行版的包管理工具存在差异,但核心逻辑一致。
发行版 | 包管理工具 | 安装命令 | 升级命令 |
---|---|---|---|
Debian/Ubuntu | apt | apt install package | apt upgrade |
CentOS/Fedora | yum/dnf | yum install package | yum update |
Arch Linux | pacman | pacman -S package | pacman -Syu |
rpm
和dpkg
提供底层操作能力,例如dpkg -i .deb
可强制安装本地deb包。注意使用--nodeps
参数可能引发依赖问题。
六、文本处理三剑客
grep、sed、awk构成文本处理的核心工具链。
工具 | 核心功能 | 特色语法 | 适用场景 |
---|---|---|---|
grep | 模式匹配搜索 | 正则表达式、-v反转匹配 | 日志文件中提取ERROR行 |
sed | 流编辑 | s///替换、地址范围(如/start/,/end/d) | 批量修改配置文件 |
awk | 字段处理 | 'print $1'取第一列、BEGIN/END块 | CSV数据统计与格式化 |
组合使用示例:cat log.txt | grep "^ERROR" | awk 'print $3' | sort | uniq -c
可实现错误类型计数统计。
七、系统状态监控
实时监控系统资源使用情况是运维必备技能。
命令 | 监控指标 | 常用选项 | 输出特点 |
---|---|---|---|
df | 磁盘使用率 | -h(人类可读格式)、-T(显示文件系统类型) | 包含Inode使用情况(需-i参数) |
free | 内存与交换分区 | -m(MB单位)、-s延时刷新 | 显示缓冲区/缓存占比 |
iostat | IO性能指标 | -x扩展统计、-k单位KB | 监测磁盘吞吐量瓶颈 |
vmstat 1 5
每秒刷新一次,连续5次采样,可观察系统整体负载变化趋势。结合mpstat
可分析多核CPU利用率。
Shell脚本将多个命令串联,实现任务自动化。关键要素包括:
示例脚本:/bin/bash
for file in .log; do gzip "$file"; done
echo "Compression complete!";
高级技巧包括数组操作(arr=("a b c"))、命令替换(result=$(ls))、管道重定向(command 2>&1 | tee log)。注意添加执行权限(chmod +x script.sh)。
掌握这些Linux命令需要持续实践与积累,建议从日常开发场景入手,逐步构建命令组合能力。例如通过find /var/log -name ".gz" | xargs -I gunzip
批量解压日志文件,或使用scp userhost:/path/file ./
远程传输文件。最终目标是将零散的命令知识转化为系统性的问题解决能力,这正是Linux命令行的终极魅力所在。





