25道shell面试题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1、用sed修改test.txt的23行test为tset;sed–i‘23s/test/tset/g’test.txt2、查看/web.log第25行第三列的内容。sed–n‘25p’/web.log|cut–d“”–f3head–n25/web.log|tail–n1|cut–d“”–f3awk–F“”‘NR==23{print$3}’/web.log3、删除每个临时文件的最初三行。sed–i‘1,3d’/tmp/*.tmp4、脚本编程:求100内的质数。#!/bin/bashi=1while[$i-le100];doret=1for((j=2;j$i;j++));doif[$(($i%$j))-eq0];thenret=0breakfidoneif[$ret-eq1];thenecho-n$ifii=$((i+1))done5、晚上11点到早上8点之间每两个小时查看一次系统日期与时间,写出具体配置命令echo123,1-8/2***root/tmp/walldate.sh/etc/crontab6、编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下#!/bin/bashfileinfo=($(du./*))length=${#fileinfo[@]}for((i=0;i$length;i=$((i+2))));doif[${fileinfo[$i]}-le10];thenmv${fileinfo[$((i+1))]}/tmpfidone7、如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.2.1/sbin/iptables-tnat-APREROUTING-ptcp--dport80-jDNAT--to192.168.2.1:8080/sbin/iptables-tnat-APREROUTING-ptcp--dport80-jREDIRECT--to80808、在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh怎么实现echo16-12/2***root/usr/bin/httpd.sh/etc/crontab9、在shell环境如何杀死一个进程?psaux|grep|cut-f?得到pidcat/proc/pidkillpid10、在shell环境如何查找一个文件?find/-nameabc.txt11、在shell里如何新建一个文件?touch~/newfile.txt12、linux下面的sed和awk的编写1)如何显示文本file.txt中第二大列大于56789的行?awk-F,'{if($256789){print$0}}'file.txt2)显示file.txt的1,3,5,7,10,15行?sed-n1p;3p;5p;7p;10p;15pfile.txtawk'NR==1||NR==3||NR==5||…||NR=15{print$0}'file.txt3)将file.txt的制表符,即tab,全部替换成|sed-is#\t#\|#gfile.txt13、把当前目录(包含子目录)下所有后缀为“.sh”的文件后缀变更为“.shell”#!/bin/bashstr=`find./-name\*.sh`foriin$strdomv$i${i%sh}shelldone14、编写shell实现自动删除50个账号功能,账号名为stud1至stud50#!/bin/bashfor((i=1;i=50;i++));douserdelstud$idone15、请用Iptables写出只允许10.1.8.179访问本服务器的22端口。/sbin/iptables-Ainput-ptcp-dport22-s10.1.8.179-jACCEPT/sbin/iptables-Ainput-pudp-dport22-s10.1.8.179-jACCEPT/sbin/iptables-Pinput-jDROP16、在shell中变量的赋值有四种方法,其中,采用name=12的方法称(A)。A直接赋值B使用read命令C使用命令行参数D使用命令的输出17、有文件file11)查询file1里面空行的所在行号grep-n^$file12)查询file1以abc结尾的行grepabc$file13)打印出file1文件第1到第三行head-n3file1sed3qfile1sed-n1,3pfile118、假设有一个脚本scan.sh,里面有1000行代码,并在vim模式下面,请按照如下要求写入对应的指令1)将shutdown字符串全部替换成reboot:%s/shutdown/reboot/g2)清空所有字符:%d3)不保存退出q!19、1到10数字相加,写出shell脚本#!/bin/bashj=0for((i=1;i=10;i++));doj=$[j+i]doneecho$j20、常见shell有哪些?缺省的是哪个?/bin/sh/bin/bash/bin/ash/bin/bsh/bin/csh/bin/tcsh/sbin/nologin21、Shell循环语句有哪些?forwhileuntil22、用SHELL模拟LVS,脚本怎么写/sbin/iptable-tnat-APREROUTING-ptcp--dport80-jDNAT--to192.168.1.11-192.168.1.1223、找出系统内大于50k,小于100k的文件,并删除它们。#!/bin/bashfile=`find/-size+50k-size-100k`foriin$file;dorm-rf$idone24、脚本(如:目录dir1、dir2、dir3下分别有file1、file2、file2,请使用脚本将文件改为dir1_file1、dir2_file2、dir3_file3)#!/bin/bashfile=`lsdir[123]/file[123]`foriin$file;domv$i${i%/*}/${i%%/*}_${i##*/}done25、将A、B、C目录下的文件A1、A2、A3文件,改名为AA1、AA2、AA3.使用shell脚本实现。#!/bin/bashfile=`ls[ABC]/A[123]`foriin$file;domv$i${i%/*}/A${i#*/}done#/bin/shMax_CPU=0Avg_CPU=0Total_Time=1Process=$1Interval=$2#checktheparametersif[$#-ne2];thenechoUsage:$0ProcessNameIntervalexitfiLogFile=Per.txtecho`date`$LogFilewhilesleep$Intervaldotop-d1-n1|grep$Process|grep-vgrep|awk'{print$9\t$10}'$LogFiledone判断是否是设备文件#/bin/bashecho-eTheprogramwillJudgeafileisornotadevicefile.\n\nread-pInputafilename:filenameif[-b$filename-o-c$filename];thenecho$filenameisadevicefileexit0elseecho$filenameisnotadevicefileexit1firead–p:用于在读数据时输出提示信息注意![之间是有空格的:if![-f$filename];then。一般用if[!*]添加用户:#/bin/bashgroupadd-fclass1foriin{9909..9911}doxx=`echo$i|sed's/99//g'`useradd-gclass1std${xx}echostd${xx}|passwdstd${xx}--stdinecho-euserstd${xx}passwdisstd${xx}/root/newuser.txtdoneexit0注意等号的前后不要有空格:xx=`echo$i|sed's/99//g'`变量如果前后有字符,要是大括号统计IP访问:要求分析apache访问日志,找出访问页面数量在前100位的IP数。日志大小在78M左右。以下是apache的访问日志节选202.101.129.218--[26/Mar/2006:23:59:55+0800]GET/online/stat_inst.php?pid=d065HTTP/1.130220---Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1)#awk'{print$1}'log|sort|uniq-c|sort-r|head-n105221.224.78.153221.233.19.137158.63.148.1351222.90.66.1421222.218.90.2391222.182.95.1551221.7.249.2061221.237.232.1911221.235.61.1091219.129.183.122这个地方有个疑问,为什么在使用uniq之前要sort。求2个数之和#/bin/bashtypesetfirstsecondread-pInputthefirstnumber:firstread-pInputthesecondnumber:secondresult=$[$first+$second]echoresultis:$resultexit0文本分析取出password中shell出现的次数第一种方法结果:4/bin/bash1/bin/sync1/sbin/halt31/sbin/nologin1/sbin/shutdown第二种方法结果:/bin/sync1/bin/bash1/sbin/nologin30/sbin/halt1/sbin/shutdown1答案:cat/etc/passwd|awk-F:'{if($7!=)print$7}'|sort|uniq–ccat/etc/passwd|awk-F:'{if($7!=)print$7}'|sort|uniq-c|awk'{print$2,$1}'文件整理employee文件中记录了工号和姓名employee.txt:100JasonSmith200JohnDoe300SanjayGupta400AshokSharmabonus文件中记录工号和工资bonus.txt:100$5,000200$500300$3,000400$1,250要求把两个文件合并并输出如下处理结果:400ashoksharma$1,250100jasonsmith$5,000200johndoe$500300sanjaygupta$3,000答案:joinemployeebonus|sort-k2打印本机的交换分区大小处理结果:Swap:1024Mfree-m|sed-n'/Swap/p'|awk'{print$2}'free-m|sed-n's/Swap:\*\([0-9]*\).*/\1/p'输出本机创建20000个目录所用的时间处理结果:real0m3.367suser0m0.066ssys0m1.925s答案:#timeforiin{1..2000};domkdir/root/neil$i;donereal0m6.200suser0m1.128ssys0m4.710s打印当前sshd的端口和进程id处理结果:sshdPort&&pid:225412答案:netstat-anp|grepsshd|sed-n's/.*:::\([0-9]*\)\.*\\([0-9]*\)\/sshd/\1\2/p'打印root可以使用可执行文件数处理结果:root'sbins:2306echoroot'sbins:$(find./-typef|xargs

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功