首页
常用运维脚本汇总
电子书阅读
Search
1
安装docker时报错container-selinux >= 2:2.74
172 阅读
2
rsync命令(可替代rm删除巨量文件)
141 阅读
3
docker 镜像加速器配置,daemon.json文件详解
133 阅读
4
使用国内镜像地址拉取k8s安装需要的images
94 阅读
5
docker search命令提示i/o timeout的解决方案
93 阅读
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
ai
登录
/
注册
Search
标签搜索
命令
nginx
zabbix
Mingrui
累计撰写
92
篇文章
累计收到
8
条评论
首页
栏目
运维
自动化运维
数据库
容器与k8s
环境
云计算
脚本
ai
页面
常用运维脚本汇总
电子书阅读
搜索到
92
篇与
的结果
2024-09-26
grep命令详解
{alert type="info"}grep命令可以搜索文件,查找指定的字符串{/alert}grep的第一个参数(待搜索的内容)可以是一个简单的字符串,也可以是更复杂的正则表达式。命令行选项[root@web1]# grep panel * 1panel.service:Description=1Panel, a modern open source linux panel 1panel.service:ExecStart=/usr/bin/1panel 1pctl: systemctl status 1panel.service 1pctl: systemctl start 1panel.service 1pctl: systemctl stop 1panel.service -h:不显示特定文件名[root@web1]# grep -h panel * Description=1Panel, a modern open source linux panel ExecStart=/usr/bin/1panel systemctl status 1panel.service systemctl start 1panel.service systemctl stop 1panel.service-c:只显示匹配到了几次,不显示文件中包含指定字符串的行[root@web1]# grep -c panel * 1panel:526 1panel.service:2 1pctl:23 install.log:3 install.sh:11 LICENSE:0 README.md:6-l:只显示包含搜索结果的文件名如果在一个文件中找到了多次匹配,grep仍然只输出该文件名一次。如果没有找到匹配,则什么都不输出。[root@web1]# grep -l panel * 1panel 1panel.service 1pctl install.log install.sh README.md-q:只显示搜索是否成功-q选项没有任何输出,需要使用$?来查看该命令是否成功。如果搜索成功,返回0;如果搜索不到结果,返回1。根据-q选项的该特点,该选项参数更长用于if、while等条件判断中。[root@web1]# grep -q panel * [root@web1]# echo $? 0[root@web1]# if grep -q panel 1panel ;then echo yes;else echo no;fi yes #另一种写法 [root@web1 1panel-v1.10.1-lts-linux-amd64]# if grep panel 1panel > /dev/null ;then echo yes;else echo no;fi yes #如果不重定向到/dev/null,会输出grep的执行结果,界面显得凌乱。 [root@web1 1panel-v1.10.1-lts-linux-amd64]# if grep panel * ;then echo yes;else echo no;fi README.md:- 环境地址:<https://demo.1panel.cn/> README.md:- 密码:1panel README.md:curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh README.md:- [在线文档](https://1panel.cn/docs/) yes-i:不区分大小写[root@web1]# grep -i Panel * 1panel.service:Description=1Panel, a modern open source linux panel 1panel.service:ExecStart=/usr/bin/1panel 1pctl: echo "1Panel 控制脚本" 1pctl: echo " status 查看 1Panel 服务运行状态" 1pctl: echo " start 启动 1Panel 服务" 1pctl: echo " stop 停止 1Panel 服务"-v:对搜索结果取反搜索更复杂的模式grep中的正则表达式提供了更为强大的模式匹配功能,能够满足大部分需求。正则表达式描述了待匹配字符串的模式。字母字符(或者对于shell没有特殊含义的其他字符),只匹配自身。如“A”匹配A,“B”匹配B,“ab”匹配ab。特殊字符:既可以单独使用,也可以与其他字符结合。. 点号,匹配任意单个字符。星号,匹配上一个字符0次或多次。^ 尖角号,匹配文本行的行首位置。$ 美元符号,匹配文本行的行尾位置。[] 匹配其中任意一个字符。[^] 方括号中以尖角号开头,则匹配的是不在该字符组中的任意字符。{n,m} 区间表达式,一种重复机制。匹配前面的内容n到m次。{n} 只重复n次。{n,} 至少重复n次。 📜 举例:.... 可以匹配任意4个字符.A 匹配第二个字母是A的任意字符.A. 匹配任意单个字符,然后是A,然后是任意单个字符A* 匹配A出现了0次或多次.* 匹配任意单个或多个字符(不包含空行)^$ 匹配空行A{5} 匹配连续的5个A字母A{5,} 至少匹配连续的5个A多文件搜索技巧# 在多个日志文件中搜索 grep -r "OutOfMemoryError" /var/log/ # 搜索指定类型的文件 grep -r --include="*.log" "database connection" /var/log/ # 排除某些文件 grep -r --exclude="*.gz" "error" /var/log/ # 搜索压缩文件 zgrep "error" /var/log/nginx/access.log.gz
2024年09月26日
67 阅读
0 评论
0 点赞
2024-09-26
脚本—8:循环与判断中关于真假值的说明
有如下两例循环条件while (( COUNT < MAX )) do some stuff let COUNT++ done while [ -z "$LOCKFILE"] do some things done第一个while语句中的双括号界定了算术表达式,双括号内出现的变量名表示取值。(不需要写成$VAR的形式,直接在括号内使用VAR即可。)第二个while语句中的方括号和if语句中的用法一致,等同于使用test命令。{dotted startColor="#ff6c6c" endColor="#1989fa"/}在bash中,while语法规定该语句的条件是一系列要执行的命令(就像if语句),最后一个命令的退出状态决定了条件是真还是假。退出状态为0,表示真;否则,表示假。比如(( )),shell会对其中的表达式求值,如果结果不为0,那么(( ))就返回0;如果求值的结果为0,则返回1。比如下面这个无限循环:while ((1))do...done说明:((1))的计算结果为1,那么该表达式返回的值为0。在shell中0为真,因此这个while判断的结果永远为真,即无限循环。
2024年09月26日
78 阅读
0 评论
0 点赞
2024-09-26
nginx配置禁止通过IP地址直接访问网站
默认情况下Nginx配置完毕后,是允许ip地址直接访问的。这样做的一个显式风险是网络上的各种ip访问扫码工具会收集我们的web应用程序信息,容易造成信息泄露。相应的,可以在access.log中看到很多通过IP地址访问的记录。修改nginx的配置文件可以禁止通过IP地址访问,相应的配置如下:server { listen 80 default_server; listen 443 default_server; server_tokens off; server_name _ ; return 444; ssl_certificate /usr/share/nginx/doc_html/doc.zhangmingrui.cool_bundle.crt; ssl_certificate_key /usr/share/nginx/doc_html/doc.zhangmingrui.cool.key; } 说明:default_server 代表默认无匹配(的server_name)时由当前的server处理。server_name _ 代表无效域名。return 444 匹配到该server后,返回444状态(前段收到ERR_EMPTY_RESPONSE 错误)。
2024年09月26日
58 阅读
0 评论
0 点赞
2024-09-25
脚本—7:(( ))与[[]]复合命令在if判断while循环等情况下的使用
$(()) 或者let进行整数运算说明:$(())表达式内不需要使用空格(加上也无所谓)。let命令是bash内建命令,其参数要经过单词扩展,因此最好给let的表达式加上引号。[root@web1 ~]# echo $((3+5)) 8 [root@web1 ~]# sum=200 [root@web1 ~]# echo $((3+5*sum)) 1003 [root@web1 ~]# let sum=3**5 [root@web1 ~]# echo $sum 243 {lamp/}复合命令if (( $# < 3 ))说明:双括号是复合命令的一种。这是一种比较新的bash改进,专门用于有if语句的场合。它会对其中的算术表达式求值。双括号与方括号的区别:可用于if语句的这两种语法之间的重要区别在于测试的表达方式及其能够测试的对象种类。双括号仅限于算术表达式。方括号还可以测试文件特性。但是方括号的算术测试语法远不如双括号方便,尤其是用括号将表达式分成若干子表达式时(在方括号中,需要给括号加上引号或将其转义。)例:[ ( 3 -gt 2 ) -o ( 4 -lt 1 ) ]模式匹配if [[ "${MYFILENAME}" == *.jpg ]]在if语句中使用符合命令[[]]可以在等量运算符的右侧启用shell风格的模式匹配。[[ ]] 语法不同于test命令的老形式[,它是一种较新的bash机制。能够在[]中使用的运算符也可以在[[]]中使用,但在后者中,等号是一种更为强大的字符串比较运算符。在这里面,=和==两者在语义上是相同的,但推荐使用==,这样更加醒目。标准模式匹配包括*(匹配任意数量的字符)、?(匹配单个字符)以及[](匹配字符列表中的任意一个)。注意,其写法与shell文件通配符类似,但不同于正则表达式。如果进行模式匹配,就不能把模式放入引号中,否则就只能匹配到以星号为首的字符串(模式匹配按照模式字符串的字面意义意义进行匹配)。扩展模式匹配通过启用某些bash选项,可以使用一些更为强大的模式匹配功能。shopt -s extglog #打开shell选项。extglob选项设计扩展模式匹配(或通配符匹配)。借助扩展模式匹配,我们可以使用多个模式,彼此间用|字符分割并通过括号分组。括号之前的@字符表示仅匹配括号中的模式一次。例,查找以.jpg或者.jpeg结尾的文件名shopt -s extglog if [[ "FN" == *.@(jpg|jpeg) ]] then ……扩展模式含义@( ... )仅匹配一次*( ... )匹配0次或多次+( ... )匹配1次或多次?( ... )匹配0次或1次!( ... )匹配除此之外的任何模式正则表达式匹配完整的脚本#!/usr/bin/env bash # cookbook filename: trackmatch # for CDTRACK in * do if [[ "$CDTRACK" =~ "([[:alpha:][:blank:]]*)- ([[:digit:]]*) - (.*)$" ]] then echo Track ${BASH_REMATCH[2]} is ${BASH_REMATCH[3]} mv "$CDTRACK" "Track${BASH_REMATCH[2]}" fi doneif [[ "$CDTRACK" =~ "([[:alpha:][:blank:]]*)- ([[:digit:]]*) - (.*)$" ]]说明:关于数组BASH_REMATCH,它是bash内建的数组变量。$BASH_REMATCH的各个元素由括号中的每个子表达式产生。第0个元素(${BASH_REMATCH[0]})是正则表达式所匹配的整个字符串。子表达式可以通过${BASH_REMATCH[1]},${BASH_REMATCH[2]}等形式引用。只要将正则表达式写成这样,就会生成变量$BASH_REMATCH。[:alpha:]*:这是第一个表达式,采用了POSIX字符组的[:alpha:]和[:blank:]代表任意的字母和空白字符,随后的星号表示0次或多次重复。[[:digit:]]*:这是第二个子表达式,[:digit:]代表数位,加上星号表示方括号中的数位出现0次或多次。(.*)$:匹配任意字符出现任意次数。$匹配结尾。
2024年09月25日
65 阅读
0 评论
0 点赞
2024-09-24
脚本—6:导出变量export
如果在某个脚本中定义了一个变量,又希望在其他的脚本中引用这个变量,可以使用export将希望传递给其他脚本的变量导出。使用方式:在export后面跟上变量赋值在export后面跟上要导出的变量名export FNAME export SIZE export MAX MAX=2018 SIZE=60 FANEM=/tmp/secatch ... export FNAME=/tmp/secatch export SIZE=64 export MAX=2018查看导出的变量set命令查看当前shell中的所有变量值及函数定义用env(或export -p)命令查看那些被导出的、可用于子shell的变量declare -p 也可以查看变量declare语句形式的输出可以在shell脚本中作为源代码,重新创建这些变量并为其赋值。各个选项(-i,-x,-r,-a)分别指明了变量为整数类型,已经导出、只读、数组类型。declare -p declare -i MYCOUNT="5" declare -x MYENV="10.5.1.2" declare -r MYFIXED="unchangeable" declare -a MYRA=([0]="5" [1]="10" [2]="15")
2024年09月24日
59 阅读
0 评论
0 点赞
1
...
11
12
13
...
19