Linux 7天系列 Day 2(轉)

別名的使用                                                                                            

     在上一節中,在查看當前目錄下的文件時,我說到了一個 ll  命令,看一樓回覆中說,他是 ls -l 命令的別名,不是所有的linux都有。
     別名嘛,顧名思義,不同的兩個名字指的是一個人,不同的兩個命令具有相同的作用。
現在,你一定很想知道自己的系統中都有哪些別名。
[root@localhost ~]# alias             查詢系統中的別名
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
 
如何定義別名,假如我在dos下用習慣了copy 而不想用cp ,那麼就可以爲cp 定義一個copy的別名。
[root@localhost ~]# alias copy=cp              將cp命令功能賦於給copy
[root@localhost ~]# alias drm="rm -rf"       將“ rm -rf ” 命令定義一個drm的別名。
 
[root@localhost ~]# unalias  copy       取消別名
 
 
vim/vi編輯器                                                                                     
 
  這一部分應該屬於重點了,關於vi 的東西很多,貌似出過幾本專門講vi的書。有牛人用這個編程序超快。對於我們大多人來說會使用就OK了
     vim/vi是一個功能強大的屏幕文本編輯器,是linux、UNIX 上最常用的文本編輯器,他的作用是建立、編輯、顯示文本文件。
     vim/vi 沒有菜單,只有命令。
  
  爲了便於操作,我們在copy一個有內容的文件拿來操作。
[root@localhost test]# cp /etc/services   services.test   拷貝/etc/services文件到當前目錄下。
  vim是vi 的加強版,當好多用戶還是習慣用vi 來編輯文件
[root@localhost test]# vim  services.test   進入文件

vi 的三種模式:

三種模式的轉換:
  命令模式 下輸入 a、i、o進入 插入模式
  插入模式 下按ESC進入  命令模式
  命令模式 下輸入 : (冒號)進入 編輯模式
  編輯模式 下指令錯誤則返回 命令模式

是不是覺得有點兒繞,其實,我們只要記着,vi 進入文件後,按 i 鍵可以對文件時行編輯了。
編輯完成後,按Esc 鍵退出編輯模式。退出有三中必須要記。
:q     是退出(文件沒發生更改時)
:q!    不保存退出(文件發生改變時)
:wq    保存並退出 vim/vi的具體操作    

瞭解下面的一些命令,有助於我們快速的編輯和使用vi 

命令模式:
 命令模式主要使用方向鍵移動光標位置進行文字的編輯,下面列出了常用的操作命令及含義
 上、下、左、右鍵盤和 h、j、k、l鍵分別都是移動光標方面的。
$ ------------移至行尾
0(零)  -----移至行首
H   ----------移至屏幕上端
M   ----------移至屏幕中央
L   ----------移至屏幕下端
gg   ---------到文件第一行
G   ----------到文件末尾
PageDn   ----- 向下移動一頁
PageUp  ----- 向上移動一頁
d+方向鍵 -----刪除文字
dd  -----刪除整行
pp -----整行復制
r  -----修改光標所在的字符
S  -----刪除光標所在的列,並進入輸入模式
 
插入模式:

可以通過以下命令由“命令模式”進入“插入模式”
a------------在當標後附加文本
A------------在本行行末附加文本
i-------------在光標前插入文本
I-------------在本行開始插入文本
o------------在光標下插入新行
O-----------在光標上插入新行
ESC--------退出“插入模式”
 
編輯模式:
編輯模式主要進行一些文字編輯輔助功能,比如字串搜索、替代、保存文件等操作。
:q -----結束Vi程序,如果文件有過修改,先保存文件
q! -----強制退出Vi程序
:wq -----保存修改並退出程序
:set nu -----使文本每一行前出現行號
:set nonu ------取消每一行前的行號
:n ------------到第n行


