Linux 学习题目

在文件有很多的时候,rm -f * 删不掉,则用

# find ./ -type f | xargs rm -f

# ls|xargs rm -f

1、删除一个目录下的所有文件,但保留一个指定文件

#mkdir  data

#touch  a.txt  b.txt  oldboy.txt  oldgirl.txt

方法一:#find  /data/  -type  f  ! -name ="oldboy.txt"  |  xargs  rm  -f

方法二:#find  /data/  -type  f  ! -name ="oldboy.txt"  -exec  rm  -f  {}  \;

2、已知文件 test.txt 内容为:

test

liyao

oldboy

请打印 test.txt 内容,不包含 oldboy 字符串的命令

#touch  test.txt

#echo "test" >/test.txt

#cat >>/test.txt<<EOF

>liyao

>oldboy

>EOF

方法一:#head  -2  test.txt

方法二:#grep  -v  "oldboy"  test.txt

方法三:#cat  test.txt  | grep  -v  "oldboy"  test.txt  (效率比方法二低很多)

方法四:sed  ‘/oldboy/d‘  test.txt

3、用一条命令完成创建目录 /oldboy/test,即创建 /oldboy 目录及 /oldboy/test 目录

#mkdir  -p  /oldboy/test/

4、已知 /temp 目录下已经存在了 test.txt 文件,如何执行命令才能把 /mnt/test.txt 拷贝到 /temp下覆盖掉 /tmp/test.txt,而让 Linux 系统不提示是否覆盖(root 权限下)

#touch /temp/test.txt

#touch /mnt/test.txt

方法一:#\cp /mnt/test.txt  /temp/test.txt

方法二:#/bin/cp /mnt/test.txt  /temp/test.txt

方法三:#unalias cp  (此法仅为临时取消别名,重新登录后就不在生效)

#cp /mnt/test.txt  /temp/test.txt

简要解释:

此题的思路就是屏蔽掉系统默认的对应命令别名,默认执行cp的操作是调用了别名的,所以提示覆盖。

详细说明:

cp 命令默认是不会提示 overwrite 的,但是 cp 的 -i 选项会提示,而一般 Linux 的用户环境文件中会把 cp 命名成 alias cp=‘cp-i‘ 如:

[[email protected]  temp]#alias | grep cp

alias cp=‘cp-i‘

这样在 Linux 下输入 cp 命令实际上运行的是 cp -i,加上一个 “\” 符号或者写 cp 全路径 /bin/cp 就是让此次 cp 命令不使用别名(cp-i)运行。

4、只查看 ett.txt 文件(100行)内第20行到第30行的内容(企业常见面试)

#seq 100 > ett.txt   ====> ett.txt 若不存在,可以自动创建

方法一:#head -30 ett.txt | tail -11

方法二:# sed -n ‘20,30p‘ ett.txt       打印第20行到30行(极其常用,最重要)

方法三:# awk ‘{if (NR>19 && NR<31) print $1}‘ oldboy.txt   或

# awk ‘{if (NR>19 && NR<31) printf $1"\n"}‘ oldboy.txt

方法四:

#seq 100 | grep "30" -B 10 test.txt

#seq 100 | grep "20" -A 10 test.txt

#seq 100 | grep 25 -C 5 test.txt

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

方法一:# find /oldboy -type f -name "*.sh" | xrags sed -i ‘s# hostlists.txt#idctest_iplist#g‘

方法二:# find /oldboy -type f -name "*.sh" -exec sed -i ‘s#hostlists.txt#idctest_iplist#g‘ {} \;

6、如何过滤出已知当前目录下 oldboy 中的所有一级目录(提示:不包含oldboy目录下面目录及隐藏目录,即只能是一级目录)?

方法一:#ls -l | grep "^d"  ---> 以d 开头

方法二:#ls -lF | grep "/$"   ---> 以 / 结尾

方法三:#find ./ -type d -maxdepath 1  ---> 其中 maxdepath 是查找的深度

方法四:#tree -Ld 1

方法五:#ls -l | awk ‘/^d/‘

方法六:#ls -l | sed -n ‘/^d/p‘

7、已知 apache 服务的访问日志按天记录在服务器本地目录 /app/logs下,由于磁盘空间不足, 现要求只能保留最近7天访问日志!请问如何解决?

解答:apach日志测试数据;企业面试题

