进程相关操作是运维日常核心,从端口占用、进程PID查找,到信号发送、后台运行,这些命令能精准解决问题。
端口/进程文件占用查询:lsof -i:port查看指定端口占用情况(需root/端口所有者);lsof -p pid查看进程打开的所有文件,快速定位进程所在路径。
进程PID查找与信号发送:pgrep -f pattern通过命令行匹配查找进程PID;killall -sigXXX procname给指定进程名发送信号(进程名需精确区分大小写);pkill -sigXXX -f pattern按命令行匹配进程并发送信号,适配复杂启动命令的进程。
后台运行与守护进程:cmd &将程序放后台运行(终端断开会因SIGHUP信号退出);nohup cmd &忽略挂断信号,注销后仍能在后台运行,是运维后台启动程序的常用方式。
快速掌握系统资源限制、进程内存、共享内存状态,是排查系统性能问题的关键。
系统资源限制配置:ulimit -a显示所有系统资源配置;ulimit -c 大小设置core文件最大容量;ulimit -s 大小调整栈(stack)大小,按需适配业务资源需求。
进程内存详情查询:pmap pid查看指定进程的所有内存信息,精准分析进程内存占用情况。
共享内存属性查看:ipcs -m -i shmid查询指定共享内存的详细属性,包括创建进程ID(CPID)、最后操作进程ID(LPID)、连接/拆离时间等,排查共享内存泄漏问题。
磁盘空间统计:du -sh 目录快速显示目录总空间大小;du --max-depth=N 目录指定遍历N层目录,分级查看磁盘占用,定位大文件/目录。
日常运维中频繁遇到文件格式错乱、编码不兼容、时间戳修改等问题,这些命令一键解决,无需手动处理。
文件格式与编码修复:dos2unix file清理Windows转Linux文件中的^M符号,解决格式错乱Linux运维必学:dos2unix命令解决跨平台文件格式坑;locale查看当前系统编码;export LC_ALL=zh_CN.utf8快速将系统编码设置为UTF-8。
文件时间戳管理:touch file无文件则创建,有文件则修改时间戳;find 目录 -type f | xargs touch -c批量修改目录下所有文件时间戳,且不创建新文件。
文件拼接与内容提取:paste 文件1 文件2默认以TAB分隔拼接两个文件内容,适合批量整合数据;strings 文件从二进制文件中提取所有可打印字符串,快速查找关键信息。
core文件路径自定义:echo /data/corefile/core_%e_%t > /proc/sys/kernel/core_pattern,按进程名+时间命名core文件并指定存储路径,方便问题追溯与调试。
从文件排序、内容匹配,到字符转换、字段截取,这些命令覆盖数据处理全场景,效率远超手动操作。
文件排序:sort命令多参数适配不同排序需求,核心参数:-n按数值大小排序、-r反向排序、-c检查文件是否已排序、-o 输出文件将排序结果写入指定文件、-M按月份缩写排序。
高效内容匹配:grep是文本匹配核心命令,高频参数:-i忽略大小写、-v反向输出不匹配行、-A/B/C n显示匹配行后/前/前后n行、-E支持扩展正则,实现多条件匹配(如grep -E "test|meta")。
字符转换与删除:tr命令对字符快速处理,echo "HELLO WORLD" | tr 'A-Z' 'a-z'实现大小写转换;echo "hello 123 world" | tr -d '0-9'删除指定字符集,适配简单字符处理场景。
字段截取与多文件匹配:awk是数据处理利器,运维高频用法:
awk -F 分隔符指定分隔符(多分隔符用-F '[,:]');
NR/FNR表示当前行号(NR累积、FNR单文件独立);
substr($n,start,len)截取第n个字段的字符,如substr($3,12,8);
实现两个文件内容重合部分的二分查找,高效匹配大数据量文件。
命令行参数转换:xargs cmd将标准输入转为命令行参数,解决部分命令不支持管道传参问题,如echo "one two three" | xargs mkdir等同于mkdir one two three。
针对开发/调试场景的实用技巧,快速查看库函数、反汇编二进制、实现命令动态拼接。
库函数与二进制调试:nm 库名查看库中所有函数名;objdump -d 二进制文件对文件反汇编,结合grep 函数名查看指定函数汇编代码;c++filt 汇编函数名将C++汇编后的函数名还原为原始名称。
命令替换:$( )与反引号` `实现命令替换,先执行内部命令,再将结果组合为新命令,如echo today is $(date "+%Y-%m-%d"),动态拼接命令结果。
精准输出控制:echo -en实现输出定制,-e启用反斜杠转义,-n输出后不换行,适配脚本中的精准输出场景。
时间戳互转:date -d @时间戳将秒级时间戳转为常规本地时间;date -d "YYYYMMDD" +%s将常规时间转为UTC秒级时间戳,无需手动计算。
快速查找文件、灵活控制命令输出,是运维基础且高频的操作,这些技巧必须熟记。
文件精准查找:find 目录结合表达式实现多条件查找,核心用法:-name 文件名按名称查找、-type f查找普通文件、-size +/-20k按大小查找、-maxdepth 2指定遍历层级、-mtime/-mmin +/-n按文件修改时间查找。
输出重定向:掌握Linux输出重定向规则,精准管控命令输出:
>/dev/null丢弃标准输出(等同于1>/dev/null);
2>表示重定向标准错误;
2>&1将标准错误重定向至标准输出,常与>/dev/null组合使用(>/dev/null 2>&1),丢弃所有输出。
掌握Shell数组基础与定时任务配置,适配脚本编写与日常定时运维需求。
Shell数组:nums=(29 100 13 8 91 44)定义数组(括号前后无空格);${nums[idx]}按索引取值,大括号保证变量名完整性,适用于脚本中批量数据处理。
定时任务crontab:Linux定时任务核心,常用操作:crontab -e编辑任务、crontab -l列出所有任务;时间格式严格遵循分、时、日、月、星期几、执行命令,是实现自动化运维的基础。
---------分割线---------
以上这些Linux技巧覆盖了运维工作的绝大多数高频场景,看似零散但实用性极强,当然,大佬请绕路。