码迷,mamicode.com
首页 > 系统相关 > 详细

跟阿铭学Linux习题答案

时间:2017-12-05 11:55:50      阅读:570      评论:0      收藏:0      [点我收藏+]

标签:最小   chm   domain   locate   linux   关键字   打包压缩   useradd   补丁   

第一章:走进Linux

1、简述它的发展历史,列举几种代表性的发行版

Linux之前是Unix,由于Unix收费昂贵,so,Richard Stallman 发起了开发自由软件的运动,并成立了自由软件基金会(Free Software Foundation,FSF)和GNU 项目和协议GPL(是GNU General Public License)。之后一个大学的教授(名字为AndrewTanenbaum,谭邦宁)的Minix。经过对minix改造,芬兰赫尔辛基大学的一位计算机系名为Linus Torvalds 的学生开发了Linux ;

 

2、请简述GNU和GPL两个概念,列举几种GPL协议发型的软件;
FSF(Free Software Foundation)是自由软件基金会,GNU 是FSF主要的项目。
GNU 的全称为GNU’s not unix, 意思是“ GNU 不是UNIX”。
GNU计划,它的目标是创建一套完全自由的操作系统;
它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
GPL:GNU通用公共许可证(GNU General Public License)
简单地理解,GPL 许可的核心是保证任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布自由软件 的源代码权利,但都必须同时给出具体更改的源代码。
列举软件:vi、gcc等

 

3、列举流行的Linux版本,说明特点
Debian(1993) → ubuntu(2004)
Slackware(1993)→suse(1994)
redhat(1994)→rhel(redhat企业版[2002]) 注:2002后之前的redhat变为Fedora,指rhel的实验版
sentos(2003)→由redhat改过来的,免费,可以使用yum

 

第二章:初次安装使用

1、32和64位操作系统区别?如何查看?

那就是64 位操作系统的CPU 运算速度更快,支持更大的内存使用,可以发挥更大更好的硬件性能,提升业务工作效率。
查看命令:uname -m (uname -a可以查看内核版本)也可用uname -r一起查看

2、swap的作用?如何划分;
要有一个swap(交换)分区,它的作用相当于Windows 里的虚拟内存,swap 分区的大小一般为物理内存容量的1.5 倍(内存<8GB)。但当系统物理内存大于8GB ,
则swap 分区配置8 ~ 16GB 即可,太大无用,浪费磁盘空间。swap 分区不是必需的,但是大多数情况应该设置,个别企业的数据库应用场景不分swap。

3、查资料了解BootLoader、grub的概念和作用

Bootloader是嵌入式系统在加电后执行的第一段代码,对CPU和硬件的初始化,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。

grub是一个多重操作系统启动管理器。用来引导不同系统,如windows,linux。


4、如何在安装系统时给grub设置密码

安装界面勾选设置密码,然后设置


5、在安装Linux时你是如何分区的?

无特殊要求的话
200m的/boot、swap为真实内存的1.5倍(真实内存超过4g都分8g 的swap也可)、/分区分20G,其他都给/data

 

第三章 远程登录

1、Linux连接必须要用到sshd服务,默认监控什么端口,如何自定义sshd端口;
默认为22,sshd是系统自启动服务
修改/etc/ssh这个目录下面 sshd_config 这个文件中 port字段

2、常用的远程工具有?
xshell、secureCRT、Putty等

3、网卡配置文件在哪?默认配置需要修改什么?
/etc/sysconfig/network-scripts/ifcfg-***
DEVICE=eth0
HWADDR=00:0C:29:5D:A8:83
TYPE=Ethernet
UUID=48a3ab45-edc3-434f-b04b-13af94863772
ONBOOT=yes (需要修改为yes,代表随系统启动)
NM_CONTROLLED=yes
#BOOTPROTO=dhcp
BOOTPROTO=static
IPADDR=10.0.0.254
NETMASK=255.255.255.0
GATEWAY=10.0.0.254


4、网卡重启命令
service network restart
systemctl restart network.service

5、如何临时关闭selinux?如何永久关闭?
setenforce 0
vi /etc/selinux/config 修改为SELINUX=disabled

6、查看Linux有几块网卡用什么命令?查看网卡ip用什么命令?
#lspci |grep -i eth
查看ip:ifconfig、ip addr
7、我们为什么要使用密匙登录Linux呢?
为了安全,将密码加密,用密码加密的私匙解密公匙登录。

 

 

第四章 文件和目录管理


课后习题:
1、命令rmdir -p用来删除一串目录,比如rmdir -p /tmp/test/1/2/3 。如果2下除了3还有4,4下还有5,是否可以成功删除?用rmdir -p删除不存在的目录时会不会报错?

是否能成功删除:不能,因为3不是空的
# rmdir -p /tmp/test/1/2/3
rmdir: failed to remove directory `/tmp/test/1/2‘: Directory not empty

删除不存在目录会报错。
# rmdir -p lalala
rmdir: failed to remove `lalala‘: No such file or directory

2、删除一个目录或文件时,在删除之前会询问y/n,如果直接回车会删除吗?输入其他字符的效果是?
都相当于输入了n的效果。

3、如何创建一串目录?
用mkdir -p