第一步:先创建模拟数据

for n in `seq 30`

do

date -s "2016-8-$n"

touch access_www_`(date +%F)`.log

done

date -s "2016-9-8 22:14:35";

第二步:

# find  /oldboy/test/  -type  f  -name  "access*.log"  -mtime  +7  |  xargs  rm  -f     或

# find  /oldboy/test/  -type  f  -name  "access*.log"  -mtime  +7  -exec  rm  -f  {}  \;

8、调试系统服务时,希望能实时查看系统日志 /var/log/messages 的更新,如何做?

第一步:先创建模拟数据

# for n in {1..100};do echo 1 >>/var/log/messages;sleep 1;done

第二步:

# tail -f /var/log/messages    或    # tailf /var/log/messages   或   # tail -F /var/log/messages

9、打印配置文件 nginx.conf 内容的行号及内容,该如何做?

第一步:先创建模拟数据

# seq 30 >oldboy.txt

第二步(共7种方法):

1、#cat -n oldboy.txt

2、# nl  oldboy.txt

3、#vim  oldboy.txt ---> :set nu

4、#grep -n "." oldboy.txt  ---> 对过滤的内容显示行号

5、#awk ‘{print NR $0}‘ oldboy.txt  ----> NR 表示行号,$0 表示整行、一行

6、#sed ‘=‘ /etc/rsyslog.conf

10、装完系统后,希望网络文件共享服务 NFS,仅在 3 级别上开机自启动,该如何做?

方法一:

#chkconfig NFS off  ---> 对应级别是:2,3,4,5

#chkconfig --level 3 NFS on

11、Linux 系统运行级别一般为 0-6,请分别写出每个级别的含义

0:关机模式

1:单用户模式

2:无NFS模式

3:文本模式(完整的多用户模式)

4:未使用的

5:图形模式

6:重启模式

12、Linux 系统中查看中文乱码,请问如何解决乱码问题?

a)、Linux系统下的字符集由变量 LANG 控制

#echo $LANG  ---> zh_CH.UTF-8

b)、expore LANG = "zh_CN.UTF-8"(临时变更字符集,退出当前窗口后失效)

c)、在 /etc/sysconfig/i18n 文件中,行首添加:(配置永久生效)

LANG="zh_CN.UTF-8"

并把之前的字符集行注释“#”

./etc/sysconfig/i18n(使修改生效)

d)、echo ‘export LANG=‘zh_CN.UTF-8‘ >>/etc/profile‘ (全局系统环境变量)

source /etc/profile(生效)

echo $LANG (查看结果)

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

a.请用 tar 打包 /etc/ 整个目录(打包及压缩)

b.请用 tar 打包 /etc 整个目录(打包及压缩,但需要排除/etc/services文件)

c.请把 a 点命令的压缩包,解压到 /tmp 指定目录下(最好只用 tar 命令实现)

解答:

c:创建、z:压缩、v:显示打包的过程、f:文件

tar:打包、gz:以gz格式压缩

a:cd /etc