linux引導流程解析                                                                             

    這一部分屬於理論知識,感興趣的和我一起了解一下。
   linux的引導流程,也就是linux的啓動過程,啓動順序是是怎樣的,linux爲我們啓動了哪些服務。

系統引導流程:  

  1. BIOS自檢
  2. 啓動GRUB/LILO
  3. 加載內核
  4. 執行init進程
  5. 通過/etc/inittab文件進行初始化
 BIOS自檢 
     計算機在接通電源之後首先由BIOS進行自檢,即進行所謂的POST(Power On SelfTest),然後依據BIOS內設置的引導順序從硬盤、軟盤或CDROM中讀入“引導塊”。 在 PC 中,引導 Linux 是從 BIOS 中的地址 0xFFFF0 處開始的。BIOS 的第一個步驟是加電自檢(POST)。POST 的工作是對硬件進行檢測。BIOS 的第二個步驟是進行本地設備的枚舉和初始化。給定 BIOS 功能的不同用法之後,BIOS 由兩部分組成:POST 代碼和運行時服務。當 POST 完成之後,它被從內存中清理了出來,但是 BIOS 運行時服務依然保留在內存中,目標操作系統可以使用這些服務。
 
     要引導一個操作系統,BIOS 運行時會按照 CMOS 的設置定義的順序來搜索處於活動狀態並且可以引導的設備。引導設備可以是軟盤、CD-ROM、硬盤上的某個分區、網絡上的某個設備,甚至是 USB 閃存。通常,Linux 都是從硬盤上引導的,其中主引導記錄(MBR)中包含主引導加載程序。MBR 是一個 512 字節大小的扇區,位於磁盤上的第一個扇區中(0 道 0 柱面 1 扇區)。當 MBR 被加載到 RAM 中之後,BIOS 就會將控制權交給 MBR。
 
    提取 MBR 的信息
 
    要查看 MBR 的內容,請使用下面的命令:
 
    # dd if=/dev/hda of=mbr.bin bs=512 count=1 # od -xa mbr.bin 
 
    這個 dd 命令需要以 root 用戶的身份運行,它從 /dev/hda(第一個 IDE 盤) 上讀取前 512 個字節的內容,並將其寫入 mbr.bin 文件中。od 命令會以十六進制和 ASCII 碼格式打印這個二進制文件的內容。
 
啓動GRUB/LILO
 
    GRUB和LILO都是引導加載程序。最簡單地講,引導加載程序(boot loader) 會引導操作系統。當機器引導它的操作系統時,BIOS 會讀取引導介質上最前面的 512 字節(即人們所知的 主引導記錄(master boot record,MBR))。在單一的 MBR 中只能存儲一個操作系統的引導記錄,所以當需要多個操作系統時就會出現問題。所以需要更靈活的引導加載程序。
 
    GRUB 與 LILO 的比較
 
    如本文開始處所述,所有引導加載程序都以類似的方式工作,滿足共同的目的。不過,LILO 和 GRUB 之間有很多不同之處:
 * LILO 沒有交互式命令界面,而 GRUB 擁有。 
 * LILO 不支持網絡引導,而 GRUB 支持。 
 * LILO 將關於可以引導的操作系統位置的信息物理上存儲在 MBR 中。如果修改了 LILO 配置文件,必須將 LILO 第一階段引導加載程序重寫到 MBR。相對於 GRUB,這是一個更爲危險的選擇,因爲錯誤配置的 MBR 可能會讓系統無法引導。使用 GRUB,如果配置文件配置錯誤,則只是默認轉到 GRUB 命令行界面。
   
   安全提示:
     關於安全性,任何可以接觸到引導磁盤/CD 的人,只需要使用沒有設置安全性的 grub.conf 或 lilo.conf,就可以繞過本文中提及的所有安全措施。特別是使用 GRUB 時,因爲能夠引導到單用戶模式,所以是一個嚴重的安全漏洞。解決此問題的一個簡單方法是在機器的 BIOS 中禁止通過 CD 和軟盤進行引導,並確保爲 BIOS 設置了一個口令,使得其他人不能修改這些設置。
 