4、使用mv命令,如果目标文件不是目录,但该文件存在会怎样?
# mv 1 3
mv: overwrite `3‘?
会提示是否覆盖

5、使用less命令查看文件/etc/passwd下共出现了几个root?按哪个键可以上下逐行移动?
/root可以定位到第一个root,按n跳到下一个,
按j、k上下移动

6、为什么目录必须要有x权限才能查看目录下的文件呢?
按要求操作时确实有问题,提示权限错误,因为打开目录就是在执行目录。

7、Linux系统中默认的目录权限?文档权限?分别用3个数字表示。如果umask=001,那么用户默认创建的目录和文件的权限是?
首先要说默认的umask为0022,所以默认的目录为755,普通文件644。目录是由777-022得到的,文件是666-022(这个不能数字减,因为有些umask为033,直接用数字减会导致错误,正确的方法见下面的例子)
这时目录权限744;文件权限644

8、用find找出/var目录下最近一天内变化的文件,再用find找出/root目录下一个小时内变更的文件;
介绍三个参数:-atime +n/-n 表示访问或执行时间
-ctime +n/-n 表示写入更改inode
-mtime +n/-n 表示内容修改
find /var -type -f -ctime -1
find /root -type -f -mmin +60(貌似不能用小时,这里用-mmin分钟)

9、用find找出/etc目录下一年没有变更过的文件
find /etc/ -type f ! -mtime -365 (百度的)
find /etc/ -type f -mtime +365(我写的)

10、为什么硬链接不能链接目录?硬链接的文件是否占用空间大小?硬链接可否跨分区?
规定: 因为每个目录下面都会有一个.和..也就是说每个目录下面的子目录肯定会有它本身和它上一级目录,那么一旦设置了硬链接则会造成一种混乱,设置会导致死循环。
硬链接的文件并不会占用空间大小,它只是复制了该文件的一份inode信息;
硬链接文件是不可以跨分区创建的。(因为每个分区都有不同的iNode表)

11、Linux系统里,分别用什么符号表示纯文本、二进制、目录、链接文件、块设备以及字符设备?
-:普通文件
d:目录
l:链接
b:块设备
c:设备文件
s:套接字文件

12、如何把dira目录以及该目录下的所有文件和目录所有者修改为 user1、所属组为users?
chown -R user1:user dira

13、修改dirb目录的权限,使其所有者可读、写、执行,所属组可读且可执行,其他用户不可读、写和执行用什么命令?
chmod 750 dirb

14、如何使文件只能写不能删除?如何使文件不能删除、重命名、设定链接、写入和新增数据?
chattr +a file 文件只能写不能删除
chattr +i file 文件不能被删除、重命名、设定链接接、写入、新增数据

15、Linux下的一个点"."和两个点"..",分别表示?
当前目录和上级目录

16、cd - 表示?
切换到上次所在目录

17、ls -l命令输出第二列的意思是?如果一个目录的第二列为3,那么这个3是如何得到的?
第二列数值改文件占用的inode
如果一个目录的这列为3,我们可以通过使用 ls -al dir/ |grep ^d| wc -l 这条命令得到 

18、如果系统中没有locate命令,我们需要安装哪个软件包?初次使用locate会报错can not open ‘/var/lib/mlocate.db‘:No such file or directory我们需要怎么做?

没有locate命令,需要安装mlocate包,yum install -y mlocate, 初次使用报错,是因为对应的数据库文件还没有生成,手动生成的命令是:updatedb

19、复制一个文件如果目标文件存在会提示是否覆盖,如何做就不询问了?
使用cp的绝对路径 /bin/cp a.txt b.txt 因为cp可能有alias -i

20、加入一个文件一直在增加,如何动态的显示这个文件的内容?
tail -f 文件名

21、如何查看当前用户的目录?
echo $HOME

22、假如一个目录任何人可写,怎么做到只有所有者才可更改?
chmod o+wt dir

23、件数软硬链接区别?
软连接可以理解为,源文件的快捷方式,软连接文件记录的是源文件的路径,占用空间非常小。当把源文件删除后,那么软连接文件也就变成一个坏文件了,不能使用了。
硬链接和源文件的inode信息是一模一样的,可以说硬链接文件只是复制了一份源文件的inode信息,在我们看来硬链接文件和源文件没有什么区别,删除任何一个文件对方都不受影响,唯一的是少了一份inode,硬链接只能在同一个分区下创建,而软连接不受限制。硬链接文件和源文件虽然看起来像是两个文件,但是只占用一个文件的磁盘空间。

24、cat a.txt会更改a.txt的什么时间?chmod 644 a.txt会更改它的什么时间?vim呢?直接touch呢?
cat 会更改atime(访问时间)
chmod 会更改ctime
vim 更改 atime 和 mtime 、ctime
touch 更改 atime 和 mtime 、ctime

 

第五章 系统用户和用户组管理

课后习题:
1、查看/etc/shadow第一行root账号的第三个字段(:分隔)中的数字,计算这个数字是怎么得到的
答:shadow文件的第三个字段表示最近修改密码的日期,为距离1970年1月1日的天数,注意1970年1月1日为1,然后经过几天就加几。关于/etc/shadow文件每个字段的含义请参考http://www.cnblogs.com/zhousir1991/archive/2011/07/25/2116520.html

2、写出一个您认为很强悍的密码.
答:LcY$&5jH%@*bGsN

3、查资料搞明白 /sbin/nologin 和 /bin/false 的区别,您知道他们用在什么场合吗?

答:这两个Shell都有禁止用户登录的功能,如果用户启动时的Shell被设置成之一都无法登录系统。但是/bin/false相对更加严格,禁止一切服务,将用户的shell设置为/bin/false,用户会无法登录,并且不会有任何提示。而/usr/sbin/nologin相对礼貌一些,将用户的shell设置为/usr/sbin/nologin会礼貌的向用户显示一条信息,并拒绝用户登录:This account is currently not available。/usr/sbin/nologin可以用于FTP服务上,不让用户登录但是仍可以提供FTP服务

4、请想一想,当我们创建一个新的账号时,系统会修改哪几个文件呢?

答:用户密码文件:/etc/passwd
加密密码文件:/etc/shadow
用户组文件:/etc/group
用户组密码文件:/etc/gshadow
创建home\user家目录

5、假如我们已经创建了一个普通用户user1, 默认这个用户的家目录为/home/user1, 做实验证明能否直接修改/etc/passwd配置文件中user1的家目录那个字段而改变user1的家目录呢? (提示: 您可以使用 “cd ~ ”命令来进入当前用户家目录的方法来验证)

答:[root@CentOS6 ~]# useradd user1
[root@CentOS6 ~]# su - user1
[user1@CentOS6 ~]$ cd ~
[user1@CentOS6 ~]$ pwd
/home/user1
[user1@CentOS6 ~]$ logout
[root@CentOS6 ~]# mkdir /tmp/rachy
[root@CentOS6 ~]# vi /etc/passwd
修改passwd文件中user1的配置行中/home/user1为/tmp/rachy,保存退出
[root@CentOS6 ~]# su - user1
-bash-4.1$ cd ~
-bash-4.1$ pwd
/tmp/rachy
-bash-4.1$ logout
[root@CentOS6 ~]#
可见,修改passwd配置文件可以直接修改用户的家目录。

6、/etc/passwd 文件以":"为分隔符,第三和第四个字段表示什么含义?如果把某一行的第三个字段改为‘0‘ 会发生什么?

答:第三个和第四个字段分别表示用户id和组id,如果把某一行的第三个字段改为0,则该用户变成root用户。关于/etc/passwd文件每个字段的含义请参考

http://os.51cto.com/art/201003/187533.htm。

7、先新增一个组group11,然后再新增一个账号user12, 使该账号所属组为刚刚新增的组。

答:[root@CentOS6 ~]# groupadd group11
[root@CentOS6 ~]# tail -2 /etc/group
user1:x:500:
group11:x:501:
[root@CentOS6 ~]# useradd -g group11 user12
[root@CentOS6 ~]# id user12
uid=501(user12) gid=501(group11) 组=501(group11)

8、如果删除一个组时报错: “cannot remove the primary group of user ‘aming‘” 这是什么意思?如何解决该问题呢?

答:删除用户组报错说明该用户组非空,可以先根据需要将里面的用户删除或者移到别的组,然后删除空了的组。

9、如何删除某个账户时,连带这个账户的家目录一并删除?

答:userdel -r username 使用-r选项连带家目录一并删除。

10. 如果您的Linux没有命令"mkpasswd", 需要安装哪个包?

答:需要安装expect包,使用命令 yum install -y expect 进行安装。

11. 普通账户可以修改自己的密码吗?

答:可以,需要输入自己的旧密码进行身份验证,验证通过即可修改。

12. 使用su时,后面加了 ‘-‘ 表示什么含义?

答:su user1 只切换到用户user1,不切换环境变量,仍然是root用户的环境变量;su - user1 切换到用户user1,并切换到用户user1的环境变量。

13. sudo的作用是什么呢?

答:使普通用户临时拥有root用户的权限,通常用来执行某些命令,不需要知道root密码,只需要知道自己的密码即可,提高安全性。

14. 创建系统账号时,帐户名要符合什么样的规范?

答:可以是大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位为点时,另外减号也不建议使用,因为容易造成混淆。

15. Linux系统里,你知道最大uid能有多大吗?默认创建一个普通帐号的uid最小是多少?

答:普通用户的uid最大为65535,目前的 linux 核心 (2.6.x 版)已经可以最大支持到 4294967295 (2^32-1) 。默认普通账号的最小uid为500。

16. 请思考,一个用户可以同时属于多个用户组吗?如果可以,如何把一个用户加入到另外的组里? 同时加入多个组怎么做?

答:一个用户可以同时属于多个组;使用-g选项可以指定要加入的组;同时加入多个组可以使用命令usermod -g grp1,grp2,grp3 username。

 

第六章 磁盘管理

课后习题:
1. vi 与 vim 有什么区别呢,它们之间有什么关系?

Vim是从Vi发展出来的一个文本编辑器,可以看作是vi的升级版。Vim的主要功能与原始的Vi完全兼容,与Vi不同的是,vi不会显示颜色,而vim会根据文件内容显示不同颜色,方便阅读和编辑。而且Vim具有代码补完、编译及错误跳转等方便编程的丰富功能,在程序员中被广泛使用。( Vim和Emacs并列成为类Unix系统用户最喜欢的编辑器。)

2. 如何查看当前系统vim的版本?

vim --version

3. 如果想把文档中出现的全部"abc"替换成"def"怎么做?又如何只替换每行中出现的第一个"abc"呢?

:1,$s/abc/def/g or :%s/abc/def/g

:1,$s/abc/def

 

4. 当搜索某个关键词时,光标所定位的关键词所在的行是如何决定的?如果想从当前关键词移动到下一个关键词怎么操作?移动到上一个关键词又怎么操作?

需要看vim进入文档时,光标所在位置,定位关键词是依据于光标所在的位置。

如果使用/搜索关键词,则按‘n‘向下移动,按shift + n 向上,如果使用?搜索关键词,和前者正好相反。

 

5. 当编辑完文档后,按ESC进入命令模式,输入命令 :x 会怎么样?

输入命令:x后也能保存文件并退出,有点类似:wq ,但两者有区别。

:x #写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。

:wq #强制性写入文件并退出。即使文件没有被修改也强制写入


6. 在一般模式下如何快速的把光标快速的向右或向左移动10个字符?

向右:10空格

向左:10l

 

7. vim + filename 表示什么含义, vim +10 filename 将会发生什么?

vim + 进入文档后,定位到最后一行

vim +10 进入文档后,光标定位到第10行

 

8. 用vim打开一个文档后,我想让光标跳到第20行,怎么做?跳到最后一行怎么做?

跳到20行,输入20G

最后一行,输入G


9. vim 打开文档后,默认是不显示行号的,如何做让它显示行号?

:set nu

 

10. vim打开文档后,我想把20-50行中的第一个‘abc‘ 替换为 ‘efg‘ 怎么操作?如果是想替换所有呢?

:20,50s/abc/efg 只替换第一个

:20,50s/abc/efg/g 替换全部

 

11. vim打开文档后,如何快速删除前100行?

先按‘gg‘ 到第一行,然后输入100d

 

12. vim打开文档后,如何复制一行,并粘贴到第20行的下面?

定位到要复制的行,然后输入yy,然后输入20G,再输入p

 

第七章 压缩与解压

课后习题:
1. gzip, bzip2 能否直接压缩目录呢?
不能直接压缩目录

2. 请快速写出,使用gzip和bzip2压缩和解压一个文件的命令。
gzip 1.txt
gzip -d 1.txt.gz
bzip2 1.txt
bzip2 -d 1.txt.bz2

3. tar 在打包的时候,如果想排除多个文件或者目录如何操作?
tar cvf 123.tar --exclude a.txt --exclude b.txt 123/

4. 请实验,如果不加 "-" 是否正确, 如 tar zcvf 1.tar.gz 1.txt 2.txt ?
不加 - 一样没有问题

5. 如何使用tar打包和解包 .tar.gz, .tar.bz2 的压缩包?
tar zcvf 1.tar.gz 1
tar zxvf 1.tar.gz
tar jcvf 1.tar.bz2 1
tar jxvf 1.tar.bz2

6. 找一个大点的文件,使用tar 分别把这个文件打成 .tar.gz和.tar.bz2 压缩包,比较一下哪个包会更小,从而得出结论,是gzip压缩效果好还是bzip2压缩效果好?
理论上.tar.bz2的压缩包小一些,但个别时候,有相反的情况。但大多时候bzip2压缩效果好。

7. 使用tar打包并压缩的时候,默认压缩级别为几? 想一想如何能够改变压缩级别呢?(提示,tar本身没有这个功能哦,可以尝试拆分打包和压缩)
tar打包压缩时,是按照gzip和bzip2的默认压缩级别来的,gzip工具默认压缩级别为6,bzip2默认压缩级别为9.
改变默认压缩级别可以这样来做,首先tar打包,然后再使用gzip或者bzip2压缩工具来压缩,压缩的时候指定压缩级别。如: tar cvf 1.tar 123/; gzip -2 1.tar

 

第八章 文档的压缩与打包

课后习题:

1.gzip命令和bzip2命令能否直接压缩目录呢?

答:不可压缩目录,会报错

2. 请快速写出gzip和bzip2压缩和解压一个文件的命令

答:gzip 1.txt ;gzip -d 1.txt.gz
bzip2 1.txt ;bzip2 -d 1.txt.bz2

3. tar在打包时想排除多个文件或目录怎么操作?

答:tar cvf xxx.tar --exclude filename

4. 请实验如果不加-是否正确,如tar zcvf 1.tar.gz 1.txt

答:依然正常压缩,故有无-都没关系

5. 如何使用tar打包和解包格式为.tar.gz和.tar.bz2格式的压缩包?

答:-z用gzip压缩;-j用bz2压缩;-x表示解压;-c表压缩
tar zcvf 1.tar.gz 1

tar zxvf 1.tar.gz

tar jcvf 1.tar.bz2 1

tar jxvf 1.tar.bz2


6. 找个大点文件,用.tar.gz和.tar.bz2格式的压缩比较一下哪个包更小,并且判断是gzip压缩效果好还是bzip2压缩效果好

答:理论上.tar.bz2的压缩包小一些,但个别时候,有相反的情况。但大多时候bzip2压缩效果好。

7.使用tar打包并压缩时,默认压缩级别是几?如何指定级别?。

答:tar打包压缩时,是按照gzip和bzip2的默认压缩级别来的,gzip工具默认压缩级别为6,bzip2
默认压缩级别为9.
改变默认压缩级别可以这样来做,首先tar打包,然后再使用gzip或者bzip2压缩工具来压缩,压缩的时候指定压缩级别。如: tar cvf 1.tar 123/; gzip -2 1.tar

 

第九章 安装rpm包或源码包

课后习题:

1.区分rpm与-qi、-qf、-ql和-qa这四个不同组合的作用。
答:rpm -qi 包名 查看一个包的详细信息

rpm -qf 文件名 查看一个文件是由哪个包安装的

rpm -ql 包名 查看一个包安装了哪些文件

rpm -qa 查看系统中安装了哪些包


2. rpm -qi 后面如果跟一个未安装的包名,会显示什么信息?

答:包名 is not installed

3. 请找出 vim 这个命令是由哪个rpm包安装来的?

答:rpm -qf `which vim`

4. 使用rpm安装和卸载某个包的命令是什么?

答:安装:rpm -i 包名 或 rpm --install 包名

卸载:rpm -e 包名 或 rpm --erase 包名

5. rpm安装某个包有依赖关系时,如何忽略依赖关系,强制安装该包?

答:rpm -i --nodeps 包名

6. 如何使用rpm升级一个包?

答:rpm -Uvh 包名

7. 使用yum搜索包含关键词 "tidy" 的rpm包,并安装,安装后再使用yum将其卸载。

答:yum list |grep tidy

yum install -y tidy

yum remove tidy

8. 如何使用yum来下载一个rpm包?

答:yum install -y yum-plugin-downloadonly #安装下载插件

yum install 包名 --downloadonly --downloaddir=/tmp/ #仅下载一个没安装的包vte到目录/tmp/下

yum reinstall 包名 --downloadonly --downloaddir=/tmp/ #下载一个安装过的包

9. 请到php的官方网站下载一个php的源码包,动手试试编译安装它?(php官网地址 http://www.php.net/)

答:下载源码包php-7.1.0.tar.gz

tar -zxvf php-7.1.0.tar.gz

cd php-7.1.0

./configure --prefix=/usr/local/php7

报错:configure: error: xml2-config not found. Please check your libxml2 installation.

yum list |grep xml2

yum install -y libxml2*

./configure --prefix=/usr/local/php7 配置

echo $? 返回0表示配置成功

make 编译

echo $? 返回0表示编译成功

make install 安装

echo $? 返回0表示安装成功

 

10. 查资料搞明白 yum upgrade 以及 yum update 两者的区别?它们在什么情况下使用?

答:yum --help看到:

update 更新系统中的一个或多个软件包

upgrade 更新软件包同时考虑软件包取代关系

yum upgrade与yum update都能更新系统的所有软件包,不同的就是upgrade相当一次大规模的升级,连带了旧的要淘汰的包也升级。update 和 upgrade 的侧重点不一样,update主要是使软件达到最新,但upgrade更侧重的是软件功能得到一个很大的提升,区别于频繁的发布最新的补丁。upgrade不改变软件设置和系统设置,系统版本升级,内核不改变;update改变软件设置和系统设置,系统版本内核都升级。

yum upgrade : 用于大规模的版本升级,更新Linux系统和整个软件版本

yum update : 用于安装补丁文件,更新内核和软件包到最新

 

11. 如何查看Linux系统中(CentOS)是否安装过某个包?

答:yum list installed | grep 包名 或者 rpm -qa | grep 包名

 

12. ./configure 完成后,并不知道到底有没有成功,用什么命令可以验证呢?

答: 使用“echo $?”命令查看上条命令执行是否成功,返回码为“0”表示成功,非零表示出错。

 

13. 如果在./configure 这一步出现这样的错误"configure: error: no acceptable C compiler found in $PATH" 我们该怎么办?

答:表示在当前用户的环境变量$PATH指示的路径中没有找到可用的C编译器,需要安装gcc :

yum install -y gcc

 

14. 有时,你忘记某个编译参数是如何写的,你怎么办?

答:查看帮助文档,README,INSTALL,CONFIGURE等,或者使用./configure --help

 

15. 如何使用光盘构建yum仓库?

答:mount /dev/cdrom /mnt/

cd /etc

cp -r yum.repos.d/ yum.repos.d.bak 将配置文件文件夹备份

cd yum.repos.d 切换到配置文件夹下

rm -rf CentOS-Base.repo 删掉配置文件CentOS-Base.repo,不使用网络yum源

vim CentOS-Media.repo 编辑配置文件CentOS-Media.repo

修改其内容如下:

[local_cdrom]

name=cd

baseurl=file:///mnt/

gpgcheck=0

enabled=1

#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6~

Esc:wq

yum list 右侧的名字变成了local_cdrom

yum grouplist 查看本地yum可用的包

LANG=en 切换到英文

yum groupinstall -y "Khmer Support" 从制作好的本地yum源安装一个语言套件

 

第十章 shell基础知识

课后习题:
1. 设置环境变量 HISTSIZE , 使其能够保存10000条命令历史。

答: vim /etc/profile,搜索到HISTSIZE,将1000改为10000,然后保存退出,再执行 source /etc/profile使其生效。

[root@centos6 ~]# echo $HISTSIZE

1000

[root@centos6 ~]# HISTSIZE=10000 #临时修改

[root@centos6 ~]# echo $HISTSIZE

10000

[root@centos6 ~]# cat /etc/profile |grep HISTSIZE

HISTSIZE=1000

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

[root@centos6 ~]# vim /etc/profile #永久修改

HISTSIZE=10000

Esc:wq

[root@centos6 ~]# source /etc/profile

[root@centos6 ~]# echo $HISTSIZE

10000

[root@centos6 ~]#

 

2. 为什么如果这样设置PS1 (PS1="[\u@\h \W]\$ ") 显示的结果和我们预想的不一样,那要如何设置才能恢复原来默认的?

答: Shell中双引号保留原有字符的特殊含义,单引号可以去掉原有字符的特殊含义。所以我们有两种改法:(1)PS1="[\u@\h \W]\\$ "

(2)PS2=‘[\u@\h \W]\$ ‘

3. 想办法把当前目录下的文件的文件名中的小写字母全部替换为大写字母。

答:使用脚本来完成该目标:

[root@centos6 ~/test 01:04 #10]# vim lower2Upper.sh

#!/bin/sh
for i in `ls`
do
    mv $i `echo $i |tr ‘[a-z]‘ ‘[A-Z]‘`
done

 

[root@centos6 ~/test 01:04 #10]# /bin/sh lower2Upper.sh

 

4. 使用sort以":"为分隔符,对/etc/passwd文件的第5段排序。

答:sort -t: -k5 -n /etc/passwd #按第5段排序

 

5. 使用cut以":"为分隔符,截出/etc/passwd的第三段字符。

答:cut -d: -f3 /etc/passwd #截出第三段

 

6. 简述这几个文件的作用: /etc/profile, /etc/bashrc, .bashrc, .bash_profile.

答:这几个都是配置文件。

/etc/profile系统级的配置文件,其中变量对所有用户都有效;

/etc/bashrc系统级的bash变量配置文件,任何用户运行bash则会读取其中内容。

.bashrc:用户级的bash相关变量配置文件,只对当前用户有效,无需登录,主要通过该用户运行命令行就会读取该文件。

.bash_profile用户级的变量配置文件,只对当前用户生效,在用户登录后才读取。

 

7. export 的作用是什么?

答:声明一个变量,使其进入子shell后也生效

 

8. linux下自定义变量要符合什么样的规则呢?

答:自定义变量的格式为 varname=value, 等号两边不能有空格;变量名只能由字母、数字和下划线组成,且不能以数字开头;原则上自定义变量要小写,不能与系统系统变量、函数名、关键字等相同;当变量内容带有特殊字符(如空格)时,需要加上单引号;变量内容中本身带有单引号,需要用到双引号;如果变量内容中需要用到其他命令运行结果则可以使用反引号;

 

9. 如何把要运行的命令丢到后台跑?又如何把后台跑的进程给调到前台?

答:运行之前,可用“命令 &”直接在后台运行;正在运行的命令,可以使用jobs查看其PID,然后使用"bg PID"命令将其调到后台运行;也可以使用“fg PID”将其调到前台运行。
也可以用jobs查到jobs id 用 fg id 或bg id

 

10. 列出当前目录下以"test"开头的文件和目录。

答:ls -ld test*

 

11. 如何把一个命令的输出内容不仅打印到屏幕上而且还可以重定向到一个文件内?

答:ls -ld test* |tee ls.log

 

12. 假如有个命令很长,我们如何使用一个简单的字符串代替这个复杂的命令呢?请举例说明。

答:可以使用别名alias:alias ls=‘ls --color=auto‘;

也可以使用变量:myls=‘ls --color=auto‘,调用时只需加上$符即可:$myls

 

13. 我如何实现这样的功能,把一条命令丢到后台运行,而且把其正确输出和错误输出同时重定向到一个文件内?

答:vmstat 1 > /tmp/1.log 2>&1 &
shell上:
0表示标准输入
1表示标准输出
2表示标准错误输出
> 默认为标准输出重定向,与 1> 相同
2>&1 意思是把 标准错误输出 重定向到 标准输出.
&>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中


14. 如何按照大小(假如按照10M)分隔一个大文件,又如何按照行数(假如10000行)分隔?

答:split -b 10M filename

split -l 10000 filename

 

15. 做实验,搞明白 ; && || 这三个符号的含义。

答:(1);结束一条命令,可以用来将多条命令写在一行中

(2)&&逻辑与,前面语句为真才执行后面语句,前面为假不执行后面语句

(3)||逻辑或,前面语句为假才执行后面语句,前面为真不执行后面语句

 

16. 如果只想让某个用户使用某个变量如何做?

答:可以以该用户身份编辑其家目录下的.bashrc文件,加入一行 var=10,保存退出后执行

source .bashrc使其立刻生效即可。

 

17. 使用哪个命令会把系统当中所有的变量以及当前用户定义的自定义变量列出来?

答:env只能列出系统变量,set不仅能列出系统变量,还能列出用户变量。

 

第十一章 正则表达式

 

课后习题:
1. 如何把 /etc/passwd 中用户uid 大于500 的行给打印出来?
awk -F ‘:‘ ‘$3 > 500‘ /etc/passwd

2. awk中 NR,NF两个变量表示什么含义?awk -F ‘:‘ ‘{print $NR}‘ /etc/passwd 会打印出什么结果出来?
NR表示行号
NF是总共有多少段
NR表示行数,NF表示一共有多少段
awk -F ‘:‘ ‘{print $NR}‘ /etc/passwd 会依次打印对应的行数的段,第一行打印第一段,第二行打印第二段... 到了最后就打印空行了

3. 用grep把1.txt文档中包含‘abc‘或者‘123’的行过滤出来,并在过滤出来的行前面加上行号.
grep -E -n ‘abc|111‘ test.txt

4. grep -v ‘^$‘ 1.txt 这样会过滤出哪些行?
会把非空行过滤出来

5. ‘.‘ ‘*‘ 和 ‘.*‘ 分别表示什么含义?‘+‘和‘?‘表示什么含义,这五个符号是否可以在grep中使用,是否可以在egrep、sed以及awk中使用?
‘.‘:表示一个任意的字符;
‘*‘:表示前面紧邻的那个字符有零个或多个,即前面紧邻的那个字符可以不存在,也可以有多个;
‘.*‘:表示零个或多个的任意字符,包括空行;
‘+‘:表示前面紧邻的那个字符有一个或多个;
‘?‘:表示前面紧邻的那个字符有零个或一个;
grep和sed可以使用‘.‘ 、 ‘*‘ 和 ‘.*‘,但是不能使用‘+‘和‘?‘ egrep和awk全部可以使用。

 

6. grep 里面用到一个 {} ,它用在什么情况下?

{ },其内部为数字,表示前面的字符要重复的次数。数字可以是单个数字{n},也可以是一个区间{n1,n2}。注意,在字符串中,{ }左右都需要加上脱意字符 ‘\’。

例如, grep ‘o\{3\}‘ /etc/passwd //输出有3连续的‘o‘的行


7. sed有一个选项,可以直接更改文本文件,是哪个选项?
sed -i

8. sed -i ‘s/.*ie//;s/["|&].*//‘ file 这条命令表示什么操作呢?

该命令由;分割了两部分,首先第一部分表示把file中出现的以ie结尾的字符串删除,
第二部分是把file中以"或|或&开头的字符串删除


9. 如何删除一个文档中的所有数字或者字母?

删除所有数字: sed -i ‘s/[0-9]//g‘ file
删除所有字母: sed -i ‘s/[a-Z]//g‘ file


10. 截取日志1.log的第一段(以空格为分隔符), 按数字排序、然后去重,但是需要保留重复的数量如何做?

awk ‘{print $1}‘ 1.log |sort -n|uniq -c|sort -n

11. 使用awk过滤出1.log中第7段(空格分隔)为‘200‘ 并且第8段为‘11897‘的行。

awk ‘$7 == "200" && $8 == "11897"‘ 1.log

12. 请比较这两个命令的异同: grep -v ‘^[0-9]‘ 1.txt 和 grep ‘^[^0-9]‘ 1.txt

grep -v ‘^[0-9]‘ 1.txt //输出文件中不以数字开头的行,但输出空行
grep ‘^[^0-9]‘ 1.txt //输出文件中不以数字开头的行,但不输出空行(不是0到9开头,但是需要有内容)

13. awk中的$0表示什么?为什么以下两条命令的$0结果不一致呢? awk -F ‘:‘ ‘{print $0}‘ 1.txt 和 awk -F ‘:‘ ‘$7=1 {print $0}‘ 1.txt
$0表示整行
awk -F ‘:‘ ‘{print $0}‘ 1.txt //打印所有的行 ,即整个记录
awk -F ‘:‘ ‘$7=1 {print $0}‘ 1.txt
//以冒号为分隔符,输出时将每行的第七段的内容更改为1,并打印所有的行,此时并不会连带分隔符一起输出(因为此时有对分隔的段进行相关的操作,这样分隔就有意义了,所以不会打印分隔符)

14. 使用grep过滤某个关键词时,如何把包含关键词的行连同上面一行打印出来,那下面一行呢?同时上面和下面都打印出来 呢?

grep -B1 上面一行
grep -A1 下面一行
grep -C1 上下各一行

 

第十二章 shell脚本

 

课后习题:

1. shell脚本中,怎么做可以把某一行给注释掉
在该行的最前面加一个警号#

2. 如何执行一个shell脚本呢
bash 1.sh 或者 chmod +x 1.sh; ./1.sh

3. 为了方便管理,我们约定把shell脚本都放到哪个目录下
放到 /usr/local/sbin/下

4. 为了更好的调试shell脚本,我们可以加一个选项来观察shell脚本的执行过程,是哪个选项呢
bash -x 1.sh

5. 使用date命令打印5天前的日期,要求日期格式为: xxxx-xx-xx
date -d "-5 day" +%Y-%m-%d


6. 请判断,阿铭的脚本哪里有问题
#! /bin/bash

a = 1
b = 2
echo $a, $b

赋值变量值的时候,带了空格

7. shell脚本中如何使用数学运算请举例说明。
a=1; b=2
c=$[$a+$b]
echo $c

8. shell脚本中有一个命令可以实现脚本和用户交互,请问是哪个命令,怎么使用
read -p
例如
read -p "please input a number" n
这样会把用户输入的内容作为n这个变量的值

9. 在shell中如何进行大小或者等于判断
大于 -gt 小于是 -lt 等于是 -ne 大于等于是 -ge 小于等于是 -le 格式如下:
if [ $a -ge 0 ]; then ... ;fi

10. shell脚本中,用什么符号表示并且,用什么符号表示或者
&& 并且
|| 或者

11. shell脚本中,case逻辑判断的结构是什么样的
case $a in
1)
command
;;
2)
command
;;
*)
command
;;
esac

12. 列举出shell脚本中常用的循环结构。
for a in ... ; do ... ; done
while ...; do ...; done

13. shell脚本中函数的作用是什么函数结构是什么样的
函数可以理解成shell脚本中一个小代码单元,当要用到这段代码时直接调用函数名即可,从而避免重复书写这段代码,提高代码书写效率和质量。
函数的结构为
function fu_name() {
.....
}

14. 写脚本实现,把一个目录下的所有文件(不含有目录)全部在文件名后面加一个.bak
#! /bin/bash

for f in `find . -type f`; do mv $f $f.bak; done

15. 编写一个shell脚本,将当前目录下大小大于100k的文件全部移动到/tmp/ 目录下。
for f in `find . -type f -size +100k`; do mv $f /tmp/ ; done

16. 写一个小脚本,获取本机的hostname、ip地址以及dns地址。
#!/bin/bash

hostname=`hostname`
echo "hostname : " $hostname
ip=`/sbin/ifconfig -a | grep ‘inet addr‘ | awk -f ‘:‘ ‘{print $2}‘ | awk ‘{print $1}‘`
for i in $ip
do
echo "`ifconfig | grep -b1 "$i" | grep -v ‘inet addr‘ | awk ‘{print $1}‘` "$i""
done
dns=`cat /etc/resolv.conf |grep nameserver|grep -v ‘#‘`
echo $dns