tar -cpzvf  etc.tar.gz  ./*

b:

方法一:

vi  paichu.list

services

tar cpzvfX etc.tar.gz  paichu.list   ./

方法二:

tar -cpzvf  etc.tar.gz  --exclude=/etc/services  ./

c:tar -xzvf  /etc/etc.tar.gz -C  /temp

14、打包 /oldboy 里所有的文件

find /oldboy -type f |xargs tar -cpzvf oldboy.tar.gz

15、已知如下命令及结果:

echo "I am oldboy myqq is 49000448" >oldboy.txt

cat oldboy.txt

I am oldboy myqq is 49000448

现在需要从问文件中过滤出“oldboy”和“49000448”字符串,请给出命令;

解答:

方法一:awk ‘{print $3" "$6}‘ oldboy.txt

oldboy 49000448

方法二:cut -d " " -f3,6 oldboy.txt

oldboy 49000448

方法三:cut -c 6-11,20- oldboy.txt

oldboy 49000448

16、已知如下命令及结果(有逗号):

echo "I am oldboy,myqq is 49000448" >oldboy.txt

cat oldboy.txt

I am oldboy,myqq is 49000448

现在需要从问文件中过滤出“oldboy”和“49000448”字符串,请给出命令;

解答:

方法一:cut -c 6-11,20- oldboy.txt

oldboy 49000448

方法二:sed "s#,# #g" oldboy.txt|cut -d " " -f3,6

oldboy 49000448

方法三:awk -F "," ‘{print $1" "$2}‘ oldboy.txt|awk ‘{print $3" "$6}‘

oldboy 49000448

方法四:awk -F "[, ]" ‘{print $3" "$6}‘ oldboy.txt

oldboy 49000448

17、企业面试题

一个 100M (100000K)的磁盘分区,分别写入 1K 的文件或写入 1M 的文件,分别可以写多少个?

错误解答:很容易计算 1K 的个数:100 * 1000 = 10000个,1M 文件的个数:100/1 = 100个

假设 Block  4K   写入 1K 文件的数量

假设 inode 数量够多的时候,就是 Block 的数量,浪费 3/4 的容量

假设 inode 数量小于 block 的数量,就是inode 的数量,浪费 3/4 容量

假设 Block   4K   硬盘空间多大,基本上就可以写入 100/1M 数量,一般情况 inode 和 block 都是做够。

下面知识点:

a、上面的考题考察的是文件系统 inode 和 block 的知识点。

b、Inode 是存放文件属性信息的(也包含指向文件实体的指针),默认大小 128byte(c58),256 byte(c64)。

c、Block 是存放文件实际内容的,默认大小 1K(boot)或 4K(非系统分区默认给 4K),一般企业多用 4K 的 block。

d、一个文件至少要占用一个 inode 及一个 block

e、默认较大分区常规企业真实场景情况下,inode 数量是足够的。而 block 数量消耗的会更快。(工作中,我们的文件系统分区的时候,是 inode 会小于 block 数量的,所以写小文件,inode 会先满;如果写大文件,block 会先满)

18、企业面试题

一个 100M (block 的总大小、个数和单个 block 大小有关)的磁盘分区,分别写入 0.5K 的文件,及写入 1M 的文件,分别可以写多少个?为什么?

解答思想:先答四点知识

a、inode 是存放文件属性信息的,默认大小 128 byte(c58),256 byte(c64)。

b、block 是存放文件实际内容的,默认大小 1K(boot)或 4K(非系统分区默认给 4K)

c、一个文件至少要占用一个 inode 及一个 block

d、默认分区常规情况下,inode 数量是足够的。而 block 数量消耗的会更快

正确解答:

1、默认分区常规情况下,对大文件来讲 inode 是足够的。而 block 数量消耗的会更快,block 为 4K 的情况,1M 的文件不会有磁盘浪费情况,所以文件数量大概为 100/1=100 个

2、对于小文件 0.1K,inode 会消耗的更快。默认分区的时候 block 数量是大于 inode 数量的。

每一个小文件都会占用一个 inode 和一个 block。所以最终文件的数量:

inode 会先消耗完,文件总量是 inode 的数量

企业案例:

文件删除生产场景案例解决实战:Web服务器磁盘满故障深入解析

http://oldboy.blog.51cto.com/2561410/612351

19、描述下硬链接与软链接的区别?

2,3

时间: 2024-11-01 23:59:15

Linux 学习题目的相关文章

数据库学习网站和linux学习网站

Oracle ITPub论坛 http://www.itpub.net 著名IT技术论坛.尤以数据库技术闻名. ITPUB论坛的前身应该是建立在 smiling 的 oracle小组,他们搬家前的主页应该是在下面的这个地址吧! http://oracle.myrice.com/ CNOUG论坛 http://www.cnoug.org/ oracle中国用户组,高手云集,讨论Oracle数据库安装.管理.备份.恢复.性能优化: Oracle数据库高级技术HA.VLDB.ORACLE INTERN

linux学习(二)——汤哥的推荐书籍

成为一名精通 Linux程序设计的高级程序员一直是不少朋友孜孜以求的目标. 根据中华英才网统计数据,北京地区 Linux 程序员月薪平均为 Windows程序员的 1.8 倍.Java 程序员的 2.6 倍, Linux 程序员年终奖金平均为 Windows 程序员的 2.9倍.同时数据显示,随着工作经验的增长, Linux 程序员与 Windows 程序员的收入差距还有扩大的趋势. Denis 认为,要学好Linux 环境下的编程,关键是要看对.选对.学会正确的书籍. 可以说,如果你选对了Li

Linux学习之正则表达式&grep&egrep

我们经常需要在文档中搜索符合自己要求的内容,这些部分可能分散在文档的各个位置,各个角落.可以利用关键字例如/keyword或者?keyword一个一个的搜索,还有我可能不止想搜索关键字,而是指定一个范围,怎样操作?而且怎样把这些搜索到的内容集中地显示出来?使用正则表达式搜索字串的grep命令和egrep命令就可以满足我们的这个要求. 正则表达式(Regular Expression)是一种字符书写的模式,以行为单位进行字符的处理,透过一些特殊字符的辅助,利用这种模式可以轻易地达到对字符的搜索.删

linux面试题目--1

Linux面试题目 填空题1. 在Linux系统中,以 (文件)方式访问设备 .2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用i节点来标识.4. 全部磁盘块由四个部分组成,分别为引导块 .专用块 . i节点表块 和数据存储块.5. 链接分为:硬链接 和 符号链接.6. 超级块包含了i节点表 和 空闲块表等重要的文件系统信息.7. 某文件的权限为:drw-r--r--,用数值形式表示该权限,则该八进制数为: 644,该文件属性是

linux面试题目—2

linux面试题目—2 linux面试题目—2 二 选择题 1.关闭linux系统(不重新启动)可使用命令 B . A Ctrl+Alt+Del B halt C shutdown -r now D reboot 2.实现从IP地址到以太网MAC地址转换的命令为: C . A ping B ifconfig C arp D traceroute 3.在vi编辑器中的命令模式下,键入 B 可在光标当前所在行下添加一新行. A <a>; B <o>; C <I>; D A

linux学习之路之LVM

试想一种情况,当初我们在规划磁盘的时候,只给某一个磁盘或分区之划分了30G的容量,但是后来,随着业务的需求,该磁盘或者分区的使用量会越来越大,等到以后再有数据存放时,发现该磁盘或者分区的容量不够用,此时该怎么办了?可以新增一个磁盘,经过格式化,挂载等过程就可以使用这个磁盘了,再将原来磁盘的数据完全的复制过来.等到后来又发现,规划的磁盘又太大了,然后又使用上述方法来减少磁盘的大小.虽然这种方法可行,但是效率低,比较复杂.不应该是我们首选的方法. 当然,我们可以这样做,将多个磁盘或者分区(PV)组合

Linux学习日志2-vim使用基础

vim是linux操作系统下的一个文本编辑工具,功能非常强大,但刚学习起来比较复杂.vim的所有功能要讲明白得有几百页,在这里只是记录一下vim的一些基本用法. 首先vim打开文件的三种方式: vim +# xxx(#是数字):表示打开xxx文件并将光标定位到指定行. vim -o xx1 xx2 xx3:表示同时打开三个文件,垂直分割显示 vim -O xx1 xx2 xx3:表示同时打开三个文件,水平分割显示 多个文件间跳转:键入ctrl+w后:→向左.←向右.↑向上.↓向下 vim打开文件

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; linux &nbsp; &nbsp; 学习 &nbsp;

决心书 我叫孙启浩,出生在山东淄博的一个农村.15岁初中还没有毕业,就去上了技校,其实父母是想让我提早的步入社会,我在那个地方学的是'电厂热能动力装置' 本来我是想学it的可是我父母说就学这个因为在我们那里电厂找工作也好找工资肯定比学it工资要高,我就这样在那个对我来说无所谓的学校学了两年半.放暑假的时候我哥回来说要进京学it,我就想要不我也去学?因为我对这个it还是挺感兴趣的,之后就来了北京,先去看了一个学校叫'八维'觉得这个学校不怎么好,上来先学单词什么的我这种人一看书就想睡觉.然后我父亲的

linux学习笔记(一)-文件目录相关的命令&&文件通配符

一.几个命令概述 1.查看目录以及目录底下的文件:ls(-a显示隐藏文件:-d显示目录本身:-l显示详细内容:-R递归显示,即把子目录的文件也显示出来:-h以更加被人类理解的格式显示,比如显示文件大小的时候用M为单位显示:-i显示文件索引ID) 2.查看文件内容:cat,head,tail,less,more,tac cat:将文件连接起来,输出在屏幕上,可接多个文件(-E:显示隐藏的换行符:-n:显示出行号) head:默认查看文件的前10行(-n#:查看文件的前#行.空白行也是一行) tai