shell
这个是最多的!
醉世老翁
本该正常的过程中出现了诡异的问题,往往是由于基础的问题导致。
展开
-
shell批量定义变量名结合数组一块用,a1,a2,a3,a4~
先看效果图批量定义变量名,通过echo,打印出要定义的key value,打印出来是字符串,通过eval函数,将字符串当命令执行实现批量定义。#!/bin/bash arr(){ #定义函数 a=0 #数组初始索引为0 for i in `seq 1 $1` #循环多少次 do a1a1=`echo $args1|awk -F"' '" -v a=$i '{print $a}'| tr -d "'"` #格式化内容 eval var1[$a.原创 2022-03-11 16:06:36 · 667 阅读 · 0 评论 -
linux touch修改stat查看的时间
创建一个文件touch astat命令查看文件状态stat a修改更改时间touch -mt 197001010101 a修改访问时间touch -at 197001010101 atouch命令用法:原创 2022-02-09 11:23:32 · 291 阅读 · 0 评论 -
shell根据最新时间保留目录下的十个文件夹
#!/bin/bashdir_list=`ls /home/test/Test` #获取目录下有几个不同的目录,echo $dir_list # T1,T2,T3exe(){ #定义函数all_dir=(`ls -t /home/test/Test/$1/`) #根据最新时间排序,获取$i目录下的所有目录c=`expr ${#all_dir[*]} - 1` #减一,减去/home/test/Test,如果不减一,会把这一层列出来,删除的时候就直接删除整个目录了for i in `...原创 2021-12-13 11:02:13 · 1851 阅读 · 0 评论 -
shell 并发脚本 fifo fd6
#!/bin/bash #声明uptime #输出开始时间echo "">url.log #清空日志limit=$2 #获取进程数量tmp_fifofile="/tmp/$$.fifo" #以pid为文件名mkfifo $tmp_fifofile #创建fifo文件exec 6<>$tmp_fifofile #定义文件描述符6指向这个fifo管道文件rm $tmp_fifofile #关联fifo文件和fd6#输出进程数量的回车到fd6fo...原创 2021-06-16 17:08:31 · 1091 阅读 · 0 评论 -
shell脚本一键安装jdk1.8和tomcat
chmod +x install.sh./install.sh会自动下载jdk1.8,会提示输入tomcat版本号,也可以直接在脚本里写死版本号#!/bin/bashset -eux #############出问题停止执行################定义函数sed_sh(){sed -i '1a export JAVA_HOME=/usr/local/jdk1.8.0_141' /usr/local/tomcat/bin/$1.shsed -i '2a export.原创 2021-03-10 16:42:27 · 418 阅读 · 0 评论 -
Xshell常用快捷命令集
查看tcp各个连接数netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'查看负载前10ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head查看内存前10ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head查看mysql各个连接数/usr/local/mysql/bin/mysql -原创 2021-02-22 15:29:11 · 665 阅读 · 0 评论 -
shell三剑客 sed使用正则
grep:grep不区分大小写:grep -igrep多个选项,并且不区分大小写:grep -E -iegrep -i多列信息,横向展示|xargs配合sed,替换字符串替换字符串sed -r ‘s///g’这是替换格式 -r代表拓展正则表达式sed -r ‘s/(haidou :)(\s[a-z]+)/\1###/g’sed -r ‘s/ 这是格式,第一部分(haidou : )第一个匹配项,写死了(\s[a-z]+)第二..原创 2021-02-02 13:49:00 · 769 阅读 · 0 评论 -
linux sed一句话替换整行,内容值为变量
#!/bin/bash#获取今天日期now_date=`date +"%Y-%m-%d"`sed -i "s/how_date = .*$/how_date = $now_date 09:59:58.000XXXXXX/g" /path/test.conf测试:需要注意的是,"s/a/b/g"需要是"双引号" ,单引号的话,使用$会被当成字符串处理,结果如下:...原创 2021-01-11 17:02:12 · 1884 阅读 · 0 评论 -
shell脚本自动清理目录,只保留最新的目录
案例: /data0/logs下有几个日志目录 nginx ,php ,mysql ,redis 等,这些服务的目录下又有一堆log文件,按照日期命名的如:nginx_20201027.log,php_20201027.log等现要求,一个脚本实现,自动删除每个服务目录下的历史日志,只保留最新的一个日志即可脚本如下:#!/bin/bash#获取每一个子目录的名称dirs_list=`ls /data/logs/`定义函数exeexe(){#将每个目录名放入一个...原创 2020-10-27 12:04:07 · 950 阅读 · 0 评论 -
Webshell河马后门查杀工具配合shell脚本实现多站点自动化查杀
河马官网https://www.shellpub.com/河马工具查杀的步骤特别简单下载,解压,开始扫描,参考官网教程https://www.shellpub.com/doc/hm_linux_usage.html扫描出来的结果都会保存在hm文件的同级目录result.csv中,扫描出来的结果是这样的第一行是固定的,序号,类型,路径,如果有可疑或者木马文件,会生成一个result.csv如果没有则不会生成,再次执行,会覆盖上次的result.csv结果需要注意的是,这个工具需要联..原创 2020-08-07 11:49:44 · 3045 阅读 · 1 评论 -
shell脚本统计nginx日志每分钟/小时的qps,pv,简单实用附带思路和注释!
脚本思路:先思考获取每分钟的PV,qps的该如何?处理较小的日志可以直接cat,因为要循环取,频繁操作日志文件,如果日志过大,会执行很慢,所以先把我们要的东西给提出来,cat test.log| cut -d ' ' -f4 | uniq -c | sort -n -r -o ./temp_sorted.log上面这条命令查看日志 |(管道符) cut以“ ”(空格)为分隔符,取出第四列 | 统计次数并且去重 | 按照数值排序,逆序,输出结果到temp_sorted.log 中..原创 2020-07-16 15:51:17 · 4579 阅读 · 11 评论 -
linux 中crontab 定时 shell脚本启动jar包,tomcat失败
crontab设置通过shell脚本定时启动jar包,脚本如下restart.sh:ps -ef|grep testjar |grep -v grep |awk '{print $2}'|xargs kill -9nohup java -jar /usr/local/java/testjar1.jar >> /usr/local/java/output/testjar1.jar.log &nohup java -jar /usr/local/java/testjar2.jar原创 2020-07-15 17:27:57 · 820 阅读 · 0 评论 -
shell脚本实例
领导有需求,运维来完成。需求:获取每个库里的注册数登录数,需要执行脚本1.sh login/register输出6个库登录/注册的总数,脚本如下。好久没写shell了,把shell的数组和python的数组语法搞混了,几个注意事项记录一下。注意事项:python的数组是arr = (1,2,3,4,5)shell的数组是arr=(1 2 3 4 5)python的是用逗号分隔,shell是用空格分隔python变量名两边都要有空格(没有也可以,一般都隔开,代码规范),shell.原创 2020-05-19 16:02:37 · 226 阅读 · 0 评论 -
shell脚本中那几个一句话
今天看一个脚本源码,发现了几种写的写法,记录一下,之前都是死格式多行写的,用了一下感觉挺方便的。CASEcase “$@” in --all) echo “true”;true;; *) echo “false…”;false;; esac#一句话case,如果参数是–all,输出返回true,,如果不是,输出返回false,#多个条件可以多个–xxx) 来写,但是写很多的话,一句话就不合...原创 2020-04-29 18:05:33 · 591 阅读 · 0 评论 -
Linux 一键安装 clamav 以及configure: error: Your OpenSSL installation is misconfigured or missing 解决方法。
今天给公司服务器安装clamav开源杀毒软件,碰到了个错误:configure: error: Your OpenSSL installation is misconfigured or missing提示的是openssl 安装配置错误或丢失,然后在服务器上找了一下,发现有openssl,是源码安装的,在/usr/local下然后根据问题的提示,是没找到openssl...原创 2020-03-04 16:24:56 · 3841 阅读 · 6 评论 -
shell脚本配合定时每天检查有无webshell上传
#近期网站总是有黑客上传webshell,由于找不到漏洞在哪,只能检查有无新文件上传了,写了个shell脚本#检查每个网站根目录的文件数,排除了runtime那些文件#!/bin/bash#定义每个目录名,存为数组data_dir=("shuju1.com" "shuju2.com" "shuju3.com" "shuju4.com" "shuju5.com" "shuju6.co...原创 2019-11-14 15:45:25 · 322 阅读 · 0 评论 -
shell与awk的脚本运用(一)
#!/bin/bash#shell声明b=`ls *.txt` #列出当前目录下所有log结尾的文件 for log in $b #循环每一个log文件do b=`awk 'END{print NR}' $log` #获取当前循环文化最后一行的行号 for i in `seq $b` #循环多少次,一行循环一次 do ybs=`cat $log |grep 2222 ...原创 2018-05-16 11:15:24 · 3268 阅读 · 0 评论 -
日常工作中的shell脚本
#!/bin/bash #shell声明dir_num=`find /test/ -name "*.html"` #获取test目录下所有的html文件time=`date` #定义时间变量echo "开始 $time" >> /tmp/shell/excute.txt #脚本开始运行,将开始运行的时间追加到指定文件中for i in $dir_num #for循环每一...原创 2018-05-23 10:49:16 · 2013 阅读 · 0 评论 -
通过shell取多条重复数据的最后一条
任务说明:日志文件中存在多条记录,现要求取出文件中的某两列,而且是去重,取最新的一条记录(就是取这个ID最后出现的那一行的那两列)脚本代码如下:#shell声明#!/bin/bash#获取最后一行的行号line_desc_num=`awk 'END{print NR}' log.txt`#循环每一行,从第一行开始for i in $line_desc_num#进入循环do#取出这一行的第六列和第七...原创 2018-06-29 15:07:16 · 4022 阅读 · 5 评论 -
shell与awk的脚本运用(三)
要求:取出log中最后以GG结尾,并且下一行的ip字段是否包含aaaa,这两行必须是同一个人,然后将这两行的指定信息输出到最终文件中。 #!/bin/bash#脚本声明file=`ls *.LOG`#列出所有log文件a=0#定义变量a的值为0,待会作为下一行的行号for log in $file#循环每一个log文件do#进入循环 line_num=`a...原创 2018-08-07 15:01:12 · 185 阅读 · 0 评论 -
shell脚本批量修改mysql表引擎
进入到mysql的数据目录,例如/data#进入到data目录,如果不进入打绝对路径会带着/data/表名cd /data#列出所有表的数据结构文件,然后去掉.frm,追加到文件中就是所有的表名了ls *.frm |awk -F'.frm' '{print $1}' > /root/all_tables.txt 当然,你也可以用另一种方式,直接从数据库复制粘贴/us...原创 2018-11-01 10:50:05 · 582 阅读 · 0 评论 -
shell与awk的脚本运用(四)
网站改版,原来很多的东西都在/html下以dj开头,比如dj123,djXXXXxx,djLAMXAO,现在根据seo的规则,要将网站的url规范处理,集体301到新的url,目录也得变,伪静态也得添加,seo给的规则表格是在excel里,看了一眼,200多条,懒得手动一条一条添加,写个shell方便点。由于都是在excel里,所以直接复制新旧url那两列到服务器上的一个新文件中。 #...原创 2018-11-28 12:05:58 · 172 阅读 · 0 评论 -
shell脚本统计网站pv,每分钟/小时/天~
脚本内容如下:#!/bin/bash####获取输入read -p "请输入日志名称: " log_name####将日志进行统计,每秒钟的请求数cat ./$log_name | cut -d ' ' -f4 | uniq -c | sort -n -r -o ./temp_sorted.log###定义一天的pv,初始值为0all_pv=0###循环24小时,一天...原创 2019-08-08 16:16:54 · 1186 阅读 · 0 评论 -
shell与awk的脚本运用(二)
话不多说,老板,上硬菜#!/bin/bash #shell脚本声明a=`ls log*`#将当前目录下的log开头的日志文件名称存入变量afor i in $a #开始循环变量ado #进入循环 echo $i #输出文件名 b=`cat $i|awk -F'|' '{print $NF"-"NR}'`#定义变量b为文件中每一行最后一个以|为分隔符的参数和行号,输出来是这样的:11-1...原创 2018-03-27 15:06:46 · 563 阅读 · 0 评论