- 博客(33)
- 资源 (25)
- 收藏
- 关注
原创 shell小技巧(三十)去除字符串中多余的 空格
去除字符串中多余的 空格,多个空格合并为1个方法1:echo "1 2 3 4 5" | sed 's/ */ /g'方法2:echo "1 2 3 4 5" | tr -s " "
2020-03-31 17:01:08 1964
原创 shell小技巧(二十九)大小写字母转换
大写转小写x="flowFee"echo $x | tr 'A-Z' 'a-z'小写转大写echo $x | tr 'a-z' 'A-Z'
2020-03-31 16:55:46 810
原创 shell小技巧(二十八)生成随机8位字串
方法1:date +%N | md5sum | cut -c 1-8方法2:top -d 1-n 1 | md5sum | cut -c 1-8方法3:echo $RANDOM | md5sum | cut -c 1-8方法4:openssl rand base64 4 |md5sum | cut -c 1-8本例跟二十二的随机数类似,不做更多说明...
2020-03-31 15:05:29 644
原创 shell小技巧(二十七)检查url
代码如下:chkinst(){if [ -z $1 ]; then echo "neec software name" return 2else softname=$1fix1=$softname":"x2=$(whereis $softname)if [ "$x2" == "$x1" ]; then #echo "$softname is not i...
2020-03-30 22:22:14 564
原创 Elasticsearch 7.5.1集群安装配置
1.下载软件包 当前最新版本7.5.1 地址:http://elastic.co2.准备工作 创建一个普通用户elastic,名字可以随意,设置与root同组 useradd-groot elastic3.解压缩 创建目录/opt,将压缩包解压缩到该目录下 tarxvfzelasticsearch-7.5.1-linux-x86_64.tar....
2020-03-30 15:51:21 586
原创 shell小技巧(二十六)编写一个nginx服务脚本
脚本可以启动服务、关闭服务、重启服务、查看版本、测试配置文件代码:#!/bin/bashscriptname=$(echo $0 | awk -F "/" '{print $2}')function chkservice(){PORT_C=$(ss -anu |grep -c $2)PS_C=$(ps -ef |grep $1 |grep -vc grep)if...
2020-03-30 14:38:43 272
原创 shell小技巧(二十五)判断输入参数是ip地址
#!/bin/bashif [ -z $1 ]; then read -p "please input ip:" xelse x=$1fiecho $xr=0r=$(echo $x| awk -F "." '{if ($1<256 && $1>=0 && $2<256 && $2 >=0 &&a...
2020-03-29 21:59:15 2249
原创 shell小技巧(二十四)检查软件是否安装
代码:#!/bin/bashif [ -z $1 ]; then echo "neec software name" read -p "please software name:" softnameelse softname=$1fiif [ $(whereis $softname) == $softname":" ]; then echo "$softna...
2020-03-28 16:33:23 2224
原创 shell小技巧(二十三)获取cpu信息
脚本提取cpu运行信息,使用率超过30%输出警告。#!/bin/bashr=1while [ $r -eq 1 ]; docpuinfo=$(vmstat | tail -1|awk '{print $13 " " $14 " " $15 " " $16}')us=$(echo $cpuinfo | awk '{print $1}')sy=$(echo $cpuinfo |...
2020-03-28 15:00:00 651
原创 shell小技巧(二十二)获得8位随机数
方法1:top -n 1 -d 1 | md5sum|cksum|cut -c 1-8或者top -n 1 -d 1 |cksum|cut -c 1-8方法2:echo $RANDOM |cksum |cut -c 1-8方法3:openssl rand -base64 4 |cksum |cut -c 1-8方法4:date +%N |cut -c 1-8总结:本...
2020-03-28 10:40:52 1275
原创 shell小技巧(二十一)打印当前sshd的端口和进程id
ss -lntp | grep ssh | head -1 |awk '{print $4 " " $NF}'| awk -F "[: =,]" '{print "port:"$1 " pid:"$6 }'
2020-03-27 10:51:23 592
原创 shell小技巧(二十)统计access.log访问ip和url
分析apache访问日志,找出访问页面数量在前10位的IP数和访问量前10的urlip统计:awk -F " " '{print $1}' access.log | sort |uniq -c |sort -nr | head -10url统计:awk -F " " '{print $7}' access.log | sort |uniq -c |sort -nr | head -10...
2020-03-27 10:41:25 777
原创 实战备份mysql脚本
脚本实现功能如下:1.备份指定数据库2.删除超过10天的备份文件3.周一到周五,备份恢复到指定的同一个数据库 周六和周日,备份恢复到指定的不同数据库4.使用gzip对备份文件进行压缩#!/bin/sh#-----startdbuser="bitchicken"dpwd="123456"dbname="chickens"dbhost="rr-xxxxxxxx.m...
2020-03-27 10:01:43 146
原创 shell小技巧(十九)判断文件是否是设备文件
代码:#!/bin/bashif [ -z $1 ]; then read -p "please input device name:" xelse x=$1fiif [ -b $x -o -c $x ]; then echo "The $x is a device file!"else echo "The $x is not a device file!"...
2020-03-26 12:46:39 659
原创 shell小技巧(十八)通过top获取指定进程cpu、内存等信息
脚本将通过top获取指定运行程序的cpu,内存,进程号,名称信息。按给定时间间隔循环取样,保存于process.txt内参数1是要获取的进程名称参数2是指定间隔时间(秒)代码:#!/bin/bashfunction IsNumber(){if [ -z $1 ]; then# echo "need var!" return 2fiecho $1 ...
2020-03-26 11:40:54 3108
原创 shell小技巧(十七)查找到3天前创建的html文件并删除
方法1:find ./ -type f -name "girl1*.html" -mtime -3 |xargs -i rm {};方法2:find ./ -type f -name "girl*.html" -mtime -3-exec rm -rf {} \;总结:方法1是搜索完成后再执行rm方法2是找到1个就执行一次rm,类似循环-mtime是文件内容修改时间...
2020-03-26 09:45:39 709
原创 shell小技巧(十六)计算1到100累加之和
方法1:seq 100|awk '{i=i+$1}END{print i}'方法2:#!/bin/bashx=0for ((i=1;i<101;i++));do let x=x+idoneecho $x方法3:echo {1..100} | sed 's/ /+/g'|bc方法4:echo {1..100}| awk -F " " '{for(i=1;...
2020-03-25 18:09:20 4713
原创 shell小技巧(十五)模拟抓阄
要求:1、执行脚本后,想参加的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大机会越大,前面已经抓到的数字,下次不能在出现相同数字。2、第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入,抓完输入exit退出。3、倒序输出#!/bin/bash>chioce.txte="exit"x=""while [ $...
2020-03-25 16:17:01 924
原创 shell小技巧(十四)监控web站点目录下所有文件
web站点目录(/var/html/www)方法1:find /var/html/www -type f -name "*.sh"|xargs md5sum > ./a.log#以下是检查代码md5sum -c ./a.log | grep -v "OK"方法2:ls -l /var/html/www > b1.log#以下是检查代码ls -l /var/html/www ...
2020-03-25 11:04:37 290
原创 shell小技巧(十三)分别以脚本传参以及read读入的方式比较大小
以read读入方式实现:#!/bin/bashfunction IsNumber(){if [ -z $1 ]; then# echo "need var!" return 2fiecho $1 | grep -q '[^0-9]'af1=$?if [ $af1 -ge 1 ]; then #this is number,outp...
2020-03-24 21:33:09 1081
原创 shell小技巧(十二)检查192.168.0.0.24网段内存在的IP
代码:#!/bin/baship=192.168.0.for i in {1..255}do ping -c 1 -w 2s $ip$i #-c 设置发送包 数量,-w 等待超时时间 if [ $? -eq 0 ]; then echo "$ip$i is ok" else echo "ip$j is null" fidone...
2020-03-24 18:39:05 546 2
原创 shell小技巧(十一)打印下面这句话中字母数不大于6的单词
打印下面这句话中字母数不大于6的单词。I am oldboy teacher welcome to oldboy training class.方法1:#!/bin/bashword6="I am oldboy teacher welcome to oldboy training class."echo $word6 | sed 's/\.//g' |awk -F " " '{for(...
2020-03-24 18:06:42 510
原创 shell小技巧(十)已知随机数的md5值,反推原值
已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果,反推这些字符串对应的md5sum前的RANDOM对应数字思路:已知random的范围(0-32767),通过遍历讲计算结果截取前8位与目标值做比对。(最差结果全部计算一遍并比对,得到结果)以下代码来自互联网,但做了改进。红色部分是修改修改过的部分。#!/bin/basha=(21029299...
2020-03-23 21:26:17 1281
原创 shell小技巧(九)将文件中按单词出现频率降序排序
文件名:readme简要思路:1.去除标点符号和数字2.以空格为分隔符,按行读取单词,一单词一行输出3.排序4.按单词计算出现次数5.按出现次数排序sed 's/[0-9.,<>//:()-]/ /g' readme | awk '{for (i=1;i<=NF;i++){print $i;}}'|sort -r|uniq -c | sort -nr...
2020-03-23 20:01:28 525
原创 shell小技巧(八)列出当前目录下的所有目录
方法1:ls -d */方法2:ls -F | grep "/$"方法3:ls -l | grep "^d"方法4:find -type d -maxdepth 1 -print
2020-03-23 17:07:20 2969
原创 shell小技巧(七)列出以 ab 或 xy 开头的用户名
使用三剑客分别实现,先看grep方法1egrep "^ab|^xy" /etc/passwd|cut -d: -f1再看awk方法2awk -F ":" '{if(substr($1,1,2) == "ab" || substr($1,1,2) == "xy") print $1}' /etc/passwd最后是sed方法3sed -n '/^ab|^xy/p' /etc...
2020-03-23 16:40:01 320 2
原创 shell小技巧(六)读取文件末尾为数字行的末尾数字
以上一题文件s1.txt为源文件方法1:awk -F "[^0-9]" '/[0-9]$/{print $NF}' s1.txt或awk -v FS="[^0-9]" '/[0-9]$/{print $NF}'设置分隔符为非数字,对以数字结尾的行输出最后1个字段方法2:sed -nr '/[0-9]$/{s/.*[^0-9]([0-9]+)$/\1/;p}'方法3:使用read ...
2020-03-21 18:03:43 2411
原创 shell小技巧(五)把以abc开头的下一行以def结尾的两行替换成douyu
这个有点麻烦,需要关联上下行的两个条件。大致思路如下:按行读取文件,存入数组。以循环方式按顺序处理数组中的数据。循环内判断行是否已abc开头,如果是则将变量存入临时变量,并不做输出处理;如果不是abc开头则直接输出变量内容到文件,进入下次循环再次循环时,判断上一行是否是abc开头,如果是再判断本次的变量结尾是否是def。如果条件不满足则先输出上一次循环变量(在临时变量内。)...
2020-03-20 17:32:57 664
原创 shell小技巧(四)将当前目录下大于10K的文件转移
方法1:用find+循环来实现#!/bin/bashfileinfo=`find -maxdepth 1 -type f -size +100k`#echo ${fileinfo}for i in $fileinfo;do#echo ${i}mv ${i} /tmpdone此方法思路简单,将文件找到存如数组中,然后使用for in循环每次取出一个执行mv方法2:用fin...
2020-03-20 11:26:25 1746
原创 shell小技巧(三)打印root用户当前目录下可执行文件数
开始想用find解决,find有针对权限的参数-perm。仔细想想觉得权限的排列组合虽然不算太多,但是用数字不直观,容易乱,还是决定用正则来判断简单。分四步来处理,第一步:针对属主是root的文件第二步:针对属主不是root,但是组属性与root组相同的文件第三步:针对属主不是root,也不同组的文件最后合并三次的结果进行计算。累了,明天发代码。...
2020-03-19 19:25:07 417
原创 shell小技巧(二)找出文件file1中空行并输出行号
分别用三剑客来实现,先看grep方法1:grep -n ^$ file1再看awk,个人最喜欢awk ^_^方法2:awk '{if(length($0)<1) print NR}' file1这里用了一个内建函数length,获取整行的字节数最后sed方法3:sed -n '/^$/=' file1...
2020-03-18 17:46:12 1381
原创 shell小技巧(一)修改一批文件后缀
当前目录下后缀为sh的文件,改为后缀shell。这里列出两种方法,先看第一种。方法1:#!/bin/bashstr=`find ./ -name \*.sh`for i in $strdomv $i ${i%sh}shelldone思路很简单,用find找到符合的文件,存如数组。然后使用mv修改文件名。其中${i%sh}shell是修改后缀后的文件名。%是将字符串...
2020-03-18 17:35:50 1879
原创 面试君与面试官的分歧:innodb支持行锁就不锁表么?
面试官观点:innodb引擎只会使用行锁。面试君观点:innodb引擎支持行锁,但在不使用索引或无索引的时候会使用表锁。虽然当时未做过多争论,不过这个问题还是挺有意思,MySQL的innodb引擎到底会锁表么?这个在网上搜索,大部分的回答是innodb是在索引上实现行锁的,如果没有索引或无法利用索引,那么可能会升级为锁表。从《MySQL技术内幕 InnoDB存储引擎 第2版》第六...
2020-03-03 14:18:02 1047
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人