有两个文件a.txt和b.txt,需求是,把a.txt中有的但b.txt中没有的行找出来,并写入到c.txt,然后计算c.txt文件的行数。

参考答案


#grep -f a.txt b.txt   
#下边的方法练习逻辑能力 

#!/bin/bash
#这个脚本用来比较文件差异
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-07

cat a.txt|while read line
do
    if ! grep -q "$line" b.txt
    then
    echo $line
    fi
done >c.txt
wc -l c.txt

题目要求

把当前用户下所有进程名字中含有"aming"的进程关闭。

参考答案

#ps -u 用户 

#!/bin/bash
#这个脚本用来杀进程
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-07

ps -u $USER|awk '$NF ~ /aming/ {print $1}' |xargs kill

题目要求

用shell实现,以并发进程的形式将mysql数据库所有的表备份到当前目录,并把所有的表压缩到一个压缩包文件里。

假设数据库名字为mydb,用户名为aming,密码为passwd。

参考答案

考虑自己服务器的负载能力

#!/bin/bash
#这个脚本用来并发备份数据库
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-07

N=5
mysql -uaming -ppasswd mydb -e "show tables"|sed '1d' > /tmp/table.txt
n=`wc -l /tmp/table.txt|awk '{print $1}'

div()
{
    n=`echo "scale=1;$1/$2"|bc`
    n1=`echo "scale=1;$n+0.5"|bc`
    echo $n1|cut -d. -f1
}

n1=`div $n $N`

split -l $n1 /tmp/table.txt 

myd()
{
    for t in `cat $1`
    do
        mysqldump -uaming -ppasswd mydb $t > $t.sql
    done
}

for f in xaa xab xac xad xae
do
    myd $f &
done

wait 
tar czf mydb.tar.gz *.sql
rm -f *.sql 

题目要求

一个网站,使用了cdn,全国各地有几十个节点。需要你写一个shell脚本来监控各个节点是否正常。
假如

  1. 监控的url为www.aming.com/index.php
  2. 源站ip为88.88.88.88。

参考答案

#新知识点diff 
#curl -x ip:80 url 

#!/bin/bash
#这个脚本用来监控CDN节点
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-08

s_ip=88.88.88.88
url=www.aminglinux.com/index.php
ipf=/data/ip.list

curl -x$s_ip:80 $url 2>/dev/null >/tmp/source.txt
for ip in `cat $ipf`
do
    curl -x$ip:80 $url 2>/dev/null >/tmp/$ip.txt
    diff /tmp/source.txt /tmp/$ip.txt > /tmp/$ip.diff

    n=`wc -l /tmp/$ip.diff|awk '{print $1}'`
    if [ $n -gt 0 ]
    then
    echo "节点$ip有异常."
    fi
done

题目要求

已知下面的字符串是通过RANDOM随机数变量md5sum|cut -c 1-8截取后的结果,请破解这些字符串对应的md5sum前的RANDOM对应数字?
21029299
00205d1c
a3da1677
1f6d12dd
890684ba

参考答案

#md5sum

#!/bin/bash
#这个脚本用来破解字符串
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-08

for i in `seq 0 32767`
do
    m=`echo $i|md5sum |cut -c 1-8 `
    echo $i $m 
done > /tmp/md5.txt

cat > c.txt <

题目要求

写一个脚本:

  1. 判断当前主机的CPU生产商,其信息在/proc/cpuinfo文件中vendor id一行中。
  2. 如果其生产商为AuthenticAMD,就显示其为AMD公司;
  3. 如果其生产商为GenuineIntel,就显示其为Intel公司;
  4. 否则,就说其为非主流公司。

参考答案

#awk 的用法和 if

#!/bin/bash
#这个脚本用来判断CPU厂商
#作者:猿课-阿铭 www.apelearn.com
#日期:2018-12-10

cpu=`grep '^vendor_id' /proc/cpuinfo |head -1|awk -F ': ' '{print $2}'`
#if [ $cpu == "AuthenticAMD" ]
#then
#   echo "CPU厂商是AMD."
#elif [ $cpu == "GenuineIntel" ]
#then
#   echo "CPU厂商是Intel."
#else
#   echo "CPU厂商是非主流厂商。"
#fi

case $cpu in
  AuthenticAMD)
    echo "CPU厂商是AMD."
  ;;

  GenuineIntel)
    echo "CPU厂商是Intel."
  ;;

  *)
    echo "CPU厂商是非主流厂商。"
  ;;
esac