17. 写两个小脚本验证break和continue在循环中的作用。
#!/bin/bash
for i in `seq 1 5`
echo $i
do
if [ $1 -eq 3 ]
then
break
fi
echo $i
done
输出结果是;1 1 2 2 3 到最后一个echo 没有输出 结束了当前层

将上面的break 换成 continue
结果是: 1 1 2 2 3 4 4 5 5
当等于3的时候下面那句不执行,
继续执行 之一到5

 

第十三章 系统管理

第十三章练习题答案
1. 如何看当前linux系统有几颗物理cpu和每颗cpu的核数
物理cpu个数:cat /proc/cpuinfo |grep -c ‘physical id‘
cpu一共有多少核:grep -c processor /proc/cpuinfo
将cpu的总核数除以物理cpu的个数,得到每颗cpu的核数。

2. 查看系统负载有两个常用的命令,是哪两个这三个数值表示什么含义呢
两个命令分别是 w 和 uptime
这三个系统负载值分别表示在1分钟、5分钟和15分钟内平均有多少个任务处于活动状态。

3. vmstat r, b, si, so, bi, bo 这几列表示什么含义呢
r 表示运行和等待cpu时间片的进程数
b 表示等待资源的进程数,比如等待i/o, 内存等
si 表示由交换区进入内存的数量
so 由内存进入交换区的数量
bi 从块设备读取数据的量(读磁盘)
bo 从块设备写入数据的量(写磁盘)

