Linux复习例题


  1、创建目录/data
mkdir  /data
cd /;mkdir data

 

  2、用一条命令创建目录/oldboy/test

mkdir -p /oldboy/test

 

  3、把/data目录移动到/root目录下

mv /data    /root

 

  4、在/data下创建oldboy.txt文件

1touch /data/oldboy.txt
2、cd /data;touch oldboy.txt

 

  5、为oldboy.txt文件添加内容,‘I am studying Linux’

使用vi或vim编辑文件
echo 'I am studying Linux' > /data/oldboy.txt
cat >>/data/oldboy.txt<<EOF
I am studying Linux
EOF

 

  6、将oldboy.txt文件复制到/tmp目录下

cp -rpf  /data/oldboy.txt  /tmp

 

  7、进入/root/data目录,删除oldboy.txt文件

cd  /root/data;rm  -f  oldboy.txt
find /root/data -type f -a -name 'oldboy.txt' -exec rm {} \;
find /root/data -type f -a -name 'oldboy.txt'|xargs rm -f
find /root/data -type f -name 'oldboy.txt' -delete

 

  8、从/root/data目录下返回上一级目录,删除data目录

cd ..;rm  -rf  data
cd ..;find . -type d -name 'data'|xargs rm -rf
cd ..;find . -type d -name 'data' -delete

 

  9、已知文件test.txt内容如下

    test

    liyao

    oldboy

  输出文件的内容,不包含oldboy

head -2 test.txt
grep  -v 'oldboy' test.txt
sed -n '1,2'p test.txt
awk 'NR<3' test.txt

 

  10、只查看ett.txt文件的第20到30行的内容

head -30 ett.txt|tail  -11
sed -n '20,30'p ett.txt
grep 20 -A 10 ett.txt
awk 'NR>19&&NR<31'  ett.txt

 

  11、分析图片服务日志,把日志(每个图片访问次数*图片大小总和)排行,取top10,需要输出访问次数、访问次数*单个文件大小、文件名,用awk的数组

awk '{array_num[$7]++;array_size[$7]+=$10}END{for (x in array_num) {print array_size[x],array_num[x],x}}' access_2010-12-8.log|sort -rn -kl|head -10 >1.log #数组array_num和array_size以文件名为索引分别存储文件的访问次数和文件所占带宽,然后循环数组array_num拿到文件名,根据文件名输出文件访问次数,文件所占带宽,文件名

awk '{print $7"\t" $10}' access_2010-12-8.log|awk '{S[$1]+=$2,S1[$1]+=1}END{for (i in S) print S[i],S1[i],i}'|sort -rn|head -10 >2.log #与方法一类似,数组S和数组S1以文件名为所有分别存储文件所占带宽和文件访问次数

cut -d '' -f 7,10 access_2010-12-8.log|sort|uniq -c|awk '{print $1*$3""$1""$2}'|sort -rnk 1|head -10 >3.log #利用cut获取文件名及其对应的大小,然后用sort和uniq获得每个文件的访问次数,再用awk获得文件所占带宽,文件访问次数,文件名,最后降序排序后,用head获得前十行数据

 

  12、把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中包含oldboy的字符串全部替换为oldgirl

sed -i 's/oldboy/oldgirl/g'  `find /oldboy -type f -name '*.sh'`

find /oldboy -type f -name '*.sh'|xargs sed -i 's/oldboy/oldgirl/g'

find /oldboy -type f -name '*.sh' -exec sed -i 's/oldboy/oldgirl/g' {} \;

 

  13、已知/tmp目录下已经存在test.txt文件,如何将/mnt/test.txt拷贝到/tmp下覆盖原来的test.txt文件并且系统不提示

\cp /mnt/test.txt  /tmp
/bin/cp  /mnt/test.txt  /tmp
unalias cp;cp  /mnt/test.txt  /tmp

 

  14、创建目录/data/oldboy,并在该目录下创建文件oldboy.txt,然后在文件中写入内容"inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0"

mkdir -p /data/oldboy
touch /data/oldboy/oldboy.txt
echo "inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0" >/data/oldboy/oldboy.txt


mkdir -p /data/oldboy cat >>/data/oldboy/oldboy.txt<<EOF inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0 EOF

mkdir -p /data/oldboy vim /data/oldboy/oldboy.txt inet addr:10.0.0.8 Bcast:10.0.0.255 Mask:255.255.255.0

 

  15、将14题的oldboy.txt文件内容通过命令过滤只输出如下内容:10.0.0.8  10.0.0.255 255.255.255.0

awk -F "[ :]+" '{print $3,$5,$7}'

 

  16、将题14中的oldboy目录移动到/tmp目录下,并将/etc/passwd文件复制到/tmp/oldboy下

mv /data/oldboy /tmp
cp /etc/passwd /tmp/oldboy

 

  17、在题16基础上使用awk取passwd文件的第10行到20行的第三列重定向到/tmp/oldboy/test.txt文件里

