真的不会啊,难道你们用 linux 都这么溜吗。
1
jackon 2017-04-06 17:18:44 +08:00 via iPhone
搜索引擎的爬虫 IP?
|
2
jonah 2017-04-06 17:20:04 +08:00
主要是考察一些常用的 shell 文本处理命令,比如 awk 、 sed 、 sort 、 uniq 之类的,可以搞定
|
3
xiaopc 2017-04-06 17:20:37 +08:00 via Android
cat grep wc?
|
4
noelyang 2017-04-06 17:27:11 +08:00
正则匹配 ip 地址,然后分别计数,最后取计数最多的 ip
难度不高吧 |
5
1069401249 OP @noelyang 思路都知道,但是 linux 命令没用到这么深。。。
|
6
ProjectAmber 2017-04-06 17:35:31 +08:00 4
grep | awk | sort | uniq -c | sort | head -n 10
|
7
Hozzz 2017-04-06 17:36:17 +08:00
awk
|
8
est 2017-04-06 17:36:20 +08:00 11
cat nginx.log | 实习生
|
9
conoha 2017-04-06 17:36:58 +08:00
...熟悉应该还好?用脚本就是 2L, 如果是程序,那就是过滤每条日志获取 ip , ip2long, 然后就转变成最多的 K 个数了
|
10
imganquan 2017-04-06 17:37:29 +08:00
这是 Linux 基础技能吧。
这都不会还应聘毛的 Linux 技术岗。。。。 |
11
ProjectAmber 2017-04-06 17:38:10 +08:00 1
上面写错了, sort -> sort -n 。
不让看手册的话我写不出来, awk 用的不是太熟。 |
12
dremy 2017-04-06 17:38:44 +08:00
cat access.log | awk '{print $1}' | sort | uniq -c | sort -r | head -n 10
拿走不谢 |
13
banditsmile 2017-04-06 17:39:01 +08:00
cat file_name|awk "{$a[$1]++}END{for (x in $a){print $a[$x],$x}}|sort -k2|head -n 10 "
伪代码,不能运行,不要尝试 另外用 grep 和 unique 的都是忽悠 |
14
1069401249 OP @imganquan 应聘的后端开发,,按道理说是应该熟悉常用的 linux 命令,只是这题对我来说有点深,所以发出来大家讨论下
|
15
mcfog 2017-04-06 17:49:25 +08:00
有 google 会
awk '{a[$1]++} END { for (i in a) {print i, a[i]} }' access.log | sort -rnk2 | head -10 没有的话算了还是面别家吧…… |
16
param 2017-04-06 18:12:07 +08:00 via Android
sort | unic -c | sort -n
|
17
relaxgo 2017-04-06 18:12:13 +08:00 via iPhone 1
直接用 goaccess
|
18
Suddoo 2017-04-06 18:29:47 +08:00
不 google 还真不会,虽然用 linux 2年了,但上面这几个命令用得很少, bash 语法也不熟悉,因为我的目标职位不是运维。
|
19
littleylv 2017-04-06 18:34:48 +08:00
如果是面试运维,这种答不上来估计会丢人
单纯面试后端开发,我觉得没必要一定会,当然会更好,但不会还可以 google |
20
wc951 2017-04-06 18:52:43 +08:00 via Android
现在难道都不用日志采集,而是自己去服务器上查日志?
|
22
dongxiaozhuo 2017-04-06 19:28:02 +08:00 via iPhone
@1069401249 后端开发,直接上 py 脚本岂不美哉。非要用 shell 的面试,不去也罢。
|
23
fsgmhoward 2017-04-06 19:29:08 +08:00 via iPhone
这个要考正则的吧
|
25
mringg 2017-04-06 19:41:14 +08:00 via iPhone
数据量小我能直接写,如果数据量大我宁愿拖到 hdfs 再说
|
26
echo1937 2017-04-06 19:43:25 +08:00
老派 Linux 运维必考内容,他如果没有限定工具的话,写个 py 的实现我觉得也可以给分。
|
27
takeoffyoung 2017-04-06 19:43:30 +08:00
如果考操作的话,上面说了那么多。
如果考算法的话,什么分治合并的模糊算法,什么 hash+heap sort 都是可以搜到答案的 |
28
xavierskip 2017-04-06 20:48:01 +08:00
如果不是考 shell ,用别的编程语言实现也没什么难度吧。
|
29
ryd994 2017-04-06 20:48:34 +08:00 via Android
|
30
jy01264313 2017-04-06 21:02:55 +08:00
很全面的一道题目
|
31
q397064399 2017-04-06 22:53:56 +08:00
如果是后端, Python 明显比 shell 有优势,脚本
|
32
yuedingwangji 2017-04-07 01:10:34 +08:00
这太简单了吧 , sort -n | uniq -c | sort -n 或者 awk 然后在 sort -n
|
33
DravenJohnson 2017-04-07 02:05:39 +08:00
为什么都在 sort ,难道这题不是问 IP 地址的么?
|
34
flowfire 2017-04-07 07:52:41 +08:00 via iPhone
@DravenJohnson 23333 我也想知道到底问的是如何获取访问最多的 10 个 ip 还是问的是 10 个 ip 具体是啥
|
36
ichou 2017-04-07 09:24:39 +08:00 via iPhone
@q397064399 然而很多机器上并没有 python
|
38
yaxin 2017-04-07 09:39:44 +08:00
awk '{print $1}' /path/to/nginx | sort | uniq -c | sort -r -n -k 1 | head -10
用多了就熟练了 |
39
blacklee 2017-04-07 09:52:13 +08:00
楼上 yaxin 的应该是正确答案,里面后一个 sort 我不看文档也不懂。
awk + sed 就能出一本 500+页的书,但是这个问题所需要的 awk 很基础。 另外就是多会一些 linux 的基础命令,会对你的实际工作产生相当不错的效率提升。 |
42
shyling 2017-04-07 10:23:35 +08:00
连各种 docker 的基础镜像里都自带的 python ,不知道有些人的系统是什么
|
43
Hozzz 2017-04-07 10:46:21 +08:00
@est 刚刚回头看了下,生产主机上全是 AIX 和 HPUX (没有 python ),晚点看看 oracle 一体机_(:з」∠)_
|
45
momocraft 2017-04-07 11:02:17 +08:00
在 linux 中只见过 coreos 没 python.
|
46
Felldeadbird 2017-04-07 11:08:58 +08:00
运维这个很常用啊。 nginx 和 apache 生成的访问日志 格式都是一致的。楼主面试的运维,这个答不上就不是合格的运维了
|
47
loryyang 2017-04-07 11:12:10 +08:00
必须允许用 man 吧,否则有些参数不常用的,肯定不会记得那么清楚的
反正很多时候都是 man 一下,再写,那么多参数,如果不是天天用,过几天就忘记了 |
48
killerv 2017-04-07 11:15:06 +08:00
很多人没看到,楼主应聘的是后端开发,我觉得如果能用其他后端语言解出来这道题,没有问题,非要用 shell 就有点扯了,毕竟后端不是专业运维。
|
49
Famio 2017-04-07 11:20:46 +08:00
好像很多人没看清楼主的问题。
如果是 access.log 的话,我觉得最多的 10 个 IP 应该是爬虫。 |
50
artandlol 2017-04-07 11:22:51 +08:00
awk '{print $1}' /usr/local/nginx/logs/access.log |sort |uniq -c|sort -rn|head -10
or awk '{a[$1]++} END {for(b in a) print b"\t"a[b]}' /usr/local/nginx/logs/access.log | sort -k2 -nr | head -n 10 |
53
jingniao 2017-04-07 11:58:00 +08:00
那么像这样的需求,用 python 写,多久写出来算是合格呢?
|
57
xiaket 2017-04-07 12:19:56 +08:00
|
61
veryyoung 2017-04-07 16:19:17 +08:00
作为面试官,这道题出了 N 次了,目前为止只遇到一个人做出来。
然而基本每个人简历上都写了熟练使用 Linux 常用命令。 |
63
wdlth 2017-04-08 11:31:26 +08:00
不应该加钱 ELK 么?
|