4. linux系统里,您知道buffer和cache如何区分吗
简单讲,buffer里的数据是将要写入到磁盘里的,而cache里的数据时从磁盘里读出来的。
cache用来缓存从磁盘中读取出来的数据,以方便数据下次被访问,提高数据的访问效率,避免频繁读取磁盘操作。linux自动地使用所有空闲的内存作为高速缓冲,当程序需要更多的内存时,它也会自动地减小缓冲的大小。
buffer用来缓冲数据的磁盘写入操作,通过将分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。linux有一个守护进程定期清空缓冲内容(即写磁盘),也可以通过sync命令手动清空缓冲。

5. 使用top查看系统资源占用情况时,哪一列表示内存占用呢
res这一列表示物理内存占用数量

6. 如何实时查看网卡流量为多少如何查看历史网卡流量
sar -n dev 1 100
sar -n dev 可以查看当天的历史网卡流量
sar -n dev -f /var/log/sa/saxx 其中xx是日期

7. 如何查看当前系统都有哪些进程
ps aux

8. ps 查看系统进程时,有一列为stat, 如果当前进程的stat为ss 表示什么含义如果为z表示什么含义
ss表示当前的进程是主进程,且处于休眠状态; z表示僵尸进程

9. 如何查看系统都开启了哪些端口
netstat -lnp

