Contents
xshell控制台使用技巧
操作快捷键
- Ctrl+r:快速查找、使用历史命令
- Ctrl+l: 清理控制台屏幕
- Ctrl+a \Ctrl+e:移动光标到命令行首\行尾
- Ctrl+w\Ctrl+k:删除光标之前\之后的内容
VIM文件编辑快捷键
- 快捷键ZZ:文件保存并退出
进程操作快捷键
- Ctrl+c: 强制终止程序的执行
- Ctrl + z: 挂起一个进程
- Ctrl+d: 终端中输入 exit 后回车
linux命令中快捷键(top)
- Shift+p:根据 CPU 使用率排序
- Shift+m:根据内存占用排序
- x+c+b:高亮显示+COMMAND补全
- shift+</>:切换排序
部分场景的命令合集
空间分析-场景1:磁盘空间不足,需快速定位日志目录
需要如下组合命令:
du -x –max-depth=1 /|sort -k1 -nr
- du命令:
- -x 参数表示跳过其他文件系统
- –max-depth 参数设置为 1,可以统计出根目录下第一级目录中所有文件大小
- sort命令:
- -k 参数指明具体按照哪一列进行排序
- -n 参数表示只对数值进行排序
- -r 参数表示反向排序
- 整体分析sort这一段命令的意思就是指定第一列并按照数据大小做反序排序
空间分析-场景2:系统产生很多碎片文件,导致 inode 资源不足
需要如下组合命令:
find -type f|awk -F/ -v OFS=/ ‘{$NF=””;dir[$0]++}END{for(i in dir)print dir[i]””i}’|sort -k1 -nr|head
- find命令通过-type f参数查找指定文件类型的文件,然后将查找结果通过管道传递给awk
- awk -F/ 指定处理文件时字符串之间以/进行分割, -v OPS=/ 表示文件显示结果时以/进行分割展示
- awk命令整体规则而言有一个 {}END{} 格式,前面的 {} 表示行处理操作, END{} 表示行处理后需要进行整体结果
- 行处理操作逻辑中,设置$NF为空表示将每一行的文件名信息去除,只保留目录路径, dir是一个自增数组,用于统计结果
- 最后通过 for 循环进行遍历输出dir关联数组中所有行信息
文件操作-场景1:批量查找文件做内容替换
需要如下组合命令
find ./ -type f -name filename.xml -exec sed -i “s/aaaaaa/bbbbbb/g” {}\;
- find 命令中
- -name 参数指定查找的文件名
- -exec 参数将查找到的内容传递给下一个命令去继续执行相关逻辑
- sed 命令主要对文件内容进行替换,这里会将 filename.xml文件中的 aaaaaa 替换成 bbbbbb
文件操作-场景2:批量查找文件作拷贝打包
需要如下组合命令
(find . -name “*.txt”|xargs tar -zcvf test.tar.gz) && cp -f test.tar.gz /home/.
- 括号中
包含两条命令,它们使用管道符进行连接
- 括号外
通过”&&”符号与第三条命令进行连接,也就是我们首先需要执行括号中的组合命令,先查找所有.txt文件然后将结果传递给xargs命令进行打包,如果打包成功后才将压缩包传递给cp命令进行拷贝
场景-网络连接状态分析
想了解用户请求所建立的网络连接状态分析需要如下组合命令
netstat -n|awk ‘/^tcp/ {++S[$NF]}END{for (i in S)print i,S[i]}’
- netstat
- -n 命令负责查看主机上的所有 TCP、UDP 连接信息
- awk 命令
- 负责对这些信息进行进一步的处理
- ‘斜杠’ 括起来的正则表达式主要用来匹配以tcp开头的每一行信息,这里的正则表达式起到了一个过滤的作用(只分析tcp的连接),后面则是对信息过滤后进行具体的统计和输出
场景-IP信息提取
提取主机上的IP 信息需要如下组合命令
ip a|grep ‘global’|awk -F”[ /]+” ‘{print $3}’ 或 ip a|grep “global”|awk ‘{print $2}’ |awk -F/ ‘{print $1}’
- ip a负责查看主机上所有网卡的信息
- 通过 grep 进行条件过滤
- 再通过 awk 实现第二列内容输出
- 最后通过 awk 以指定/作为分隔符来打印第一列的信息
常见问题答疑
问题一:Shell 适不适合作多并发任务?
答案:不适合
在 Shell 中一般需要通过 nohup 方式将需要并发执行的命令放入后台,但这样操作存在一些问题,包括:进程的状态不好控制;进程间信息共享一般以文件方式等。所以当需要进行大的自动化工程任务需要作并发任务时,建议选择 Python、Go、PHP 等语言
问题二: Shell的远程执行命令方式是什么?
答案:当 Shell 进行远程执行命令时通常通过 ssh xx@xxx.xxx.xxx.xxx /home/ieson/imoocc.sh 参数的方式
但如果是批量主机任务,建议选择ansible、 saltstack这样成熟且专业的工具实现
问题三: Shell 适合用在什么场景中?
答案:Shell 适合用在追求运维高效(非性能高效)要求的简单场景中,如日志切割、进程分析、系统初始化等