shell 脚本编程常见面试.docx_第1页
shell 脚本编程常见面试.docx_第2页
shell 脚本编程常见面试.docx_第3页
shell 脚本编程常见面试.docx_第4页
shell 脚本编程常见面试.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Shell脚本常见面试题 #/bin/shMax_CPU=0Avg_CPU=0Total_Time=1Process=$1Interval=$2# check the parametersif $# -ne 2 ; then echo Usage: $0 ProcessName Interval exitfiLogFile=Per.txtecho date $LogFilewhile sleep $Intervaldo top -d 1 -n 1|grep $Process|grep -v grep|awk print $9t$10 $LogFiledone判断是否是设备文件#/bin/bashecho -e The program will Judge a file is or not a device file.nnread -p Input a filename: filenameif -b $filename -o -c $filename ; thenecho $filename is a device fileexit 0elseecho $filename is not a device fileexit 1firead p:用于在读数据时输出提示信息注意!之间是有空格的:if ! -f $filename ; then。一般用if ! * 添加用户:#/bin/bashgroupadd -f class1for i in 9909.9911doxx=echo $i | sed s/99/guseradd -g class1 std$xxecho std$xx | passwd std$xx -stdinecho -e user std$xx passwd is std$xx/root/newuser.txtdoneexit 0注意等号的前后不要有空格:xx=echo $i | sed s/99/g变量如果前后有字符,要是大括号统计IP访问:要求分析apache访问日志,找出访问页面数量在前100位的IP数。日志大小在78M左右。以下是apache的访问日志节选18 - - 26/Mar/2006:23:59:55 +0800 GET /online/stat_inst.php?pid=d065 HTTP/1.1 302 20- - Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)# awk print $1 log|sort |uniq -c|sort -r |head -n105 53 371 351 421 391 551 061 911 091 22这个地方有个疑问,为什么在使用uniq之前要sort。求2个数之和#/bin/bashtypeset first secondread -p Input the first number: firstread -p Input the second number: secondresult=$first+$secondecho result is : $resultexit 0文本分析取出password中shell出现的次数第一种方法结果: 4 /bin/bash 1 /bin/sync 1 /sbin/halt 31 /sbin/nologin 1 /sbin/shutdown第二种方法结果:/bin/sync 1/bin/bash 1/sbin/nologin 30/sbin/halt 1/sbin/shutdown 1答案: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:100 Jason Smith200 John Doe300 Sanjay Gupta400 Ashok Sharmabonus文件中记录工号和工资bonus.txt:100 $5,000200 $500300 $3,000400 $1,250要求把两个文件合并并输出如下处理结果:400 ashok sharma $1,250100 jason smith $5,000200 john doe $500300 sanjay gupta $3,000答案:join employee bonus | sort -k 2打印本机的交换分区大小处理结果:Swap:1024Mfree -m | sed -n /Swap/p | awk print $2free -m | sed -n s/Swap: *(0-9*).*/1/p输出本机创建20000个目录所用的时间处理结果:real0m3.367suser0m0.066ssys0m1.925s答案:# time for i in 1.2000 ; do mkdir /root/neil$i; donereal0m6.200suser0m1.128ssys0m4.710s打印当前sshd的端口和进程id处理结果:sshdPort&pid: 22 5412答案:netstat -anp | grep sshd | sed -n s/.*:(0-9*) .* (0-9*)/sshd/1 2/p打印root可以使用可执行文件数处理结果:roots bins: 2306echo roots bins: $(find ./ -type f | xargs ls -l | sed /-.x/p | wc -l)roots bins: 3664编译当前目录下的所有.c文件:for file in *.c; do echo $file ; gcc -o $(basename $file .c) $file; sleep 2;done compile 2&1将一目录下所有的文件的扩展名改为bakfor i in *.*;do mv $i $i%.*.bak;done开机的时间:直接一个“W”关机时间:last -n 10 1)查看系统日志 /var/log/messages 2)利用last命令(last -n 10 ) last 命令介绍 功能说明:列出目前与过去登入系统的用户相关信息。 语法:last -adRx-f -n 帐号名称.终端机编号. 补充说明:单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内 容记录的登入系统的用户名单全部显示出来。 参数: -a 把从何处登入系统的主机名称或IP地址,显示在最后一行。 -d 将IP地址转换成主机名称。 -f 指定记录文件。 -n 或- 设置列出名单的显示列数。 -R 不显示登入系统的主机名称或IP地址。 -x 显示系统关机,重新开机,以及执行等级的改变等信息。同一时间只运行一个实例 使用PID file 对文件加锁,或(semget (ID,1,IPC_CREATE|IPC_EXCL) = -1); 使用fcntl文件锁怎样让一个实例在某个时间或开机自动运行1:简易方法: 1。使用CL命令DSPSYSVAL QSTRUPPGM来确定系统自动调用的程序名,如qsys/qstrup2。建立另一个CL程序,并编译,程序代码:* Beginning of data *0001.00 PGM 0002.00 -QSYS/CALL PGM(QSYS/QSTRUP) 0003.00 -QSYS/STRSBS SBSD(MYLIB/SALESSBSD) 0004.00 -QSYS/CALL PGM(MYLIB/CLEARSALES) 0005.00 ENDPGM 0006.00 * End of data *程序的后两条语句为用户要增加的功能,假设编译后的可执行的程序为:MYLIB/STARTUP3。修改系统值QSTRUPPGM:用命令WRKSSVAL QSTRUPPGM,再用2选择项,将程序名修改为MYLIB/STARTUP。系统在IPL后会自动调用程序MYLIB/STARTUP,不需要直接修改QSYS/QSTRUP程序的内容!2:Linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。 阅读之前建议先看一下附图。 本文中假设inittab中设置的init tree为: /etc/rc.d/rc0.d /etc/rc.d/rc1.d /etc/rc.d/rc2.d /etc/rc.d/rc3.d /etc/rc.d/rc4.d /etc/rc.d/rc5.d /etc/rc.d/rc6.d /etc/rc.d/init.d 1. 关于linux的启动 init是所有进程之父 init读取/etc/inittab,执行rc.sysinit脚本 (注意文件名是不一定的,有些unix甚至会将语句直接写在inittab中) rc.sysinit脚本作了很多工作: init $PATH config network start swap function set hostname check root file system, repair if needed check root space . rc.sysinit根据inittab执行rc?.d脚本 linux是多用户系统,getty是多用户与单用户的分水岭 在getty之前运行的是系统脚本 2. 关于rc.d 所有启动脚本放置在 /etc/rc.d/init.d下 rc?.d中放置的是init.d中脚本的链接,命名格式是: Snumbername Knumbername S开始的文件向脚本传递start参数 K开始的文件向脚本传递stop参数 number决定执行的顺序 3. 启动脚本示例 这是一个用来启动httpd的 /etc/rc.d/init.d/apache 脚本: CODE:#!/bin/bashsource /etc/sysconfig/rcsource $rc_functionscase $1 in start) echo Starting Apache daemon. /usr/local/apache2/bin/apachectl -k start evaluate_retval ; stop) echo Stopping Apache daemon. /usr/local/apache2/bin/apachectl -k stop evaluate_retval ; restart) echo Restarting Apache daemon. /usr/local/apache2/bin/apachectl -k restart evaluate_retval ; status) statusproc /usr/local/apache2/bin/httpd ; *) echo Usage: $0 start|stop|restart|status exit 1 ;esacCopy to clipboard可以看出他接受start,stop,restart,status参数 然后可以这样建立rc?.d的链接: CODE:cd /etc/rc.d/init.d &ln -sf ./init.d/apache ./rc0.d/K28apache &ln -sf ./init.d/apache ./rc1.d/K28apache &ln -sf ./init.d/apache ./rc2.d/K28apache &ln -sf ./init.d/apache ./rc3.d/S32apache &ln -sf ./init.d/apache ./rc4.d/S32apache &ln -sf ./init.d/apache ./rc5.d/S32apache &ln -sf ./init.d/apache ./rc6.d/K28apacheCopy to clipboard4. 关于rc.local 经常使用的 rc.local 则完全是习惯问题,不是标准。 各个发行版有不同的实现方法,可以这样实现: CODE:touch /etc/rc.d/rc.localchmod +x /etc/rc.d/rc.localln -sf /etc/rc.d/rc.local /etc/rc.d/rc1.d/S999rc.local &ln -sf /etc/rc.d/rc.local /etc/rc.d/rc2.d/S999rc.local &ln -sf /etc/rc.d/rc.local /etc/rc.d/rc3.d/S999rc.local &ln -sf /etc/rc.d/rc.local /etc/rc.d/rc4.d/S999rc.local &ln -sf /etc/rc.d/rc.local /etc/rc.d/rc5.d/S999rc.local &ln -sf /etc/rc.d/rc.local /etc/rc.d/rc6.d/S999rc.localCopy to clipboard5. 关于bash启动脚本 /etc/profile /etc/bashrc /.bash_profile /.bashrc 是bash的启动脚本 一般用来设置单用户的启动环境,也可以实现开机单用户的程序,但要明确他们都是属于bash范畴而不是系统范畴。 他们的具体作用介绍如下: /bin/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论