10. 如何查看网络连接状况
netstat -an

11. 想修改ip,需要编辑哪个配置文件,修改完配置文件后,如何重启网卡,使配置生效
vim /etc/sysconfig/network-scripts/ifcft-eth0 如果是eth1则文件名为ifcft-eth1
修改网卡后,可以使用命令: ifdown eth0; ifup eth0 重启网卡,也可以重启网络服务:service network restart

12. 能否给一个网卡配置多个ip 如果能,怎么配置
可以给一个网卡配置多个ip,配置步骤如下:
1) cd /etc/sysconfig/network-scripts/ cp ifcfg-eth0 ifcfg-eth0:1
2) vim ifcfg-eth0:1 #修改device和ipaddr、netmask以及gateway的值(如果有必要)
3) 重启网络服务

13. 如何查看某个网卡是否连接着交换机
mii-tool eth0 或者 mii-tool eth1

14. 如何查看当前主机的主机名,如何修改主机名要想重启后依旧生效,需要修改哪个配置文件呢
输入命令 hostname 可以查看当前主机名,修改主机名可以通过命令: hostname newhostname
要想重启后依旧生效,需要修改配置文件 /etc/sysconfig/network

15. 设置dns需要修改哪个配置文件
需要修改 /etc/resolv.conf,
有时修改该文件后再重启网络服务dns相关设置丢失的话,需要在/etc/sysconfig/network-scripts/ifcfg-eth0中增加dns1=xxxxx这样的设置

