Shell 脚本基础实践指南
作者:Mythsman链接:https://blog.mythsman.com/post/5d2ab67ff678ba2eb3bd346f/
前言由于工作需要,最近重新开始拾掇shell脚本。虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。毕竟shell脚本这个东西不算是正经的编程语言,他更像是一个工具,用来杂糅不同的程序供我们调用。因此很多人在写的时候也是想到哪里写到哪里,基本上都像是一段超长的main函数,不忍直视。同时,由于历史原因,shell有很多不同的版本,而且也有很多有相同功能的命令需要我们进行取舍,以至于代码的规范很难统一。考虑到上面的这些原因,我查阅了一些相关的文档,发现这些问题其实很多人都考虑过,而且也形成了一些不错的文章,但是还是有点零散。因此我就在这里把这些文章稍微整理了一下,作为以后我自己写脚本的技术规范。
代码风格规范开头有”蛇棒”所谓shebang其实就是在很多脚本的第一行出现的以#!开头的注释,他指明了当我们没有指定解释器的时候默认的解释器,一般可能是下面这样:
12#!/bi ...
Linux top 命令的入门总结及场景
参考资料
top: 动态查看进程变化,监控 linux 的系统状况,是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。
下面详细介绍它的使用方法:
统计信息区前五行是系统整体的统计信息。
第一行 是任务队列信息,同 uptime 命令的执行结果。其内容如下:
top - 15:10:00 up 7 days, 15:15, 1 user, load average: 0.41, 0.48, 0.48
15:10:00 当前时间
up 7 days, 15:15 系统运行时间
1 user 当前登录用户数
load average: 2.51, 2.53, 2.53 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。.
第二行 为进程信息, 内容如下:
Tasks: 234 total, 1 running, 147 sleeping, 0 stopped, 0 zombie
total 进程总数
running 正在运行的进程数
sl ...
Shell 分析服务器日志命令集锦
来自:SegmentFault ,作者:CodeCloud
链接:https://segmentfault.com/a/1190000009745139
自己的小网站跑在阿里云的 ECS 上面, 偶尔也去分析分析自己网站服务器日志,看看网站的访问量。看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试!
1、查看有多少个IP访问:
awk '{print $1}' log_file|sort|uniq|wc -l
2、查看某一个页面被访问的次数:
grep "/index.php" log_file | wc -l
3、查看每一个IP访问了多少个页面:
awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file > log.txt
# 配合sort进一步排序
sort -n -t ' ' -k 2 log.txt
4、将每个IP访问的页面数进行从小到大排序:
awk ...
Linux 基本运维汇总
来自公众号:入门小站
Linux基本运维汇总1 rpm管理rpm的作用类似于windows上的电脑管家中软件管理、安全卫士里面 “软件管家” 等产品,是 RPM 软件包的管理工具。rpm 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
要想装软件,和 windows 下一样,先得找到安装包。
软件包的获得方式:
不嫌麻烦的话,去官网去下载;
不介意老版本的话,可以从光盘(或者镜像文件)中读取;
rpm要安装软件需要挂载安装,并且一个一个的去安装对应的依赖,对于一般运维工作,使用yum即可
2 YUM包管理系统2.1 yum简介yum(Yellow dog Updater Modified)是 CentOS 中属于 RPM 前端软件包管理器,能从指定的服务器中下载 RPM 包,并自动分析和处理 RPM 包之间的依赖关系,最后将依次所依赖的软件包都安装了,而无需繁琐的一个一个安 ...
find 命令
find 命令来自公众号:马哥Linux运维
作者:子沐爱扫地(译)
可以很肯定地说,find 命令是 Linux 后台开发人员必须熟知的操作之一,除非您使用的是 Windows Server。
如果你的 Linux 服务器上有一个名为 logs 的目录,如何删除该目录下最后一次访问时间超过一年的日志文件呢?🤔
这种情况很常见,但令人惊讶的是,并非每个开发人员都能在面试中清楚地写出这个命令。
答案:首先我们需要使用 cd 命令进入对应的目录,然后,命令如下:
find . -type f -atime +365 -exec rm -rf {} \;
如果你还没有完全理解上面的命令,完全不用担心。本文将介绍 find 命令的 7 个实际用途,您最终会掌握它。如果您已经知道了,那么阅读这篇文章对您来说将是一个很好的回顾。
1. 按名称或正则表达式查找文件让我们从最简单的用法开始。要按特定名称搜索文件,命令如下:
find . -name test.txt
如何查找所有格式为 pdf 的书籍?使用正则表达式:
find ./yang/books -name &q ...
CentOS 7 系统优化脚本
CentOS 7系统优化脚本来自公众号:运维贼船
作为一名运维,经常会部署各种用途的操作系统,但在这些工作中,我们会发现很多工作其实是重复性的劳动,操作的内容也是大同小异,基于这类情况,我们可以把相同的操作做成统一执行的脚本,不同的东西作为变量手动输入。节约下来的时间不就可以做更多有意义的事情吗?
最近在粉丝有推荐下发现一款比较好用的shell源码,也基于此改编了一下,分享给大家:
先看源码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613 ...
Linux 中是谁占用了端口
来自公众号:入门小站
链接:https://rumenz.com/rumenbiji/linux-address-already-in-use.html
Address already in use这个提示,想必大家遇到过,怎么能快速找到问题并解决呢?下面有几种姿势可以了解一下.
在对网络连接或特定于应用程序的问题进行故障排除时,首先要检查的事情之一应该是系统上实际使用了哪些端口,以及哪个应用程序正在侦听特定的端口。
本文介绍了如何使用netstat,ss和lsof命令找出哪些服务正在侦听哪些端口。该说明适用于所有基于Linux和Unix的操作系统,例如macOS。
什么是监听端口网络端口由其编号,关联的IP地址和通信协议(例如TCP或UDP)的类型标识。
侦听端口是应用程序或进程在其上侦听的网络端口,充当通信端点。
每个监听端口都可以使用防火墙打开或关闭(过滤)。一般而言,开放端口是一个网络端口,它接受来自远程位置的传入数据包。
你不能让两个服务监听同一IP地址上的同一端口。
例如,如果你正在运行一个监听端口80和443的Apache Web服务器,并且尝试安装Nginx ,则后者 ...
Prometheus-监控实战系列一:主机监控
Prometheus监控实战系列一:主机监控前面我们介绍了Prometheus的基础概念,包括数据格式 、PromQL语法等,本节我们将讲解如何通过Prometheus实现主机的监控
Prometheus使用各种Exporter来监控资源。Exporter可以看成是监控的agent端,它负责收集对应资源的指标,并提供接口给到Prometheus读取。不同资源的监控对应不同的Exporter,如node-exporeter、mysql-exporter、kafka-exporter等,在这其中最常用的当属node_exporter。
node-exporter使用Go语言编写,它主要用来监控主机系统的各项性能参数,可收集各种主机指标的库,还提供了textfile功能,用于自定义指标。
一. 安装node-exporter1.1 二进制安装下载安装包并解压
12345$ cd /usr/local/src$ wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5 ...
prometheus-Consul服务发现安装
Consul服务发现安装一、安装二进制安装
下载地址
Centos 7 yum安装
123sudo yum install -y yum-utilssudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.reposudo yum -y install consul
Centos 7 二进制安装
123456789cd /usr/local/src/wget -c https://releases.hashicorp.com/consul/1.14.4/consul_1.14.4_linux_386.zipunzip consul_1.14.4_linux_386.zipmkdir /usr/local/consulsudo chown root:root consulsudo mv consul /usr/local/consulln -s /usr/local/consul/consul /usr/local/bin/consul consul --versi ...
prometheus-basic_auth
Prometheus监控之basic_auth加密配置一、简介平常使用prometheus都是没有加密的安全措施的,有一些节点直接暴漏在公网上了,不安全。现在使用basic_auth加密,可以加个密码,安全一些。
仅仅是登录的时候需要输入账号免密
二、配置1、生成basic_auth秘钥123456789101112#安装工具包yum install -y httpd-tools#生成加密密码htpasswd -nBC 12 '' | tr -d ':n'htpasswd -nBC 10 "" | tr -d ':\n'; echoNew password: # 这里设置密码为123456,实际使用请按照自己的集群需求定义密码Re-type new password:#生成的密码信息$2y$12$mMnPuKlOQ97ff4NjDsQTMukAtRS/ILpjxjEQrCN0vefs0CBLe/hi6
2、node-exporeter添加配置文件1234vi /usr/local ...