awk -F ":" 'NR>9&&NR<21{print $3}' /tmp/oldboy/passwd >>/tmp/oldboy/test.txt

 

  18、在题16的基础上要求用命令rm删除文件时提示如下禁止使用rm的提示:Do not use rm command.,并使该效果永久生效

alias rm='echo Do not use rm command.'
echo "alias rm='echo Do not use rm command.'" >>/etc/bashrc
echo "alias rm='echo Do not use rm command.'" >>/etc/profile

 

  19、在题16的基础上,删除/tmp/oldboy/下除passwd以外的其他文件

find /tmp/oldboy -type f -! -name 'passwd' -delete
find /tmp/oldboy -type f -! -name 'passwd'|xargs rm -f
cd /tmp/oldboy;ls|grep -v 'passwd'|xargs rm -f

 

  20、在题16的基础上,打印passwd文件的第2-5行

head -5 /etc/passwd|tail -4
grep 2 -A 3 /etc/passwd
sed -n '2,5'p /etc/passwd
awk 'NR>1&&NR<6' /etc/passwd

 

  21、在题16的基础上,使用命令调换passwd文件里root和/bin/bash的位置,即将所有的第一列和最后一列位置调换

awk -F ":" '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' /tmp/oldboy/passwd

 

  22、把/data目录及其子目录下所有以扩展名.txt结尾的文件中包含oldgirl的字符串全部替换为oldboy

sed -i 's/oldgirl/oldboy/g' `find /data -type f -name '*.txt'`
find /data -type f -name '*.txt' -exec sed -i 's/oldgirl/oldboy/g' {} \;
find /data -type f -name '*.txt' |xargs sed -i 's/oldgirl/oldboy/g'

 

  23、查找/oldboy下所有7天以前以log结尾的大于1M的文件移动到/tmp下

mv `find /oldboy -mtime +7 -size +1M -name '*log'` /tmp 
find /oldboy -mtime +7 -size +1M -name '*log' -exec mv {} /tmp \;

 

  24、输出/oldboy目录下的所有一级子目录

ls -l /oldboy|grep '^d'
ls -F /oldboy|grep '/$'
find /oldboy -maxdepth 1 -type d -! -name '.'
ls -l /oldboy|awk '{if($2>1) print $0}'
tree -dL 1 /oldboy
ls -ld */
ls -l|awk '/^d/'

 

  25、从/oldboy目录切换到/tmp目录后如何在不输入路径的情况下快速回到/oldboy目录下

cd -

 

  26、一个目录中有超多文件,如何快速查看最近更新的文件

ls -lt  /

 

  27、给目录/application/apache2.2.17做一个软连接到/application/apache

ln -s /application/apache2.2.17 /application/apache

 

  28、删除/app/logs目录下七天以前的日志文件

find /app/logs -type f -mtime +7 -exec rm -f {} \;
find /app/logs -type f -mtime +7 |xargs rm -f
find /app/logs -type f -mtime +7 -delete
rm -f `find /app/logs -type f -mtime +7`

 

  29、实时查看系统日志/var/log/messages的更新

tail -f /var/log/messages

 

  30、打印配置文件nginx.conf的内容及行号

cat -n nginx.conf
nl nginx.conf
grep -n . nginx.conf
less -N nginx.conf
vi 文件    然后:set nu
awk '{print NR,$0}' nginx.conf
sed = nginx.conf|sed 'N;s/\n//'   sed =  显示行号

 

  31、使NFS的自启动级别仅为3

chkconfig nfs off;chkconfig --level 3 nfs on
chkconfig --level 245 nfs off;chkconfig --level 3 nfs on

 

  32、/etc目录为Linux系统默认配置文件及服务启动命令目录

  a 打包及压缩整个/etc目录

tar -zcvf  etc.tar.gz /etc

  b 除/etc/services文件外,打包及压缩整个/etc目录

tar --exclude /etc/services -zcvf etc.tar.gz /etc

  c 把a的压缩包解压到/tmp目录下

tar -zxvf etc.tar.gz -C /tmp

 

  33、已知oldboy.txt文件内容如下:I am oldboy,myqq is 49000448,请从文件中过滤出'oldboy'和'49000448',如果要过滤出'oldboy,4900448'又该使用什么命令

awk -F "[ ,]+" '{print $3,$6}'
awk -F "[ ,]+" '{print $3","$6}'

 

  34、如何查看/etc/services文件一共多少行

wc -l /etc/services
cat -n nginx.conf|tail -1
nl nginx.conf|tail -1
grep -n . nginx.conf|tail -1
less -N nginx.conf|tail -1
vi 文件    然后:set nu然后shift g
awk '{print NR,$0}' nginx.conf|tail -1
sed = nginx.conf|sed 'N;s/\n//'|tail -1

 

  35、如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求使用命令取得644这样的数字