16. 使用iptables 写一条规则:把来源ip为192.168.1.101访问本机80端口的包直接拒绝
iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT

17. 要想把iptable的规则保存到一个文件中如何做如何恢复
保存:iptables-save > 1.ipt
恢复:iptables-restore < 1.ipt

18. 如何备份某个用户的任务计划
直接拷贝用户的cron文件 cp /var/spool/cron/username /bak/

19. 任务计划格式中,前面5个数字分表表示什么含义
分时日月周

20. 如何可以把系统中不用的服务关掉
ntsysv 工具
或者使用chkconfig servicename off

21. 如何让某个服务(假如服务名为 nginx)只在3,5两个运行级别开启,其他级别关闭
chkconfig nginx off
chkconfig --level 35 nginx on

22. rsync 同步命令中,下面两种方式有什么不同呢
(1) rsync -av /dira/ ip:/dirb/ 是通过ssh方式同步的
(2) rsync -av /dira/ ip::dirb 是通过rsync服务的方式同步的

23. rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?
如果源中有软连接,那么需要加一个-l选项

24. 某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
有两个日志文件:
1)/var/log/secure 这个记录验证用户信息的过程
2)/var/log/wtmp 这个日志记录成功登陆的用户信息

25. 网卡或者硬盘有问题时,我们可以通过使用哪个命令查看相关信息?
dmesg

