1. 程式人生 > >Linux 練習題-2基礎 問答

Linux 練習題-2基礎 問答

系統運維 Linux

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中可看到對終端登錄的定義,這個配置文件裏指定了命令),等待用戶登錄


技術分享圖片


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

技術分享圖片

3.CentOS6,7啟動區別

系統啟動和服務器守護進程管理器systemd,它不同於centos5Sysv initcentos6UpstartUbuntu制作出來),它在內核啟動後,服務什麽的全都被systemd接管,kernel只是用來管理硬件資源,相當於內核被架空了

技術分享圖片

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.清楚無用的默認系統賬戶或組(非必須)


Linux 練習題-2基礎 問答