加載內核
 
    當內核映像被加載到內存之後,內核階段就開始了。內核映像並不是一個可執行的內核,而是一個壓縮過的內核映像。通常它是一個 zImage(壓縮映像,小於 512KB)或一個 bzImage(較大的壓縮映像,大於 512KB),它是提前使用 zlib 進行壓縮過的。在這個內核映像前面是一個例程,它實現少量硬件設置,並對內核映像中包含的內核進行解壓,然後將其放入高端內存中,如果有初始 RAM 磁盤映像,就會將它移動到內存中,並標明以後使用。然後該例程會調用內核,並開始啓動內核引導的過程。
 
    GRUB 中的手工引導
 
    在 GRUB 命令行中,我們可以使用 initrd 映像引導一個特定的內核,方法如下:
   [root@localhost hzh]# vi /etc/grub.conf    查看grub.conf的配置文件
   
   grub> kernel /bzImage-2.6.14.2
   [Linux-bzImage, setup=0x1400, size=0x29672e]
 
    grub> initrd /initrd-2.6.14.2.img
   [Linux-initrd @ 0x5f13000, 0xcc199 bytes]
 
    grub> boot
 
    Uncompressing Linux... Ok, booting the kernel.
如果您不知道要引導的內核的名稱,只需使用斜線(/)然後按下 Tab 鍵即可。GRUB 會顯示內核和 initrd 映像列表。
 
執行init進程
 
    init進程是系統所有進程的起點,內核在完成核內引導以後,即在本線程(進程)空間內加載init程序,它的進程號是1。init進程是所有進程的發起者和控制者。因爲在任何基於Unix的系統(比如Linux)中,它都是第一個運行的進程,所以init進程的編號(Process ID,PID)永遠是1。如果init出現了問題,系統的其餘部分也就隨之而垮掉了。
 
    init進程有兩個作用。第一個作用是扮演終結父進程的角色。因爲init進程永遠不會被終止,所以系統總是可以確信它的存在,並在必要的時候以它爲參照。如果某個進程在它衍生出來的全部子進程結束之前被終止,就會出現必須以init爲參照的情況。此時那些失去了父進程的子進程就都會以init作爲它們的父進程。快速執行一下ps -af 命令,可以列出許多父進程ID(Parent Process ID,PPID)爲1的進程來。
 
    init的第二個角色是在進入某個特定的運行級別(Runlevel)時運行相應的程序,以此對各種運行級別進行管理。它的這個作用是由/etc/inittab文件定義的。
 
通過/etc/inittab文件進行初始化
 
    init的工作是根據/etc/inittab來執行相應的腳本進行系統初始化,如設置鍵盤、字體, 裝載模塊,設置網絡,等等。
 
    對於RedhatLinux來說,執行的順序爲: 