26. 分别使用xargs和exec实现这样的需求,把当前目录下所有后缀名为.txt的文件的权限修改为777.
xargs: find ./ -type f -name "*.txt" |xargs chmod 777
exec: find ./ -type f -name "*.txt" -exec chmod 777 {} ;

27. 有一个脚本运行时间可能超过2天,如何做才能使其不间断的运行,而且还可以随时观察脚本运行时的输出信息
使用screen工具

28. 在linux系统下如何按照下面要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中
tcpdump -nn -s0 host 192.168.0.111 and port 80 -c 1000 -w 1.cap

29. rsync 同步数据时,如何过滤出所有.txt的文件不同步
--exclude="*.txt"

30. rsync同步数据时,如果目标文件比源文件还新,则忽略该文件,如何做
加 -u 选项

31. 想在linux命令行下访问某个网站,并且该网站域名还没有解析,如何做
修改 /etc/hosts 增加解析记录,或者使用curl -x

32. 自定义解析域名的时候,我们可以编辑哪个文件是否可以一个ip对应多个域名是否一个域名对应多个ip
编辑 /etc/hosts ,可以一个ip对应多个域名,不可以一个域名对多个ip

33. 我们可以使用哪个命令查看系统的历史负载(比如说两天前的)
sar -q -f /var/log/sa/saxx 其中xx为两天前的日期

