前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >unix 的 bash shell 脚本

unix 的 bash shell 脚本

作者头像
bear_fish
发布2018-09-20 15:45:48
1.5K0
发布2018-09-20 15:45:48
举报

1. test01   test02 1 200    1 100 2 500    2 300 3 200    3 50 4 100    4 150 输出 200 100 100 500 300 200 300 50  150 100 150 -50 awk 减法数组 awk ‘ NR == FNR { a[NR]=$2 } NR != FNR { print a[FNR], $2,(a[FNR]-$2)} ' /root/test* 2. 123abc456 456def123 567abc789 789def567 要求输出: 456ABC123 123DEF456 789ABC567 567DEF789 sed -r  's/([1-9]{3})([a-f]{3})([1-9]{3})/\3\2\1/;y/abcdef/ABCDEF/' 3. 编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。 for((i=1;i<51;i++)) do userdel -r stud$i done 4. 某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:  (1)在下午4 :50删除/abc目录下的全部子目录和全部文件;  (2)从早8:00~下午6:00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的bak01.txt文件内;  (3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz; crontab -e       50 16 * * * rm -rf /abc/*       * 8-18/1 * * * awk '{print $1 > "/backup/bak01.txt"}' /xyz/x1       50 17 * * 1 tar -czf backup.tar.gz /data 5. gameser这个服务启动命令为./gameser服务,请写一个脚本,当服务宕掉,脚本自动拉起gameser服务。 #!/bin/bash while true;do         result=`ps aux | grep gameser | wc -l`         if [ $result -lt 2 ];then  ./gamester fi         sleep 5 done 6. linux crontab;请在3月23号21点18分的时候,重启服务器 crontab -e      18 21 23 3 * init 6 7. 你想每天23:00运行xxxx.sh脚本。并自动进行日志分析。第2天上班的时候看到分析结果 给出你的部属方案 0 23 * * * sh ****.sh;err=$?;logger -p cron.err $err 8. 运行脚本输入两个数得到如下结果:   #sh xxx.sh 2 3        **        ***        ***** !/bin/bash For((i=1;i<=$1;i++));do echo –n \* done echo For((i=1;i<=$2;i++));do echo –n \* done echo For((i=1;i<=$[$1+$2];i++));do echo –n \* done echo 9. 查找文件后缀是log的 三天前的文件删除 find / -name "*.log" -and -mtime +3 -exec rm -rf {} \; 10. 写一个脚本将目录下大于100kb的文件移动到/tmp下 find ./ -size +100k -exec mv {}  /tmp \; 11. 日志如下统计访问IP最多的前10个 192.168.0.6 - - [25/Nov/2010:13:55:10 +0800] "GET /cacti/images/auth_login.gif HTTP/1.1" 200 21265 "http://192.168.0.104/cacti/graph_view.php?action=tree&tree_id=2&leaf_id=8&page=3" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)"  192.168.0.6 - - [25/Nov/2010:13:55:14 +0800] "GET /favicon.ico HTTP/1.1" 404 287 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1) cut  -d " "   -f1   /etc/httpd/log/access_log  |  sort  |  uniq  -c  |  sort  -nr | head -10 12. 过滤出当前目录下所有以字母(不区分大小写)开头的文件 ls | grep -P -i "^[a-z]" 13. 文件A.txt内容为"12:34:68",只输出A.txt中的"34" awk  -F ":" '{print $2}' A.txt 14. 用sed命令实现直接将文件B.TXT中的所有123替换成345 sed -i 's/123/456/g' B.TXT 15. 用sed修改文件mailbox.txt的20行的zhango为wang sed -i '20s/zhango/wang/' mailbox.txt 16. 正则表达式,IP地址的匹配,写一下 ([0-9]{1,3}\.){1,3}([0-9]){1,3} 17. 写出命令。统计日志文件weblog.log中 今天14:00~15:00的记录条数(时间格式:2011-01-01—15:30:11) Echo weblog | grep –c “2011-01-01-14” 18. 将当前目录所有文件扩展名改为log for file in `ls ./ | grep -P "(.*)(\..*)"` do  echo $file | mv $file `sed -r 's#(.*)(\..*)#\1.log#'` done 19. 用一行命令实现:查找当前目录下(含子目录),文件内容中含有sina且文件名以".config"结尾的文件 grep -lr "sina" ./ | grep -P "(.*)(\.config$)" 20. 用shell查询以“.”结尾的文件,并加上后缀“.ts” find ./ -name "*." -exec mv {} {}ts \; 21. 假定某个web服务器访问log其中一行如下: 61.159.245.95 - - [30/Apr/2003:01:04:20 +0800] "GET / HTTP/1.1" 200 151 "http://www.baidu.com" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3; 360SE)"  该LOG文件超过10万行,如果列出最后的10万行中请求最多前十位IP,显示如下的结果:  119 211.101.169.200  103 211.101.169.206  50 61.149.38.249  11 202.106.138.194  请用一行命令显示出上面的结果  awk '{ip[$1]++}END{for(var in ip)print ip[var],var |"sort -nr|head -n10"}' log 22. linux下ifconfig命令显示结果如下:  eth0      Link encap:Ethernet  HWaddr 00:0C:29:AA:E6:44            inet addr:192.168.213.128  Bcast:192.168.213.255  Mask:255.255.255.0            inet6 addr: fe80::20c:29ff:feaa:e644/64 Scope:Link            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1            RX packets:39962 errors:0 dropped:0 overruns:0 frame:0            TX packets:27038 errors:0 dropped:0 overruns:0 carrier:0            collisions:0 txqueuelen:1000            RX bytes:35108954 (33.4 MiB)  TX bytes:6573610 (6.2 MiB)            Base address:0x2000 Memory:c9020000-c9040000 lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0            inet6 addr: ::1/128 Scope:Host            UP LOOPBACK RUNNING  MTU:16436  Metric:1            RX packets:1833 errors:0 dropped:0 overruns:0 frame:0            TX packets:1833 errors:0 dropped:0 overruns:0 carrier:0            collisions:0 txqueuelen:0            RX bytes:4840659 (4.6 MiB)  TX bytes:4840659 (4.6 MiB)  执行如下命令  /sbin/ifconfig eth0|grep 'inet '|sed 's/^.*addr://g'|sed 's/ Bcast.*$//g'  请写出命令的输出结果 192.168.213.128 23. 多线程/多进程 程序同时访问相同的资源(例如:同时向一个文件里写数据)需要注意些什么? 至少注意文件锁,读锁与写锁 24. 写脚本实现,可以用shell,perl等。把文件B中有的,但是文件A中没有的所有行,保存为文件C,并统计C的行数 diff B A | grep "<" | sed 's/< //' > C 25. 脚本实现把/tmp/目录下所有创建超过7天的文件删除 find /tmp -mtime +7 -exec rm -rf {} \; 26. 把1 2 3 4 5 6按如下格式输出  1  2  3  4  5  6  如何实现 echo 1 2 3 4 5 6 | sed "s# #\n#g" 27. 设计一个shell程序,在2012年12月23日凌晨3点备份并压缩前一天/svn目录的所有内容,存放在/root/bak目录里,且文件名为如下形式svn.2008.05.06.tar.gz,试写脚本。 at 201212230300      at> find /svn -mtime +1 -and -mtime -2 -exec cp -r {} /root/bak \;      at> tar -czf svn.2008.05.06.tar.gz /root/bak 亚瑟王环 有1到100的数字序列。有计数器每数到12,就将计数器指向的数字在亚瑟环中剔除,问该序列中最后剩下的数字是多少? #/bin/bash for   i   in   {1..100};do huan[$i]=$i done      #先初始化一个数组,其实用变量也行,个人喜好,用awk也行,但一篇内容一个shell有点不合适。 t=0  #定义一个计数器 sum=0 while true;do   #定义一个无限循环,因为确实不知道要数多少次。     for((i=1;i<101;i++));do         if [ ${huan[$i]} -gt 0 ];then  #不等于零就把计数器加1             let t++         fi         if [ $t -eq 12 ];then  #数到12就将数组中的数清零,同时计数器清零             huan[$i]=0             t=0         fi     done     for((i=1;i<101;i++));do  #遍历数组,如果数组中只有一个数不为零就跳出循环         if [ ${huan[$i]} -gt 0 ];then             let sum++             sum[1]=${huan[$i]}         fi     done     if [ $sum -eq 1 ];then         break     else          sum=0     fi done

echo ${sum[1]}

原文转自:http://blog.sina.com.cn/s/blog_578d34d901018z4o.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年02月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档