Linux 练习题-2基础 问答

1、解释什么是GPL,GNU,自由软件

  1. GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。

  2. GNU:(革奴计划):目标是创建一套完全自由、开放的的操作系统。

  3. 自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。主要许可证有GPL和BSD许可证两种。

 

2、安装系统时如何给linux操作系统分区

  1. 常规分区:数据不是特别重要的业务(集群的某个节点)

/boot  引导分区  200M 主分区

swap  交换分区  内存的1.5倍,内存大于8G,就给8-16G

/   Linux所有目录顶点  剩余所有空间

  1. 数据重要(数据库、存储服务器)

/boot  引导分区  200M 主分区

swap  交换分区  内存的1.5倍,内存大于8G,就给8-16G

/   Linux所有目录顶点,100-200G

/data  所有,存放数据

  1. 特大网站,门户(产品线特别多,需求)

/boot  引导分区  200M 主分区

swap  交换分区  内存的1.5倍,内存大于8G,就给8-16G

/   Linux所有目录顶点  剩余所有空间

剩余空间不分配,哪个部门领了服务器,根据需求在分

 

3、描述Linux系统的启动过程

    1.CentOS6 的启动过程

BIOS ->MBR:Boot Code-》执行引导程序-GRUB -》加载内核 -》执行init(pid是1) -》runlevel(根据定义的运行init级别启动)

  1. BIOS开机自检后,去连接的磁盘设备查找引导记录。将找到的第一个引导记录放入内核运行,即是MBR

  2. MBR告诉程序去×××GRUB引导系统继续启动(GRUB的第一阶段)

  3. GRUB : 

    1. GRUP1.5阶段将根据MBR后的扇区,识别GRUP2阶段所在分区的文件系统。即加载/boot分区上的文件系统

    2. GRUB2:/boot分区的文件系统加载成功,读到/boot/grub/grub.conf或者menu.lst等配置文件,然后根据grub.conf配置文件确定内核的启动参数,准备启动内核:

    3. 注意:/boot/grub 中的stage1 就是我们当前硬盘MBR的一个镜像,stage1会去引导文件系统名_stage1_5等文件。Stag2是个较大的引导程序,stag2加载完后,开始加载内核

 

  1. 启动内核

    1. 加载内核时,一般还会加载内核模块打包文件/initramfs-2.6.32-696.el6.x86_64.img。Linux为了保持内核的精简,所以将一些不常用的驱动、功能编译成模块,在需要的时候,动态加载。

    2. 内核启动后,再调用ramdisk文件(伪文件系统),尝试驱动所有的硬件设备

 

  1. 启动init进程

(1)读取/etc/inittab文件,确定运行级别

(2)执行/etc/rc.d/rc.sysinit程序,初始化一些脚本

(3)/etc/rc#.d/文件(各种服务)。根据不同级别加载服务

(4)/etc/rc.d/rc.local文件,开机自启动命令

(5)执行/sbin/mingetty(有登录认证)(也有说/bin/login的。但在/etc/inittab中可看到对终端登录的定义,这个配置文件里指定了命令),等待用户登录


             image.png


 

    2.CentOS7 的启动过程

BIOS ->MBR:Boot Code-》执行引导程序-GRUB -》加载内核 -》执行systemd -》runlevel(根据定义的运行target级别启动)

  1. uefi或BIOS初始化,开始post开机自检

  2. 加载mbr到内存

  3. GRUB阶段

  4. 加载内核和initramfs模块

  5. 使用systemd来代替centos6以前的init程序

  6. (1)执行initrd.target

            包括挂载/etc/fstab文件中的系统,此时挂载后,就可以切换到根目录了

    (2)从initramfs根文件系统切换到磁盘根目录

    (3)systemd执行默认target配置

    centos7表面是有“运行级别”这个概念,实际上是为了兼容以前的系统,每个所谓的“运行级别”都有对应的软连接指向,默认的启动级别是/etc/systemd/system/default.target,根据它的指向可以找到系统要进入哪个模式

    (4)systemd执行sysinit.target,初始化系统

    在CentOS6上是被叫做rc.sysint程序。

    (5)basic.target启动基本系统。该目标间接包含了所有的本地挂载点单元以及其他必须的系统初始化单元

    (6)systemd启动multi-user.target

    (7)Systemd执行multi-user.target.wants下的getty.target及登录服务

    getty.target是启动终端的systemd对象。如果到此步骤,系统没有被指定启动图形桌面,到此就可以结束了,如果要启动图形界面,需要在此基础上启动桌面应用程序
    systemd执行graphical.target

 

image.png

 

 

    3.CentOS6,7启动区别

系统启动和服务器守护进程管理器systemd,它不同于centos5Sysv initcentos6UpstartUbuntu制作出来),它在内核启动后,服务什么的全都被systemd接管,kernel只是用来管理硬件资源,相当于内核被架空了

image.png

 

 

432位系统和64位系统的区别

(1)设计初衷不同。

简单说:64位是高科技人员使用本行业特殊软件的运行平台。而32位操作系统是为普通用户设计的。  

(2)要求配置不同

64位操作系统只能安装在64位电脑上(CPU必须是64位的)。同时需要安装64位常用软件以发挥64位(x64)的最佳性能。32位操作系统则可以安装在32(32CPU)64(64CPU)电脑上。当然,32位操作系统安装在64位电脑上,其硬件恰似“大马拉小车”:64位效能就会大打折扣。

