第3章 第3周课前测试考试题
3.1 取出文件的访问权限掩码
第1题如何取得/etiantian 文件的权限对应的数字内容,如-rw-r--r-- 为 644,要求使用命令取得644 这样的数字。
思路:
1.利用cut命令切割不同的字段出来,再利用tr命令将字母逐个转化为数字,再利用awk将不同的域相加后,再输出结果
2.stat命令可以查看到文件的详细信息,再从内容里面过滤出访问权限掩码
解答:
准备练习素材:
方法一:cut + tr + awk
方法二:stat + sed
# -n表示取消默认输出,-r表示使用扩展的正则表达式。要查找的目标是644,所以思路是可以先把目标前面的内容分隔出来,再把目标后面的内容分隔出来,再将目标前后的内容都替换为空。而目标的内容可以用小括号括起来,替换时利用后向引用原理,将目标内容显示出来。
.*\(0代表以任意字符开头,真到(0结束
(.*)代表任意的字符(即要查找的内容644)
/-.*$代表以/-开头,直到任意字符结束
\1代表【(.*)】
方法三:stat + awk
# -F指定分隔符,[]里面可以指定多个分隔符,+表示重复“1个或1个以上”前面的字符,[0/]因为644前面是一个0,后面是斜杠,所以指定隔符时可以指定这两个,这个查找时就能快速定位到这个目标;加NR==4后,只匹配到第4行
方法四:stat + grep
方法五:stat 参数:-c
总结:
1.三剑客都可以过滤出指定的内容,正则表达式的分隔符意义必须要理解,才能灵活应用。
2.如果一个命令的输出结果里有我们想要的内容,那么这条命令肯定会有参数单独把这个内容显示出来。
3.2 硬链接数
第2题linux 下通过 mkdir 命令创建一个新目录/oldboy/ett,它的硬链接数是多少,为什么?如果在/oldboy/ett 下面再创建一个目录 test。再问/oldboy/ett 的硬链接数是多少?为什么。
思路:
考查硬链接的原理,硬链接相当于一个文件的多个入口,互为硬链接的文件inode号是一样的。
解答:
第1个问:它的硬链接数是2个。
第2个问:它的硬链接数是3个。
总结:
1.inode里存放的是文件的属性(inode大小共512个字节),但不存放文件的文件名,因为文件名是数据,文件名实际存放在上一级(父)目录里,所以删除文件时(即删除文件名),必须要看上一级目录inode里的文件权限属性值。
2.如果一个目录的硬链接数为2(目录本身,点),那么它肯定没有子目录。
3.如果一个目录的硬链接数为3(目录本身,点,下一级子目录点点),那么它肯定有1(3-2)个子目录。
4.如果一个目录的硬链接数为5(目录本身,点,下一级子目录点点),那么它肯定有3(5-2)个子目录。
5.互为硬链接的文件,inode号一样,相当于一个文件的多个入口,常用来备份重要的文件,但是,目录不能做硬链接。
6.软链接相当于快捷方式,它也是一个文件,所以inode号和源文件(或硬链接文件)的inode号是不一样的,它是直接链接到源文件上的,所以,如果删除了源文件,那么软链接就会失效。
7.删除一个文件的原理:源文件和硬链接文件都被删除,即文件的硬链接数为0,当文件被进程调用时,是无法被删除的,这时可以停掉这个进程或重启服务,就会释放进程。
3.3 取出IP
第3题请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令答)
思路:
(1)先把IP地址所在的行过滤出来,再用cut指定分隔符,输出指定的列
(2)利用sed过滤,需要配合正则表达式
(3)利用awk过滤
解答:
方法一:grep + cut
以下这种解法更加方便,但路径较长
方法二:grep
方法三:sed
方法四 :awk
方法五:三剑客配合
总结:
(1)grep过滤指定字符,再用cut切割不同的列
(2)sed取行很方便
(3)awk可以指定多分隔符
3.4 网卡及dns配置文件路径
第4题请给出默认情况 eth0 网卡配置文件的路径及客户端 DNS 的路径。
解答:
总结:
如果网卡的配置文件里配置了DNS地址,而这个文件【/etc/resolv.conf】里也配置了DNS地址,那么以网卡的配置文件为准,即网卡的配置文件里的DNS地址优先级更高。
3.5 find&&sed查找替换
第5题查找当前目录下所有文件,并把文件中的 www.etiantian.org 字符串替换成 www.oldboy.cc。
思路:
利用find找出类型是文件的,再利用sed做查找替换对应的字符串
解答:
练习素材
两种方法都可以
检查
总结:
sed查找替换时,先确定结果后再加-i参数
3.6 考查文件权限位属性
第6题如何赋予 oldboy 文件 -rw-r--r-x 权限属性。
思路:
1.可以直接用数字改(最佳)
2.也可以用字符修改
解答:
练习文件
方法一
方法二
[root@lb01 ~]# ll oldboy
-rw-r--r-x 1 root root 0 2016-08-26 17:09 oldboy
方法三
总结:
1.创建新文件时,默认的权限是:644
2.创建新目录时,默认的权限是:755
3.它们是由umask(权限掩码默认是022)控制的
4.文件默认用666-umask,目录默认用777-umask
5.还有setuid和setgid位,作用是无权执行二进制命令的用户,会以root身份或相应的属主/组身份去执行相对应的命令,典型的例子有:passwd locate
6.chmod命令用来修改文件权限位,权限位字符的对应数字如下表
权限位字符对应数字
w4
r2
x1
-0
3.7 sudo su – 切换用户
第7题执行下面命令时发现提示需要输入密码,请问提示输入的密码是哪个用户的密码。
解答:普通用户test,想切换到普通用户oldboy,肯定要输入oldboy用户的密码。
3.8 考查echo参数-n:不换行输出
第8题请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出。
解答:
总结:
echo常用参数:
3.9 考查date命令※※※※※
第9题请给出如下格式的 date 命令 例:11-02-26。再给出实现按周输出 比如:周六输出为 6,请分别给出命令。
解答:
总结:
打包文件的案例
常用参数如下:
3.10 全局变量
第10题当从 root 用户切到普通用户时,执行 ifconfig 会提示。
请问这是为什么?如何解决,请给出详细解决过程。
解答:
原因:没有带入全局变量。
解决办法:全路径执行命令。
3.11 date命令扩展
第11题扩展问题:打印三天前的日期格式如:2011-02-26
解答:
扩展:
3.12 grep如何过滤空格
第12题已知/oldboy/test.txt 文件内容为:
请问如何把文件中的空格过滤掉(要求命令行实现)。
思路:
(1)利用字符点,匹配任意一个字符。
(2)先把空行过滤出来,再取反。
解答:
准备练习文件
方法一:利用“.”过滤空格,点代表且只能代表任意一个字符
方法二:过滤空行,再取反
总结:
1.. 代表且只能代表任意一个字符
2.* 代表重复0个或多个前面的一个字符
3..* 匹配所有字符
4.^$ 代表空行
5.-n 代表显示行号
6.-v 代表取反
3.13 grep 或 egrep过滤
第13题已知/oldboy/ett.txt 文件内容为:
请使用 grep 或 egrep 正则匹配的方式过滤出前两行内容。
解答:
准备练习文件
方法一:
方法二:
总结:
1.^代表一行的开头
2.-n代表显示行号
3.-E代表使用扩展的正则表达式
3.14 考查6个目录结构知识
第14题请描述下列路径的内容是做什么的?
解答:
/var/log/messages系统信息默认日志文件,按周自动轮循。
/var/log/secure记录登陆系统存取信息的文件(不管认证成功还是认证失败都会记录),它是系统安全的日志文件,依赖于rsyglog服务开启。
/var/spool/clientmqueue当邮件服务未启动时,所有发给系统管理员的邮件都将堆放在此。
/proc/interrupts目前系统上面的 IRQ 分配状态。
/etc/fstab开机自动挂载系统,(所有分区)开机都会自动挂载。
/etc/profile系统全局环境变量永久生效的配置文件,用来定义别名以及PATH变量等。
3.15 快速查到 ifconfig 的全路径
第15题如何快速查到 ifconfig 的全路径(假如你不知道其路径),请给出命令。
解答:
方法一:which - shows the full path of (shell) commands
方法二:whereis - locate the binary, source, and manual page files for a command
方法三:locate - find files by name
总结:
1.which显示shell命令的全路径
2.whereis定位一个命令的二进制文件,源代码,命令的帮助文件(manual page files)
3.locate按名字找出文件(只能查updatedb库里内容,locate从/var/lib/mlocate/mlocate.db查找路径)
3.16 定时任务
第16题每周日上午 9:30 来老男孩 linux 培训上课(用/oldboy.sh 代替),请用 linux 定时任务命令表示。
思路:
1.先在命令行测试
2.编写脚本测试脚本
3.利用crontab -e 编辑定时任务的配置文件(/var/spool/cron/root)
4.测试crond
5.完成操作(如果有错误,应立马排错)
解答:
1.先在命令行测试
2.编写脚本测试脚本
3.利用crontab -e 编辑定时任务的配置文件
总结:
1.命令的执行最好用脚本来代替
2.执行脚本时使用绝对路径
3.利用crontab -e 编辑配置文件时,任务的书写尽量用复制
4.每一条任务最好加注释,结尾最好无输出(>/dev/null 2>&1)
3.17 如何查看当前有哪些用户在线的 linux 命令
第17题请给出查看当前哪些用户在线的 linux 命令。
解答:
方法一:w - Show who is logged on and what they are doing
方法二:who - show who is logged on
方法三:users - print the user names of users currently logged in to the current host
方法四:last:show listing of last logged in users
总结:
1.w 显示有哪个用户已登录系统,以及用户正在做的事
2.who 查看(登录)用户名,以及所启动的进程
3.users 打印输出登录服务器的用户名
4.last 显示最近登录的用户
5.lastlog 显示有哪些用户远程登录过系统
lastlog - reports the most recent login of all users or of a given user
3.18 帐户10内过期
第18题公司一开发人员申请对某一服务器 10 天的普通用户权限,请问你如何操作?
思路:
1.利用useradd 命令添加新用户时,指定-e参数即可。
2.可以利用chage命令查看用户的过期时间。
解答:
检查
总结:
useradd参数
3.19 linux关机和重启的命令
第19题请给出正确的关机和重启服务器的命令。
解答:
服务器关机的命令如下:
服务器重启的命令如下:
总结:
1.shutdown命令只有拥有root权限才可以使用。
2.如果是通过shutdown命令关机或重启的话,可以用shutdown -c命令取消重启。
3.20 SecureCRT 命令行快捷键
第20题请写出下面 linux SecureCRT 命令行快捷键命令的功能?
解答:
快捷键 功能
Ctrl + a == home 将光标定位到行首
Ctrl + c 终止当前任务
Ctrl + d 注销当前用户
Ctrl + e == end 将光标定们到行尾
Ctrl + l 清屏
Ctrl + u 删除光标前面的内容
Ctrl + k 删除光标后面的内容
Ctrl + w 删除光标前面的单词(一个一个删)
tab 补全命令,提示帮助
Ctrl+shift+c 复制
Ctrl+shift+v 粘贴
Esc + . 调用上一次命令的文件路径