
shell
打卤
不会前端的运维,不是好DBA
展开
-
获取前N个小时的每小时区间(如:上小时的整点到59分59秒)
#!/bin/bash# `expr 60 \* 60 \* 0`for i in {1..5}doecho -----------------------difference=`expr 60 \* 60 \* $i` #echo $differencestarttimestamp=`expr $(($(date +%s) - $(($(date +%s) % 3600)))) - $difference` echo $starttimestampendtimestamp=`expr原创 2021-01-26 21:01:03 · 284 阅读 · 0 评论 -
shell命令--一行命令写入crontab自动任务
(echo "0 0 * * * /script/clean_file.sh >>/dev/null 2>&1" ; crontab -l )| crontab直接写入到crontab ,不需要crontab -e。可用于shell批量写入。原创 2020-03-16 10:38:36 · 3640 阅读 · 1 评论 -
shell脚本--直接用命令写入自动任务的方法
(echo "0 0 * * * /bin/find /logs. -mmin +1440 -type f -delete &" ; crontab -l )| crontab原创 2020-01-16 15:51:58 · 822 阅读 · 0 评论 -
shell脚本--一键删除zabbix历史数据
设置自动任务每天执行,删除7天前的数据。#!/bin/bashUser="zabbixuser"Passwd="zabbixpass"Date=`date -d $(date -d "-7 day" +%Y%m%d) +%s` #取7天之前的时间戳$(which mysql) -u${User} -p${Passwd} -e "use zabbixdb;DELETE FROM his...原创 2019-12-30 11:00:47 · 480 阅读 · 0 评论 -
shell脚本--计算2个数值的百分比
a=20b=100计算百分比 echo `awk 'BEGIN{printf "%.1f%%\n",('$a'/'$b')*100}'`20.0%原创 2019-12-06 11:44:28 · 7128 阅读 · 0 评论 -
shell脚本--通过命令行获取文件的修改最后时间
#文件名FILE_NAME='tmp.txt'#获取文件做后修改时间戳LAST_MODIFY_TIMESTAMP=`stat -c %Y $FILE_NAME`#格式化时间戳formart_date=`date '+%Y-%m-%d %H:%M:%S' -d @$LAST_MODIFY_TIMESTAMP`echo $formart_date...原创 2019-12-06 11:42:28 · 2681 阅读 · 0 评论 -
shell脚本--一键挂载磁盘
fdisk不能处理 2T 以上的此案,因此不如直接使用parted命令#!/bin/bashparted -s /dev/sdb mklabel gpt mkpart extended 0% 100% mkfs.ext4 /dev/sdb1mkdir /dataecho "/dev/sdb1 /data ext4 de...原创 2019-12-06 11:37:06 · 1511 阅读 · 1 评论 -
shell脚本--批量分发集群免密公钥
使用场景,集群test01的test用户,需要免密test集群的所有服务器。前提:集群的test用户的密码统一,配置了hosts。#!/bin/bashfor hostname in test{01..100}doecho $hostnameexpect << EOF spawn ssh-copy-id -i id_rsa.pub test@$hostname #发...原创 2019-11-21 10:13:56 · 285 阅读 · 0 评论 -
shell脚本--ntp编译安装与一键升级
官方包4.2.8p13下载链接:http://www.ntp.org/downloads.htmlcenots7#!/bin/bashcp /etc/ntp.conf /etc/ntp.conf_bakcp -r /etc/ntp /etc/ntp_bakcp /usr/lib/systemd/system/ntpd.service /usr/lib/systemd/system/bak...原创 2019-11-15 12:54:41 · 647 阅读 · 0 评论 -
shell脚本--批量检测服务器ssh免密是否连通
使用场景:集群机器做了免密互通,要批量测试连通性。机器hostname统一为test01 -test100#!/bin/bashfunction getConnection(){ ssh -o NumberOfPasswordPrompts=0 $1@$2 "pwd" &>/dev/null if [ $? != 0 ];then e...原创 2019-11-06 15:35:27 · 1893 阅读 · 1 评论 -
shell脚本--实现FTP上传和下载文件
#!/bin/bashftp -n -i 127.0.0.1 <<EOFuser test password123binarycd commonlcd /tmp##下载单个文件,如果要实现批量下载文件,可以将get 修改为mget *.txtget test.txtbyeEOF##上传单个文件ftp -n -i 127.0.0.1 <<EOFuser...原创 2019-11-04 11:48:52 · 1433 阅读 · 0 评论 -
shell-利用正则表达式提取文本中的ip并去重
IP正则表达式:ip_regex="[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}"例子:方法1:find . "1.txt" -type f -print | xargs cat | egrep -o $ip_regex | sort | uniq方法2:(并带有端口)ip_rege...原创 2019-10-17 08:36:53 · 3610 阅读 · 0 评论 -
-bash: ./xxx.sh: /bin/bash^M: bad interpreter: No such file or directory
Linux环境下执行脚本时报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录原创 2019-09-10 10:32:55 · 3327 阅读 · 0 评论 -
shell脚本--提示确认(Y / N,YES / NO)
你已经看到的命令多次要求确认[Y / N]或[YES / NO]输入。这是,如果用户想继续为其余步骤,它是非常有用的部分。您还可以添加同样的功能在您的脚本中。本文将帮助你完成这种类型的输入例子。例1:确认提示(一次)这个示例代码将为确认提示一次,如果你给输入错误,程序会以状态1退出。这个例子将只接受Y或N或YES或NO(不区分大小写)。#!/bin/bashread -r -p "Are...原创 2019-06-24 16:58:50 · 37374 阅读 · 0 评论 -
shell--文本处理之倒叙排列+根据第2行内容去重
nl dalu.log | sort -nr | cut -f2 | sort -t ' ' -k 2 -u解释:nl dalu.log :加入编号sort -nr :倒叙cut -f2 :去掉编号sort -t ’ ’ -k 2 -u:按空格分隔后,按第二列的内容去重...原创 2019-06-23 13:18:44 · 1260 阅读 · 0 评论 -
shell中实现循环日期
#!/bin/shif [ $# == 2 ]; then datebeg=$1 dateend=$2else echo "请输入开始时间和结束日期,格式为2017-04-04" exit 1fibeg_s=`date -d "$datebeg" +%s`end_s=`date -d "$dateend" +%s`echo "处理时间范围:$beg_...转载 2019-06-18 10:33:29 · 1973 阅读 · 0 评论 -
shell脚本--检查目录下文件是否更新。
#!/bin/bashfunmd5_1() { find /data/dalu/html -type f | xargs md5sum > /tmp/funmd5_1.log }funmd5_2() { find /data/dalu/html -type f | xargs md5sum > /tmp/funmd5_2.log }if [ ! -f /tmp/fu...原创 2019-04-10 08:56:17 · 3075 阅读 · 0 评论 -
shell命令--sed使用方法总结
在文件中每行之间加入换行sed -i 's/^/\n/g' /file原创 2019-02-27 10:59:14 · 321 阅读 · 0 评论 -
shell-zip备份上个月的日志(目录)
#!/bin/bashlast_month=$(date -d "$(date +%Y%m)01 last month" +%Y%m)echo $last_monthcd /PTAHfile=$(ls -d $last_month*)zip -qrv /log/bak/$last_month.zip $file原创 2018-11-23 16:30:09 · 356 阅读 · 0 评论 -
shell脚本-nginx日志切割
#!/bin/bashLOGS_PATH=/logs/nginx/YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)echo $LOGS_PATH/history/$YESTERDAYmkdir -p $LOGS_PATH/history/$YESTERDAYmv $LOGS_PATH/*.log $LOGS_PATH/history/$YES...原创 2018-11-26 11:50:07 · 281 阅读 · 0 评论 -
用shell脚本发送钉钉群消息
添加钉钉机器人方法-请自行百度#!/bin/bash#-*- coding:utf-8 -*-Message=${1}curl ‘*~~钉钉机器人链接~~* ’ \ -H 'Content-Type: application/json' \ -d " {\"msgtype\": \"text\", \"text\": { \"content\"...原创 2018-11-27 10:52:00 · 4667 阅读 · 1 评论 -
shell脚本-监控python是否在运行,没有则重启python(python进程守护)
有时候需要一些python脚本去常链接一些东西,就需要监控是否运行正常。#!/bin/bashproject1='/root/1.py'project2='/root/2.py'for Pro in $project1 $project2doPythonPid=`ps -ef | grep $Pro | grep -v grep | wc -l `echo $Proif...原创 2018-11-27 16:41:13 · 3070 阅读 · 3 评论 -
shell-5秒运行一次任务
crontab 最低1分钟运行,无法达到秒级,就需要写个for循环去执行任务,到达秒运行自动任务#!/bin/bash step=5 #间隔的秒数,不能大于60 for (( i = 0; i < 60; i=(i+step) )); do $(python '/data//NAME.py' >> /data/NAME.log ) s...原创 2018-11-27 16:45:40 · 1880 阅读 · 0 评论 -
通过nginx日志统计5分钟内所有项目的pv
#!/bin/bashfor file in `ls -l /nginx/ |grep ^- | awk '{print $9}'`doori_log_path="/logs/nginx/$file.access.log"tmp_log_path="/logs/nginx/$file.5min.access.log"date_stamp=`date -d "-5min" +%Y:%H:..原创 2018-11-27 16:50:26 · 1937 阅读 · 0 评论 -
shell脚本-保留目录下最新的几个文件,其他删除
#!/bin/bash#保留文件数ReservedNum=5FileDir=/data/bakdate=$(date "+%Y%m%d-%H%M%S")FileNum=$(ls -l $FileDir|grep ^- |wc -l)while(( $FileNum &gt; $ReservedNum))do OldFile=$(ls -rt $FileDir| head...原创 2018-11-27 18:13:38 · 9006 阅读 · 0 评论 -
shell-if表达式(-f,-d,-s,-r,-w,-x,-eq,-ne,-ge,-gt,-le,-lt )
文件表达式if [ -f file ] 如果文件存在if [ -d … ] 如果目录存在if [ -s file ] 如果文件存在且非空if [ -r file ] 如果文件存在且可读if [ -w file ] 如果文件存在且可写if [ -x file ] 如果文件存在且可执行整数变量表达式if [ int1 -eq int2 ...原创 2018-12-05 14:55:56 · 61838 阅读 · 3 评论 -
shell脚本-通过分析日志统计php接口耗时
#!/bin/bash#获取时间day=`date -d '-1 day ' +%Y%m%d`excepttime=`date -d '-1 day ' +%Y-%m-%d`echo "" > /root/tmptxt/time.txtecho "" > /root/tmptxt/accesslist.txt#获取接口for project in NAME...原创 2018-12-27 08:59:13 · 901 阅读 · 0 评论 -
shell脚本-备份上个月的文件
前提文件包含日期#!/bin/bash#输出上个月的日期last_month=$(date -d "$(date +%Y%m)01 last month" +%Y%m)echo $last_monthcd /log/#查找所有上个月日期的文件file=$(ls -d $last_month*)#执行压缩到备份目录zip -qrv /log/bak/$last_month.zi...原创 2018-12-03 17:36:20 · 1029 阅读 · 0 评论 -
shell脚本-监控CPU/内存/硬盘 使用率
#!/bin/shfree -m | awk 'NR==2{printf &quot;Memory Usage: %s/%sMB (%.2f%%)\n&quot;, $3,$2,$3*100/$2 }'df -h | awk '$NF==&quot;/&quot;{printf &quot;Disk Usage: %d/%dGB (%s)\n&quot;, $3,$2,$5}'top -bn1 | grep原创 2019-01-08 10:26:59 · 3094 阅读 · 1 评论 -
shell脚本--用企业微信实现发送信息
由于token有时效,需要安装jq–yum -y install jq#!/bin/shexpireTime=7200dbFile="db.json"corpid="wwb0bd5541f462bbc3" #企业IPagentid=1000002 #应用IDcorpsecret="rawdALOSaXtVXsQUrfi2bwJXYdbLEHRHfXaLRjKkjFU" #自建应用..原创 2019-01-08 11:31:11 · 3430 阅读 · 0 评论 -
shell脚本--简单实现监控备份文件是否成功(生成)
ps: 备份文件一般是按统一的名字+日期保存在一个目录,只需要监控这个目录的新文件是否生成即可#!/bin/bashYesterday=$(date -d '-1 day ' +%Y%m%d)File=$Yesterday.zip#检查多个备份项目Path1=148Path2=152list="$Path1 $Path2 "for i in $list; do if [...原创 2019-01-08 15:24:28 · 1609 阅读 · 0 评论 -
shell脚本--awk的妙用(统计ngxin日志中所有URL地址的调用次数)
统计ngxin日志中所有URL地址的调用次数日志格式123.123.123.123 - - [21/Feb/2019:16:44:44 +0800] “testapi.test.com/login/index/logout.do?sfsfsdfadfadfa” 200 0.031 41 “-” “*************************************”cat test...原创 2019-02-21 16:54:49 · 795 阅读 · 0 评论 -
shell脚本--重启nohup后台运行的程序
例子:重启filebeat#!/bin/bashpid=`ps -ef | grep "filebeat" | grep php_api.yml | awk '{printf $2}'`echo $pidkill -9 $pidcd /data/logs/nohup /data/elk/filebeat-6.0.0/filebeat -e -c /data/elk/fil...原创 2019-02-12 15:58:20 · 6593 阅读 · 0 评论 -
shell获取mysql数据
#!/bin/bash#-- coding:utf-8 --HOSTNAME=“数据库实例IP”PORT=“端口”USERNAME=“用户名”PASSWORD=“密码”DBNAME=“库名”select_sql=“select 1 这里是查询语句”#执行查询result=mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWOR...原创 2018-11-15 11:36:02 · 5492 阅读 · 0 评论