(3)运算速度不同

64CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据(只要两个指令,一次提取8个字节的数据),比32(需要四个指令,一次提取4个字节的数据)提高了一倍,理论上性能会相应提升1倍。 

(4)寻址能力不同

64位比32位支持更多的内存 

(5)软件普及不同

目前,64位常用软件比32位常用软件,要少得多的多。

 

5、什么是PATH环境变量,它有什么作用?

  1. PTAH环境变量:存放一系列目录

  2. 作用:决定了shell将到哪些目录中寻找命令或程序,当你运行一个程序时,Linux在这些目录下进行搜寻编译链接

  3. 编辑 PATH 声明,其格式为:

PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>

source .bash_profile #改变完成后,立即生效

 

6、关于“.bash_profile”和“.bashrc”区别的总结

bash在运行时有两种属性“交互”和“登录”

    1、“交互式”与“非交互式”

    1、交互式shell

等待你输入命令,并且立即执行,然后将结果反馈给你

    2、非交互式

脚本的执行

    2、“登陆shell”与“非登陆shell”

    1、登陆shell

      1. 用户通过输入用户名/密码(或证书认证)后启动的shell;        

      2. 通过带有-l|--login参数的bash命令启动的shell。        

例如,系统启动、远程登录、使用su - 切换用户、通过bash --login命令启动bash等。

    2、非登陆shell

从图形界面启动终端、使用su切换用户、通过bash命令启动bash等

 

原理上讲,“登陆shell”启动时会加载“profile”系列的startup文件,而“交互式非登陆shell”启动时会加载“rc”系列的startup文件。

“profile”系列文件的主要目的在于为“登录shell”设置环境变量和启动程序;而“rc”系列文件的主要目的在于设置功能和别名。

1、交互式登陆shell

登陆过程:

1. 读取并执行/etc/profile文件;

2. 读取并执行~/.bash_profile文件;

- 若文件不存在,则读取并执行~/.bash_login文件;

- 若文件不存在,则读取并执行~/.profile文件;

 

登出过程:

1. 读取并执行~/.bash_logout文件;

2. 读取并执行/etc/bash.bash_logout文件;

 

2、非交互式登陆shell

登陆过程:

1. 读取并执行/etc/profile文件;

2. 读取并执行~/.bash_profile文件;

- 若文件不存在,则读取并执行~/.bash_login文件;

- 若文件不存在,则读取并执行~/.profile文件;

 

无登出过程

 

3、交互式非登陆shell

1. 读取并执行~/.bashrc--rcfile选项指定的文件

其实“rc”系列startup文件还包括/etc/bashrc。但是系统并不直接调用这个文件,而是通过~/.bashrc文件显式地调用它。

 

startup文件的默认调用关系

1. ~/.bash_profile显式调用~/.bashrc文件;

2. ~/.bashrc显式调用/etc/bashrc文件

 

安全的全局配置设置

/etc/profile.d目录。这个目录用于存放个性化配置脚本,你可以把自己需要的全局配置放入以.sh结尾的文件中,系统在执行/etc/profile和/etc/bashrc文件时,都会择机调用它们

 

总结说明

  1. /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

  2. /etc/bashrc:为每一个运行bash      shell的用户执行此文件.当bash shell被打开时,该文件被读取.

  3. ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.

  4. ~/.bashrc:该文件包含专用于你的bash      shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)

  5. ~/.bash_logout:当每次退出系统(退出bash      shell)时,执行该文件.

  6. ~/.bash_profile      是交互式、login      方式进入bash 运行的;

~/.bashrc 是交互式 non-login 方式进入bash 运行的;

通常二者设置大致相同,所以通常前者会调用后者。所以一般优先把变量设置在.bashrc里面。比如在crontab里面执行一个命令,.bashrc设置的环境变量会生效,而.bash_profile不会

  1. “非交互非登陆”shell的配置文件可以由BASH_ENV环境变量指定

  2. 关于“.bash_profile”和“.bashrc”区别的总结

Linux中环境变量文件profile、bashrc、bash_profile之间的区别和联系

 

7如何优化Linux系统

  1. 不用root,添加普通用户,通过sudo授权管理

  2. 更改默认的远程连接SSH服务端口及禁止root用户远程连接

  3. 定时自动更新服务器时间

  4. 配置yum更新源,从国内更新源下载安装rpm包

  5. 关闭selinux及iptables(iptables工作场景如果有WAN ip 一般要打开,高并发除外)

  6. 调整文件描述符的数量,进程及文件的打开都会消耗文件描述符

  7. 定时自动清理邮件临时目录垃圾文件,防止indoes节点被占满(无sendmail可不配)

  8. 精简开机自启动服务(crond , sshd ,      network , rsyslog , sysstat)

  9. linux 内核参数优化/etc/sysctl.conf执行sysctl -p 生效

  10. 锁定关键系统文件

chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

处理完成后,将chattr,lsattr改名

echo alias chattr="cha" >>/root/.bashrc

echo alias lsattr="lsa" >>/root/.bashrc

            11.清空/etc/issue,取消系统及内核版本登录前的屏幕显示

            12.清楚无用的默认系统账户或组(非必须)


猜你喜欢

转载自blog.51cto.com/12758568/2123162