複製代碼
/etc/rc.d/rc.sysinit            # 由init執行的第一個腳本 
/etc/rc.d/rc.sysinit主要做在各個運行模式中相同的初始化工作,包括: 
設置初始的$PATH變量。
配置網絡。
爲虛擬內存啓動交換。
設置系統的主機名。
檢查root文件系統,以進行必要的修復。
檢查root文件系統的配額。
爲root文件系統打開用戶和組的配額。
以讀/寫的方式重新裝載root文件系統。
清除被裝載的文件系統表/etc/mtab。
把root文件系統輸入到mtab。
使系統爲裝入模塊做準備。
查找模塊的相關文件。
檢查文件系統,以進行必要的修復。
加載所有其他文件系統。
清除幾個/etc文件:/etc/mtab、/etc/fastboot和/etc/nologin。
刪除UUCP的lock文件。
刪除過時的子系統文件。
刪除過時的pid文件。
設置系統時鐘。
打開交換。
初始化串行端口。
裝入模塊。
/etc/rc.d/rcX.d/[KS]
複製代碼
 
    首先終止“K”開頭的服務,然後啓動“S”開頭的服務。
 
    對每一個運行級別來說,在/etc/rc.d子目錄中都有一個對應的下級目錄。這些運行級別的下級子目錄的命名方法是rcX.d,其中的X就是代表運行級別的數字。比如說,運行級別3的全部命令腳本程序都保存在/etc/rc.d/rc3.d子目錄中。在各個運行級別的子目錄中,都建立有到/etc/rc.d/init.d子目錄中命令腳本程序的符號鏈接,但是,這些符號鏈接並不使用命令腳本程序在 /etc/rc.d/init.d子目錄中原來的名字。如果命令腳本程序是用來啓動一個服務的,其符號鏈接的名字就以字母S打頭;如果命令腳本程序是用來關閉一個服務的,其符號鏈接的名字就以字母K打頭。許多情況下,這些命令腳本程序的執行順序都很重要。如果沒有先配置網絡接口,就沒有辦法使用DNS服務解析主機名!爲了安排它們的執行順序,在字母S或者 K的後面緊跟着一個兩位數字,數值小的在數值大的前面執行。比如:/etc/rc.d/rc3.d/S50inet就會在 /etc/rc.d/rc3.d/S55named之前執行。存放在/etc/rc.d/init.d子目錄中的、被符號鏈接上的命令腳本程序是真正的實幹家,是它們完成了啓動或者停止各種服務的操作過程。當 /etc/rc.d/rc運行通過每個特定的運行級別子目錄的時候,它會根據數字的順序依次調用各個命令腳本程序執行。它先運行以字母K打頭的命令腳本程序,然後再運行以字母S打頭的命令腳本程序。對以字母K打頭的命令腳本程序來說,會傳遞Stop參數;類似地對以字母S打頭的命令腳本程序來說,會傳遞 Start參數。
    執行/etc/ec.d/rc.local
Redhat Linux中的運行模式2、3、5都把/etc/rc.d/rc.local做爲初始化腳本中的最後一個,所以用戶可以自己在這個文件中添加一些需要在其他初始化工作之後,登錄之前執行的命令。在維護Linux系統運轉的日子裏,肯定會遇到需要系統管理員對開機或者關機命令腳本進行修改的情況。如果所做的修改只在引導開機的時候起作用,並且改動不大的話,可以考慮簡單地編輯一下/etc/rc.d/rc.local腳本。這個命令腳本程序是在引導過程的最後一步被執行的。
    執行 /bin/login 程式    
            
login 程序會提示使用者需輸入賬號及密碼, 接着編碼並確認密碼的正確性, 若二者相合, 則爲使用者進行初始化環境, 並將控制權交給 shell,即等待用戶登錄。多次爲止Linux啓動過程全部結束。
 
 
修改本機的軟硬件時間                                                                        
 
       關於,修改系統的軟硬件時間,對新手來說不是特別重要,軟件(指的系統時間)時間很好修改,硬件(指CMOS時間)時間就不知道怎麼修改了。不感興趣的可以無視。
   
[root@localhost hzh]# date           查看本機的軟件時鐘
[root@localhost hzh]# hwclock       查看本機的硬件時鐘
[root@localhost hzh]# hwclock   --help
--set         set the rtc to the time given with --date
--hctosys     set the system time from the hardware clock       
--systohc     set the hardware clock to the current system time

  假如有一個時間是錯的,我們可以通過上面的命令進行修改。
[root@localhost hzh]# hwclock  --hctosys 設置系統時間與硬件時間對應。
[root@localhost hzh]# hwclock  --systohc  設置硬件時間與系統時間對應。

  假如兩個時間都是錯誤的,我們可以自己設置時間
[root@localhost hzh]# hwclock  --set --data="月/日/年  時:分:秒"

發佈了7 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章