ls -l /etiantian|cut -c 2-10|tr 'rwx-' '4210'|awk -F "" '{print $1+$2+$3""$4+$5+$6""$7+$8+$9}'
stat -c %a /etiantian
stat /etiantian|awk -F "[0/]" 'NR==4 {print $2}'
stat /etiantian|sed -nr 's/^.*\(0(.*)/.*$/\1/gp'

 

  36、Linux下通过mkdir命令创建一个新目录/oldboy/ett,它的硬链接数是多少,为什么?如果在/oldboy/ett下面在创建目录test。此时/oldboy/ett目录的硬链接书是多少,为什么

创建/oldboy/ett目录时,ett目录的硬链接数为2,因为每个目录都有一个硬链接.,且目录ett与。互为硬链接,所以ett的硬链接数为2.
在ett目录下创建目录test,此时ett目录的硬链接数为3,因为每个目录都有上一级目录的硬链接..,所以ett目录的硬链接数为3

 

 

  37、请使用命令取出Linux中eth0的IP地址

ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'
ifconfig eth0|sed -nr 's/.*dr:(.*) B.*$/\1/gp'
grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0|cut -d = -f 2

 

  38、请给出默认情况eth0网卡配置文件的路径以及DNS配置文件的路径

网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth0
DNS配置文件路径:/etc/resolve.conf

 

 

  39、查找当前目录下所有文件,并把文件中的www.eiantian.org字符串替换成www.oldboy.me

find  .  -type f |sed  's/^www.etiantian.org$/www.oldboy.me/g'
finnd . -type f -exec sed 's/^www.etiantian.org$/www.oldboy.me/g'  {} \;
sed 's/^www.etiantian.org$/www.oldboy.me/g'  $(find . -type f)

 

 

  40、如何赋予oldboy.txt文件-rw-r--r-x权限

chmod  645  oldboy.txt
chmod  u=rw,g=r,o=rx

 

 

  41、执行下面命令时发现提示需要输入密码,请问提示需要输入的密码是哪个用户的密码 sudo su - oldboy

需要输入当前用户密码

 

  42、请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出  echo 'oldboy';echo 'oldboy'

echo -n 'oldboy';echo 'oldboy'

 

  43、请给出如下格式的date命令,日期显示为11-02-26,星期六显示为数字6

date +%Y-%m-%d(date +%F);date +%w

 

  44、当从root用户切换到普通用户oldboy时,执行ifconfig会提示,请问原因时什么,如何解决

因为CentOS5中ifconfig命令是超级用户的管理命令,其命令路径/sbin不在普通用户的全局环境变量中
解决办法
1、执行绝对路径
2、将/sbin添加到环境变量中
3、将添加环境变量的命令写入.bash_profile文件

 

  45、打印三天前的日期

date +%F -d '-3day'

 

  46、已知/oldboy/test.txt文件内容如下,如何在命令行去掉文件中的空行

  oldboy

  xizi

  xiaochao

sed  -i  '/^$/d'  /oldboy/test.txt
grep -v '^$' /oldboy/test.txt

 

 

  47、已知/oldboy/ett.txt文件内容如下,使用grep正则匹配过滤出前两行内容

  oldboy
  olldboooy
  test

grep '^ol.*' /oldboy/ett.txt
grep '.*y$'

 

 

  48、如何快速查到ifconfig的全路径,给出命令

which  ls
whereis -b  ls
locate  ls
find  /  -type f  -name 'ls'

 

  49、每周日上午9:30来老男孩Linux培训上课(用/oldboy.sh代替),用定时任务表示

#每周日上午9:30来老男孩Linux培训上课 by oldboy 2011-6-23
30 09 * * 0 /bin/sh /oldboy.sh >/dev/null 2>&1

 

  50、请给出当前哪些用户在线的Linux命令

who
w 
last
lastlog
users
fingers

 

  51、公司已开发人员申请对某以服务器10天的普通用户权限,请问你如何操作只给此用户10天的使用期限

useradd oldboy -e 01/28/12 用户在2011年1月28日过期
usermod -e 01/28/12 oldboy
chage -E 01/28/12 oldboy

 

  52、请给出正确的关机与重启命令

关机:
shutdown -h now
halt
power off
init 0

重启:
shutdown  -r now
init 6
reboot

 

  53、在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出/dev/null设备,请写出crontab中的语句

15 3 * * 6 /usr/bin/perl /home/shell/collect.pl >/dev/null 2>&1

 

  54、crontab在11月份内,每天早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh,怎么实现

00 6-12/2 * 11 * /bin/sh /usr/bin/httpd.sh>/dev/null 2>&1

 

  55、已知服务器上开启了tcp端口333,如何查看该端口上运行的服务

1、lsof -i tcp:333
2、netstat -antupl|grep :333

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM