免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3831 | 回复: 13
打印 上一主题 下一主题

[系统管理] Linux的练习题,有道题有点挑战难度,请教各位用shell脚本怎么解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-12 09:09 |只看该作者 |倒序浏览
本帖最后由 ckathlon_fx 于 2014-10-12 11:33 编辑

11.        扫描当前目录下所有.txt结尾的文件,但每次列出10个文件,提示是否要删除这10个文件。若选择不是则不删除,并继续显示下10个文件询问提示。若选择是则删除,并继续显示下10个文件询问提示。

12.        功能程序 newapp,运行方式:
newapp  /app/newapp/in  /app/newapp/log  YYYYMMDD
其中  /app/newapp/in为输入目录,/app/newapp/log为程序日志目录,YYYYMMDD为日期,如20131009。该程序不能重复启动,就算处理不同天的数据也不能重复启动,否则会导致数据异常。
现需要整理启动程序脚本,包含功能:
(1)能够判断日期(YYYYMMDD)是否合法,超过3天前的日期就不能启动
(2)程序一旦重复启动,会导致数据异常,要进行有效判断。
(3)脚本能够使用参数stop、start、restart分别进行停止、启动、重启。

13.        一个有20W条记录的文件/tmp/record.txt,里面的记录类似如下:
abcd|1234:7898:2348:3456|asfb,sdue,zxcd,treo|asdf
也就是格式是$1|$2: $3: $4: $5|$6,$7,$8,$9|$10
以$1,$3,$8,$10为组合,写一个脚本统计这个20W文件内有多少种组合,及每一种组合有多少条记录分布

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2014-10-12 09:44 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2014-10-12 09:48 |只看该作者
明白,已经修过来了。回复 2# zooyo


   

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
4 [报告]
发表于 2014-10-12 11:27 |只看该作者
学生党:无聊~ python试试写下11题,没有排序有需求可以继续写

  1. $ cat yhsafe.py
  2. #!/usr/bin/env python
  3. #-*- coding:gbk -*-
  4. "just for fun for -11 "

  5. import os
  6. temp_list=[]
  7. for root, dirs, files in os.walk('./'):
  8.         for k,v in enumerate(filter(lambda x:x[-4:]=='.txt',files)):
  9.                 temp_list.append(v)
  10.                 if (k+1)%10==0:
  11.                         if str(raw_input('do you want to delete them?')) in ('Y','y'):
  12.                                 for x in temp_list:
  13.                                         os.remove(os.path.join(root,x))
  14.                                 del temp_list[:]
  15.                         else:
  16.                                 print '\n'.join(temp_list[::-1])
  17.                                 del temp_list[:]
  18.                                 continue
复制代码
测试:
$ touch.exe {1..40}.txt
$ ./yhsafe.py
do you want to delete them?y
do you want to delete them?y
do you want to delete them?y
do you want to delete them?n
9.txt
8.txt
7.txt
6.txt
5.txt
40.txt
4.txt
39.txt
38.txt
37.txt

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
5 [报告]
发表于 2014-10-12 12:27 |只看该作者
本帖最后由 李满满 于 2014-10-12 12:28 编辑

学生党:飘过~12题就简单写一下日期的判断吧,重点也许就这里吧,其它的判断PID就行

  1. #!/usr/bin/env python
  2. #-*- coding:gbk -*-
  3. "just for fun for -12 "
  4. """
  5. usage: newapp  /app/newapp/in  /app/newapp/log  YYYYMMDD
  6. """

  7. import sys
  8. import datetime
  9. y_max=datetime.datetime.now().max.year
  10. m_max=datetime.datetime.now().max.month
  11. d_max=datetime.datetime.now().max.day
  12. y_min=datetime.datetime.now().min.year
  13. m_min=datetime.datetime.now().min.month
  14. d_min=datetime.datetime.now().min.day

  15. def ispro_datetime(dt):
  16.         if len(dt)!=8:
  17.                 return False
  18.         else:
  19.                 if int(dt[:4]) <=y_max and int(dt[:4])>=y_min and\
  20.                    int(dt[4:6])<=m_max and int(dt[4:6])>=m_min and\
  21.                    int(dt[6:]) <=d_max and int(dt[6:])>=d_min:
  22.                                 return True
  23.                 else:
  24.                                 return False

  25. if not len(sys.argv[1:]) in (1,3):
  26.         print 'Usage:newapp  </app/newapp/in>  </app/newapp/log>  <YYYYMMDD>'
  27. elif len(sys.argv[1:])==3:
  28.         if ispro_datetime(sys.argv[3]):
  29.                 if int((datetime.datetime.now()-datetime.timedelta(days=3)).strftime('%Y%m%d'))<=int(sys.argv[3]):
  30.                         print "启动成功"
  31.                 else:
  32.                         print "启动失败"
复制代码
测试:
$ ./yhsafe.py /app/newapp/in  /app/newapp/log  20131212
启动失败
$ ./yhsafe.py /app/newapp/in  /app/newapp/log  20141011
启动成功

论坛徽章:
3
丑牛
日期:2014-09-13 18:19:22摩羯座
日期:2014-10-10 17:43:02水瓶座
日期:2014-10-16 01:00:22
6 [报告]
发表于 2014-10-12 12:47 |只看该作者
学生党:无聊~python简单的写一下13题试试

  1. #!/usr/bin/env python
  2. #-*- coding:gbk -*-
  3. "just for fun for -13"

  4. import sys
  5. import fileinput

  6. list={}
  7. for x in fileinput.input(sys.argv[1:]):
  8.         m=x.replace('|',':').replace(',',':')
  9.         a=m.split(':')[0]
  10.         b=m.split(':')[2]
  11.         c=m.split(':')[7]
  12.         d=m.split(':')[9].strip('\n')
  13.         if (a,b,c,d) not in list.keys():
  14.                 list[(a,b,c,d)]=1
  15.         else:
  16.                 list[(a,b,c,d)]+=1
  17. for k,v in list.iteritems():
  18.         print "%-20s--->%s" % (','.join(k),v)
复制代码
效果:
$ ./yhsafe.py yhsafe.txt
abcd,7818,axcd,asda --->5
abcx,7818,axcd,asda --->1

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
7 [报告]
发表于 2014-10-12 13:30 |只看该作者
发神屌炸天了~{:3_193:}

论坛徽章:
0
8 [报告]
发表于 2014-10-12 16:01 |只看该作者
求解?回复 7# yestreenstars


   

论坛徽章:
0
9 [报告]
发表于 2014-10-12 16:02 |只看该作者
十分谢谢,python我没搞过,其实开始是想用shell脚本来实现的。回复 4# 李满满


   

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
10 [报告]
发表于 2014-10-12 23:50 |只看该作者
[ 本帖最后由 zxy877298415 于 2014-10-13 00:10 编辑 ]

11.
#!/bin/bash
for i in `ls`
do
if [ "${i##*.}" == "txt" ];then
a[$k]=$i
let k++
if [ "$k" -eq  10 ];then
echo ${a[*]}
read -p " input y or n: " ny
if [ "$ny" == "y" ];then
rm -rf `echo ${a[*]}`
k=0
continue
else
k=0
continue
fi
fi
fi
done

12.
不知道怎么判断不能重复启动,坐等大牛!

13.
awk -F '[|:,]' '{a[$1$3$8$10]++}END{for (i in a) print i,a[i]}'

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP