新浪系统工程师笔试--shell
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.csdn.net/lwj103862095/article/details/11902213
新浪系统工程师笔试--shell的更多相关文章
- 专访 | 新浪架构师:0-5年Java工程师的职业规划如何做?
经历了2018年末的阵痛,大家都积攒着一股暗劲蠢蠢欲动. 3月初即将迎来2019年互联网行业换工作的大潮,技术工程师的升级换位对于一家互联网公司来说无疑是命脉般的存在——技术强则公司强! 如何做一个抢 ...
- 门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结(转)
add by zhj:先收藏了 摘要:评论系统是所有门户网站的核心标准服务组件之一.本文作者曾负责新浪网评论系统多年,这套系统不仅服务于门户新闻业务,还包括调查.投票等产品,经历了从单机到多机再到集群 ...
- MiinCMP1.0 SAE 新浪云版公布, 开源企业站点系统
MiinCMP是一款开源企业站点系统,除可执行于256M左右100元的国内IDC外,JUULUU聚龙软件团队最近开发了面向新浪云的版本号,该版本号可将站点免费布署到新浪云SAE上.MiinCMP採用j ...
- 2014新浪研发project师实习笔试(哈尔滨站)
刚经历了新浪笔试,写篇博客记录一下下.方便以后查看. 一.基础题 1.栈和队列的异同点. 2.算法性能的4个评价标准. 排序算法中最稳定的算法. 那几个算法的空间复杂度是O(1)的. 3.线性表,平衡 ...
- 豪情-CSS解构系列之-新浪页面解构-01
目录: 一. 新浪的布局特点 二. 内容细节的特点 三. 其中相关的一些基础技术点 1. 常见布局方法 2. 布局要点 3. Debugger误区 4.列表 5.字体颜色 6.CSS选择符 7.CSS ...
- 新浪计数业务之Redis
今天听一个同事说新浪使用的是Redis,于是自己将研究的过程整理出来以备后用. 我们都知道微博这玩意儿现在很火,新浪作为国内最早使用redis,并且是国内最大的redis使用者,当然备受人们关注.新浪 ...
- 新浪云SAE使用入门,教你如何发布自己的网站
新浪云sae是一个免费的web服务器,SAE的Web服务器采用分布式部署的方式,开发者将代码部署到SAE前端机后,会通过同步的方式,将代码部署到SAE所有的Web服务器.相当于在每一台Web服务器上都 ...
- 使用新浪云 Java 环境搭建一个简单的微信处理后台
前一段时间,写了一篇在新浪云上搭建自己的网站的教程,通过简单构建了一个 maven 的项目,展示部署的整个流程,具体的操作可以参看这里. 新浪云服务器除了可以搭建自己的网站以外,也非常的适合作为微信公 ...
- 用java实现新浪爬虫,代码完整剖析(仅针对当前SinaSignOn有效)
先来看我们的web.xml文件,如下 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application ...
随机推荐
- 【转】 linux内核移植和网卡驱动(二)
原文网址:http://blog.chinaunix.net/uid-29589379-id-4708911.html 一,内核移植步骤: 1, 修改顶层目录下的Makefile ARCH ...
- MFC修改任务栏图标及程序运行exe图标
修改左上角的图标和任务栏里图标 在对话框构造函数中 1 CTestDlg::CTestDlg(CWnd* pParent )2 : CDialog(CTestDlg::IDD, pParent)3 { ...
- UESTC_The Most Wonderful Competition CDOJ 56
The Most Wonderful Competition Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB ...
- c语言中内存对齐问题
在最近的项目中,我们涉及到了“内存对齐”技术.对于大部分程序员来说,“内存对齐”对他们来说都应该是“透明的”.“内存对齐”应该是编译器的“管辖范围”.编译器为程序中的每个“数据单元”安排在适当的位置上 ...
- 【bzoj1031】[JSOI2007]字符加密Cipher
题目描述 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一圈,显然,它们有很多种不同的读法.例如下图,可以读作:JSOI07 ...
- IOS反地理编码取得城市名称
// 获取当前所在的城市名 CLGeocoder *reverseGeocoder=[[CLGeocoder alloc] init]; [reverseGeocoder reverseGeocode ...
- [LeetCode] Interleaving String [30]
题目 Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example, Given: ...
- hdu 4627 水数学题
最小公倍数最大,也就是尽量让2个数互质,所以把n除以2 从中间向两边找就够了,自己写几组数据就能发现规律. 注意longlong存 #include<cstdio> #include< ...
- poj1184 聪明的打字员(BFS剪枝)
http://poj.org/problem?id=1184 用字符串s存下数字,并把光标位置做一个字符加到s末尾,用map做标记状态是否出现过,然后bfs即可. 不剪枝是过不了的,考虑的两种交换操作 ...
- crm使用soap更改下拉框的文本值
//C#代码 //UpdateStateValueRequest updateStateValue = new UpdateStateValueRequest //{ // AttributeL ...