34. 在linux下如何指定dns服务器,来解析某个域名
dig @dnsip domain.com

35. 使用rsync同步数据时,假如我们采用的是ssh方式,并且目标机器的sshd端口并不是默认的22端口,那我们如何做
rsync "--rsh=ssh -p port"

36. rsync同步时,如何删除目标数据多出来的数据,即源上不存在,但目标却存在的文件或者目录
--delete

37. 使用free查看内存使用情况时,哪个数值表示真正可用的内存量
第二行 -/+ buffers/cache 对应的free的那一个数

38. 有一天你突然发现公司网站访问速度变的很慢很慢,你该怎么办呢(服务器可以登陆,提示:你可以从系统负载和网卡流量入手)
首先登陆服务器,先看看负载情况,使用命令w, 如果第一个数值很大,再使用vmstat 1 查看是哪些资源缺乏造成的负载高,可以通过r,b,si,so 几列的数值推算是因为哪些资源缺乏。比如r列数值很大,需要使用top命令查看是哪个进程占用cpu比较多,如果si,so两列的数值变化频繁,则说明内存不足,也可以使用top命令查看哪些进程占用较多内存。
如果系统的负载不高,则需要查看一下网卡流量是否正常: sar -n dev 1 10 对比平时的网络流量看是否正常。

39. rsync使用服务模式时,如果我们指定了一个密码文件,那么这个密码文件的权限应该设置成多少才可以
600 或者 400 总之组和其他用户都不能读不能写也不能执行

 

第十四章 

 

第十五章

 

第十六章

 

第十七章

 

第十八章

 

第十九章

 

第二十章

 

第二十一章

 

第二十二章

 

第二十三章

 

跟阿铭学Linux习题答案

标签:最小   chm   domain   locate   linux   关键字   打包压缩   useradd   补丁   

原文地址:http://www.cnblogs.com/-abm/p/7985623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!