shell 脚本编程常见面试Word文档下载推荐.docx
- 文档编号:5851076
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:12
- 大小:19.74KB
shell 脚本编程常见面试Word文档下载推荐.docx
《shell 脚本编程常见面试Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《shell 脚本编程常见面试Word文档下载推荐.docx(12页珍藏版)》请在冰点文库上搜索。
"
filename
if[-b$filename-o-c$filename];
$filenameisadevicefile"
exit0
else
$filenameisnotadevicefile"
exit1
firead–p:
用于在读数据时输出提示信息
注意!
[
之间是有空格的:
if!
[-f$filename];
then。
一般用if[!
*]
添加用户:
groupadd-fclass1
foriin{9909..9911}
xx=`echo$i|sed'
s/99//g'
`
useradd-gclass1std${xx}
echostd${xx}|passwdstd${xx}--stdin
userstd${xx}passwdisstd${xx}"
/root/newuser.txt
注意等号的前后不要有空格:
变量如果前后有字符,要是大括号
统计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.1"
30220-"
-"
"
Mozilla/4.0(compatible;
MSIE6.0;
WindowsNT5.1)"
#awk'
{print$1}'
log
|sort|uniq-c|sort-r|head-n10
5221.224.78.15
3221.233.19.137
158.63.148.135
1222.90.66.142
1222.218.90.239
1222.182.95.155
1221.7.249.206
1221.237.232.191
1221.235.61.109
1219.129.183.122
这个地方有个疑问,为什么在使用uniq之前要sort。
求2个数之和
typesetfirstsecond
Inputthefirstnumber:
first
Inputthesecondnumber:
second
result=$[$first+$second]
resultis:
$result"
文本分析
取出password中shell出现的次数
第一种方法结果:
4/bin/bash
1/bin/sync
1/sbin/halt
31/sbin/nologin
1/sbin/shutdown
第二种方法结果:
/bin/sync
1
/bin/bash
/sbin/nologin
30
/sbin/halt
/sbin/shutdown
答案:
cat/etc/passwd|awk-F:
'
{if($7!
="
)print$7}'
|sort|uniq–c
|sort|uniq-c|awk'
{print$2,$1}'
文件整理
employee文件中记录了工号和姓名
employee.txt:
100JasonSmith
200JohnDoe
300SanjayGupta
400AshokSharma
bonus文件中记录工号和工资
bonus.txt:
100$5,000
200$500
300$3,000
400$1,250
要求把两个文件合并并输出如下
处理结果:
400ashoksharma$1,250
100jasonsmith
$5,000
200johndoe
$500
300sanjaygupta
$3,000
joinemployeebonus|sort-k2
打印本机的交换分区大小
Swap:
1024M
free-m|sed-n'
/Swap/p'
|awk'
{print$2}'
s/Swap:
\*\([0-9]*\).*/\1/p'
输出本机创建20000个目录所用的时间
real
0m3.367s
user
0m0.066s
sys
0m1.925s
#timeforiin{1..2000};
domkdir/root/neil$i;
done
0m6.200s
0m1.128s
0m4.710s
打印当前sshd的端口和进程id
sshd
Port&
&
pid:
225412
netstat-anp|grepsshd|sed-n'
s/.*:
:
\([0-9]*\)\.*\\([0-9]*\)\/sshd/\1\2/p'
打印root可以使用可执行文件数
root'
sbins:
2306
$(find./-typef|xargsls-l|sed'
/-..x/p'
|wc-l)"
3664
编译当前目录下的所有.c文件:
forfilein*.c;
doecho$file;
gcc-o$(basename$file.c)$file
;
sleep2;
done>
compile2>
1
将一目录下所有的文件的扩展名改为bak
foriin*.*;
domv$i${i%%.*}.bak;
开机的时间:
直接一个“W”
关机时间:
last-n10
1)查看系统日志
/var/log/messages
2)利用last命令(last-n10)
last命令介绍
功能说明:
列出目前与过去登入系统的用户相关信息。
语 法:
last[-adRx][-f<
记录文件>
][-n<
显示列数>
][帐号名称...][终端机编号...]
补充说明:
单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
参 数:
-a 把从何处登入系统的主机名称或IP地址,显示在最后一行。
-d 将IP地址转换成主机名称。
-f<
指定记录文件。
-n<
或-<
设置列出名单的显示列数。
-R 不显示登入系统的主机名称或IP地址。
-x 显示系统关机,重新开机,以及执行等级的改变等信息。
同一时间只运行一个实例
使用PIDfile对文件加锁,或(semget(ID,1,IPC_CREATE|IPC_EXCL)==-1);
使用fcntl文件锁
怎样让一个实例在某个时间或开机自动运行
1:
简易方法:
1。
使用CL命令DSPSYSVALQSTRUPPGM来确定系统自动调用的程序名,如qsys/qstrup
2。
建立另一个CL程序,并编译,程序代码:
***************Beginningofdata***************************
0001.00PGM
0002.00--------QSYS/CALLPGM(QSYS/QSTRUP)
0003.00--------QSYS/STRSBSSBSD(MYLIB/SALESSBSD)
0004.00--------QSYS/CALLPGM(MYLIB/CLEARSALES)
0005.00ENDPGM
0006.00
******************Endofdata*******************************
程序的后两条语句为用户要增加的功能,假设编译后的可执行的程序为:
MYLIB/STARTUP
3。
修改系统值QSTRUPPGM:
用命令WRKSSVALQSTRUPPGM,再用2选择项,将程序名修改为MYLIB/STARTUP。
系统在IPL后会自动调用程序MYLIB/STARTUP,不需要直接修改QSYS/QSTRUP程序的内容!
2:
Linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。
阅读之前建议先看一下附图。
本文中假设inittab中设置的inittree为:
/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
confignetwork
startswapfunction
sethostname
checkrootfilesystem,repairifneeded
checkrootspace
....
rc.sysinit根据inittab执行rc?
.d脚本
linux是多用户系统,getty是多用户与单用户的分水岭
在getty之前运行的是系统脚本
2.关于rc.d
所有启动脚本放置在/etc/rc.d/init.d下
rc?
.d中放置的是init.d中脚本的链接,命名格式是:
S{number}{name}
K{number}{name}
S开始的文件向脚本传递start参数
K开始的文件向脚本传递stop参数
number决定执行的顺序
3.启动脚本示例
这是一个用来启动httpd的/etc/rc.d/init.d/apache脚本:
CODE:
#!
/bin/bash
source/etc/sysconfig/rc
source$rc_functions
case"
$1"
in
start)
StartingApachedaemon..."
/usr/local/apache2/bin/apachectl-kstart
evaluate_retval
;
stop)
StoppingApachedaemon..."
/usr/local/apache2/bin/apachectl-kstop
restart)
RestartingApachedaemon..."
/usr/local/apache2/bin/apachectl-krestart
status)
statusproc/usr/local/apache2/bin/httpd
*)
$0{start|stop|restart|status}"
exit1
esac
[Copytoclipboard]
可以看出他接受start,stop,restart,status参数
然后可以这样建立rc?
.d的链接:
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/K28apache
4.关于rc.local
经常使用的rc.local则完全是习惯问题,不是标准。
各个发行版有不同的实现方法,可以这样实现:
touch/etc/rc.d/rc.local
chmod+x/etc/rc.d/rc.local
ln-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.local
5.关于bash启动脚本
/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
是bash的启动脚本
一般用来设置单用户的启动环境,也可以实现开机单用户的程序,但要明确他们都是属于bash范畴而不是系统范畴。
他们的具体作用介绍如下:
/bin/bash这个命令解释程序(后面简称shell)使用了一系列启动文件来建立一个运行环境:
~/.bash_logout
每一个文件都有特殊的功用并对登陆和交互环境有不同的影响。
/etc/profile和~/.bash_profile是在启动一个交互登陆shell的时候被调用。
/etc/bashrc和~/.bashrc是在一个交互的非登陆shell启动的时候被调用。
~/.bash_logout在用户注销登陆的时候被读取
一个交互的登陆shell会在/bin/login成功登陆之后运行。
一个交互的非登陆shell是通过命令行来运行的,如[prompt]$/bin/bash。
一般一个非交互的shell出现在运行shell脚本的时候。
之所以叫非交互的shell,是因为它不在命令行上等待输入而只是执行脚本程序。
6.关于开机程序的自动启动
系统脚本可以放置在/etc/rc.d/init.d中并建立/etc/rc.d/rc?
.d链接,也可以直接放置在/etc/rc.d/rc.local中。
init.d脚本包含完整的start,stop,status,reload等参数,是标准做法,推荐使用。
为特定用户使用的程序(如有的用户需要使用中文输入法而有的不需要)放置在~/中的bash启动脚本中
$?
$#$@$*$$分别代表什么?
是否运行完毕退出
$#参数个数
$@,$*待定参数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- shell 脚本编程常见面试 脚本 编程 常见 面试