在Linux运维与开发工作中,总有一些简洁实用的命令技巧值得积累。为了避免频繁查阅资料,特将这些技巧整理成一份速查清单,涵盖进程管理、文件操作、系统诊断、存储挂载等常见场景,希望能帮你提升工作效率。
(1) 保持程序在SSH断开后继续运行
远程服务器上执行长时间任务时,SSH连接一旦中断,程序往往会随之终止。解决办法很简单:先使用 Ctrl+z 暂停任务,再执行 bg 将其转入后台运行,最后断开用户登录即可。这样即使退出连接,程序仍能稳定执行。
(2) 利用find与-exec批量删除文件
当需要批量删除指定文件时,find命令配合 -exec 参数效率极高:
[root@tiejiang ~]# find ./ -name "*****" -exec rm -f {} \;
(3) 递归搜索包含关键字的文件
想要在某个目录下递归查找含有特定字符串的文件?使用grep加上几个参数即可:
[root@tiejiang ~]# grep -iHR "****" ./*
-i 表示忽略大小写,-H 同时显示文件名,-R 启用递归搜索(当指定路径为目录时自动向下遍历)。
(4) Linux硬件时间查看与修改
查看硬件时间:hwclock --show
修改硬件时间:
[root@tiejiang ~]# hwclock --set --date='10/11/2016 17:07:00'
将系统时间同步到硬件时间:
[root@tiejiang ~]# hwclock --hctosys
(5) 使用密钥方式通过SCP远程拷贝文件
利用密钥认证进行远程文件复制,可避免交互式密码输入:
[root@tiejiang ~]# /usr/bin/ssh -x -oForwardAgent no -oPermitLocalCommand no -oClearAllForwardings yes -i/root/.ssh/iptvcp 10.0.51.198 scp -r -d -t /letv/...
(6) 查看网络组播情况
[root@tiejiang ~]# netstat -ng
(7) 使用Smarttools获取硬盘关键参数
smarttools是检查硬盘健康状态的利器,建议定期执行。
(8) Grep精确匹配单词
通过 -w 参数可以精确匹配整个单词,避免部分匹配带来的干扰:
[root@tiejiang ~]# grep -w 'north' install.log
(9) Expr模式匹配用法
expr也支持模式匹配,利用冒号选项可计算字符串中特定字符数。.* 表示任意字符重复0次或多次。例如:
expr $a : '[a-zA-Z]*'
(10) Vim中实现行左对齐
在Vim命令模式下输入:
:1,$ left
(11) 倒序字符串与文件内容
[root@tiejiang ~]# rev +文件名
(12) Sed替换路径中的斜杠
[root@tiejiang ~]# sed -e 's/\//\\\//g'
写入shell文件时还可使用扩展正则:sed -E -e "s:\\/:\\\\\/:g"
(13) 使用modprobe -V -R移除内核模块
移出指定模块。
(14) 使用modprobe -V加载内核模块
加载指定模块。
(15) 使用Lsmod和Grep查看模块依赖关系
查看与指定模块有依赖关系的其他模块。
(16) 使用modinfo查看模块信息及配置参数
modinfo 模块名
(17) 解决SSH登录速度慢的问题
SSH连接缓慢通常是因为启用了DNS反向解析,在sshd_config中设置 UseDNS no 即可显著提升登录速度。
(18) SSH连接时输出详细调试信息
[root@tiejiang ~]# ssh -v
(19) Pkill命令的使用方法
pkill后直接输入命令名称,即可杀死该命令对应的所有进程。
(20) 使用ntpdate同步NTP服务器时间
128.138.140.44
(21) 使用Date命令设置系统时间
[root@tiejiang ~]# date -s 20161115
[root@tiejiang ~]# date -s 08:45:00
(22) Linux NTP服务配置要点
通过 ntpstat 查看本机与上级NTP服务器的同步状态。若出现 "synchronised to local net at stratum",则需检查 #server 127.127.1.0 # local clock 和 fudge 127.127.1.0 stratum 10 是否已被注释。
(23) 计算可用内存数
[root@tiejiang ~]# total-free-cache-buffer
(24) 使用ps -auxww按资源使用量排序进程
ps默认按PID排序,若需按其他指标排序,需将该指标置于最前面。按内存使用量排序:
[root@tiejiang ~]# ps -auxww|awk '{print $5,$1,$11}'|sort -r|more
按虚拟内存从大到小排列:
[root@tiejiang ~]# ps -eo "%C%p%z%a"|sort -k3 -nr
按实际内存使用百分比排序:
[root@tiejiang ~]# ps -eo user,pid,size,pmem,vsize,command|sort -k4 -nr|more
查看并发连接数最高的前10个IP:
[root@tiejiang ~]# netstat -anp|grep 80|grep ESTAB|awk '{print $5}'|awk -F ':' '{print $1}'|sort |uniq -c|sort -rn|head -n 10
按CPU使用率对进程排序:
[root@tiejiang ~]# ps -eo user,pid,size,pmem,vsize,command,%cpu|sort -k7 -nr|more
(25) 2TB移动硬盘在CentOS上挂载报错及解决
错误提示:"the partition table is corrupt (partition is smaller than NTFS)"。初步判断是Linux系统对移动硬盘容量的限制所致,可通过安装ntfs-3g和fuse来支持NTFS文件系统。
(26) 查看进程打开的文件句柄
[root@tiejiang ~]# lsof -p PID
(27) 批量终止Nginx进程的方法
[root@tiejiang ~]# ps -ef|grep -v grep |grep nginx|awk '{print $2}'
或者使用循环:
[root@tiejiang ~]# for i in ps aux | grep nginx | grep -v grep | awk {'print $2'} ; do kill $i; done
(28) 清空Linux Buffer Cache
[root@tiejiang ~]# sync && echo 3 > /proc/sys/vm/drop_caches
(29) 使用dd命令测试硬盘读写速度
利用time计时,dd进行数据复制。if=/dev/zero不产生IO,用于测试纯写入速度;of=/dev/null不产生IO,用于测试纯读取速度。bs为块大小,count为块数量。
1. 测试根目录所在磁盘的纯写入速度:
[root@tiejiang / ]# time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file
2. 测试根目录所在磁盘的纯读取速度:
dd if=/kvm/ftp/other/1Gb.file bs=64k |dd of=/dev/null
3. 测试读写混合速度:
[root@tiejiang ~]# dd if=/vat/test of=/oradata/test1 bs=64k
通常复制数据量越大,测试结果越准确。
(30) Crontab中为程序设置优先级
使用 nice 和 renice 调整进程优先级。优先级范围:-20(最高)到19(最低),默认值为0。普通用户只能设置0~19,管理员可设置-1~-20。
示例:
vi &优先等级0(默认)nice vi &优先等级10(nice不指定等级时的默认值)nice -50 vi &优先等级19(-50超出下限,取19)nice -18 vi &优先等级18nice --50 vi &优先等级-20(--50超出上限,取-20)nice --18 vi &优先等级-18
调整正在运行的进程:renice <等级>
调整某用户的所有进程:renice <等级> <用户名1> <用户名2> ...
调整某组的所有用户进程:renice <等级> -g <组名1>
(31) 使用xargs将参数列表分段传递给其他命令
[root@tiejiang ~]# find . -name "*.foo" -print0 | xargs -0 -i mv {} /tmp/trash
通过 -i 参数将 {} 替换为列表中的内容。
(32) 为已存在的目录创建系统用户
[root@tiejiang ~]# useradd -d /bak_important -s /sbin/nologin tiejiang -p tiejiang
(33) Linux内存组成与计算
物理内存 + 占用的swap = 空闲物理内存 + Memory buffer + Disk Cache + 常驻内存。例如:4G + 53MB = 17MB + 46MB + 3.2GB + ?,此时常驻内存约为700-800MB。物理内存仍较充裕,大部分用作disk cache,说明系统IO较为活跃。swap占用少量,表明曾出现短暂内存紧张,将闲置进程换入swap,且这些进程尚未被重新激活。
(34) 使用strace跟踪系统调用和信号
strace是一款强大的调试工具,可跟踪程序执行时的系统调用和接收的信号,通常将结果输出到标准输出或指定文件。详细用法可参考 man strace。
(35) 使用ldd查看命令进程所依赖的共享库
(36) 使用watch定时执行命令并指定间隔
[root@tiejiang ~]# watch -n1 "ps -auxww"
(37) VNC Server配置Gnome启动
[root@tiejiang ~]# vi ~/.vnc/xstartup
[root@tiejiang ~]# gnome-session &
(38) 使用nmap扫描网段内存活主机
(39) GPT分区表可挂载超过2TB的存储空间
(40) 使用Ext4文件系统突破Ext3的8TB限制
ext4支持最大1EB(1000PB)的文件系统,单个文件最大可达16TB(假设4KB块),是ext3容量的8倍。子目录数量从32KB提升至无限,目录索引采用类散列B树结构,查找效率更高。
