--------------------------------------------------
问题 5.如何得到 RedHat Linux 系统的下列信息,内核版本,发行版本?(搜狐畅游面试题)
解答:
[root@oldboy-B scripts]# uname -a
Linux oldboy-B 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386
GNU/Linux
[root@oldboy-B scripts]# uname -r
2.6.18-164.el5
[root@oldboy-B scripts]# cat /etc/issue
CentOS release 5.4 (Final)
Kernel \r on an \m
[root@oldboy-B scripts]# cat /etc/redhat-release
CentOS release 5.4 (Final)
--------------------------------------------------
问题 6.下面是一台 RedHat Linux 系统服务器执行 uptime 命令的输出结果,请解释各字段
的含义(搜狐畅游面试题)
13:33:53 up 11 days,20:08,3 users,load average: 0.07,0.05,0.00
暂略
问题 7.在 RedHat/Centos Linux 系统中,如何将 oldboy.tar.gz 压缩文件解压到指定的目
录/home/oldboy/下(搜狐畅游面试题)
解答:
tar zxvf oldboy.tar.gz -C /home/oldboy/
提示:tar 是 5 星命令 请同学们必须熟练掌握了。详细总结见老男孩的命令教案
--------------------------------------------------
问题 8.在 RedHat/Centos Linux 系统中,怎样查询/home/oldboy.txt 文件中包含 SOHU 或
CYOU 的字符串?(搜狐畅游面试题)
解答:
[root@oldboy-B scripts]# echo 'SHHU OLDBOY' >>oldboy.txt
[root@oldboy-B scripts]# echo 'CYOU my love' >>oldboy.txt
[root@oldboy-B scripts]# cat oldboy.txt
i am oldboy! my qq number is 31333741
SHHU OLDBOY
CYOU my love
法一:
[root@oldboy-B scripts]# grep -E "SOHU|CYOU" oldboy.txt
CYOU my love
[root@oldboy-B scripts]# echo 'SOHU OLDBOY' >>oldboy.txt
[root@oldboy-B scripts]# echo 'sohu bestchaoliang' >>oldboy.txt
[root@oldboy-B scripts]# grep -E "SOHU|CYOU" oldboy.txt
CYOU my love
SOHU OLDBOY
拓展:不区分大小写的过滤
[root@oldboy-B scripts]# grep -Ei "SOHU|CYOU" oldboy.txt
1548
1804
root
root
PID
USER
TYPE DEVICE SIZE NODE NAME
CYOU my love
SOHU OLDBOY
sohu bestchaoliang
[root@oldboy-B scripts]# cat oldboy.txt
i am oldboy! my qq number is 31333741
SHHU OLDBOY
CYOU my love
SOHU OLDBOY
sohu bestchaoliang
--------------------------------------------------
问题 9.在 RedHat/Centos Linux 系统上,某个进程占用了 tcp 的 7777 端口,如何得到此进
程的 ID?(搜狐畅游面试题)
解答:
法 1:
[root@oldboy-B scripts]# lsof -i tcp:7777
COMMAND
sshd
sshd
localhost:7777->localhost:jwclient (ESTABLISHED)
sshd
5737
localhost:7777->localhost:jwclient (ESTABLISHED)
[root@oldboy-B scripts]# lsof -i :7777
COMMAND
sshd
sshd
localhost:7777->localhost:jwclient (ESTABLISHED)
sshd
5737
localhost:7777->localhost:jwclient (ESTABLISHED)
法 2:
[root@oldboy-B scripts]# netstat -lntup|grep 7777
tcp
:*
提示:lsof 是个不错的命令,老男孩经常使用。 有机会给大家分享使用 lsof 解决问题是
的生产实战案例。
--------------------------------------------------
问题 10.在 RedHat/Centos linux 中 swap 的作用?,swap 一般分多大?(慧聪网面试题)
TYPE DEVICE SIZE NODE NAME
1806 oldboy
1806 oldboy
IPv6
IPv6
PID
USER
FD
3u
3u
IPv6
IPv6
LISTEN
1548/sshd
0
0 :::7777
1548
1804
root
root
FD
3u
3u
3u
IPv6
TCP
3u
IPv6
TCP
4706
5737
4706
5737
TCP *:7777 (LISTEN)
TCP
TCP *:7777 (LISTEN)
TCP
::
--------------------------------------------------
解答:
测试准备:
[root@oldboy-B scripts]# pwd
/server/scripts
[root@oldboy-B scripts]# touch oldboy.HTM chaoliang.HTM chenyan.HTM qingyun.HTM
CAO.HTM guoxing.HTM dong.HTM
[root@oldboy-B scripts]# ls -l *.HTM
-rw-r--r-- 1 root root 0 05-29 00:15 CAO.HTM
-rw-r--r-- 1 root root 0 05-29 00:15 chaoliang.HTM
-rw-r--r-- 1 root root 0 05-29 00:15 chenyan.HTM
-rw-r--r-- 1 root root 0 05-29 00:15 dong.HTM
-rw-r--r-- 1 root root 0 05-29 00:15 guoxing.HTM
-rw-r--r-- 1 root root 0 05-29 00:15 oldboy.HTM
-rw-r--r-- 1 root root 0 05-29 00:15 qingyun.HTM
使用 cat 非交互方式生成改名脚本 renamefile.sh:
cat >renamefile.sh <
[root@oldboy-B scripts]# cat renamefile.sh
for file in `ls *.HTM`
do
newfile=`echo $file | tr HTM htm`
#newfile=`echo $file | tr A-Z a-z` #===这个也会同时把文件名大写改掉
mv $file $newfile
#===这个更符合题目要求
done
[root@oldboy-B scripts]# sh renamefile.sh
[root@oldboy-B scripts]# ls -l *.HTM
ls: *.HTM: 没有那个文件或目录
[root@oldboy-B scripts]# ls -l *.htm
-rw-r--r-- 1 root root 0 05-29 00:15 cao.htm
-rw-r--r-- 1 root root 0 05-29 00:15 chaoliang.htm
-rw-r--r-- 1 root root 0 05-29 00:15 chenyan.htm
-rw-r--r-- 1 root root 0 05-29 00:15 dong.htm
-rw-r--r-- 1 root root 0 05-29 00:15 guoxing.htm
-rw-r--r-- 1 root root 0 05-29 00:15 oldboy.htm
-rw-r--r-- 1 root root 0 05-29 00:15 qingyun.htm
可以看到所有大写的 HTM 都被改成了小写 htm。
========以下是学生做的方法===========
法 2:
[root@oldboy-A scripts]# cat renamefile2.sh
#!/bin/sh
#create by oldboy
#qq 31333741
for filename in `ls *.HTM`
do
mv $filename `echo $filename|tr HTM htm`
done
法 3:
[root@oldboy-A scripts]# cat renamefile3.sh
#!/bin/bash
#create by oldboy
#qq 31333741
#filename:filename.sh
for fname in *
do
f=$(echo $fname | tr A-Z a-z)
if [[ "$fname" != "$f" ]] #====这里是不同的判断语法[[]]用法
then
mv $fname $f
fi
done
最后,由于个人水平及时间关系,老男孩这里给的参考答案未必都准确,欢迎大家一起交
流讨论,共同进步。
活学活用 linux shell 之-实现 1+2+3...+100=?的 7 种方法分享
21:18 2011-5-28
#########################################################
#《老男孩 linux 就业培训中心-初级班第七期课前考试及课上讲解
#shell 脚本编程实战模拟考试
#date:2011-5-28
#出题人:老男孩
#QQ:31333741 MAIL:oldboy521@hotmail.com
#blog: http://oldboy.blog.51cto.com
#psite: http://oldboy.cc(即将开放)
##########################################################
前言:
本文通过 shell 编程实现 1+2+3...+100=?的 7 种方法 来活学活用 shell,
学完本文你将熟悉 for,while,until 循环的用法,及(()),let,expr 等 shell 计算
命令的使用方法。
-------------------------------------------------
4.(())的其它写法
[root@oldboy-B scripts]# cat for6.sh
sum=0
for((i=1;i<=100;i++))
do
sum=$((i+sum))
done
echo $sum
[root@oldboy-B scripts]# cat for7.sh
sum=0
for((i=1;i<=100;i++))
do
sum=$((i+$sum))
done
echo $sum
提示:以上两结果都是对的
-------------------------------------------------
5.使用 until 语句及(())计算
[oldboy@A ~]$ cat until-1.sh
#!/bin/sh
i=1
until ((i >100 ))
do
((j=j+i))
((i++))
done
echo $j
提示:until 条件和 while 写法有区别。until 语句至少执行一次循环即使条件不成立。
-------------------------------------------------
6.使用 while 循环语句计算
[oldboy@A ~]$ cat while-1.sh
#!/bin/sh
i=1
while ((i <=100 ))
do
((j=j+i))
((i++))
done
echo $j
-------------------------------------------------