目錄 gun組織 項目 Linux版本 指令下達和執行 如何關機 linux Base gun組織 項目 copyleft:代表無版權。 copyright:代表有版權 opensource:開放源代碼、軟體誰都可以使用、誰都可以傳播、都可二次開發 free:免費 GPL:通用許可證協議,如果軟體打 ...
目錄
linux Base
gun組織
項目
copyleft:代表無版權。
copyright:代表有版權
opensource:開放源代碼、軟體誰都可以使用、誰都可以傳播、都可二次開發
free:免費
GPL:通用許可證協議,如果軟體打上GPL任何人都可對其進行修改,但是修改完以後必鬚髮布出來。
口號:團結就是力量
Linux系統之父:linus Torvalds 林納斯.托瓦茲
Linux版本
我們現在所說的Linux都是發行版distribution version;就是Linux內核加上各種gun的庫文件、應用程式構造而成的操作系統
各版本
Redhat:企業級操作系統
centos:社區企業級操作系統
Ubuntu社區維護,主要做手機系統和電腦桌面系統
以及debian系統等等。。。
指令下達和執行
[dmtsai@study ~]$ command [-options] parameter1 parameter2 ...
指令 選項 參數(1) 參數(2)
-
一行指令中第一個輸入的部分絕對是“指令(command)”或“可可執行文件案(例如批次腳本,script)”
-
command 為指令的名稱,例如變換工作目錄的指令為 cd 等等;
-
中刮號[]並不存在於實際的指令中,而加入選項設置時,通常選項前會帶 - 號,例如 -h;有時候會使用選項的完整全名,則選項前帶有 -- 符號,例如 --help;
-
parameter1 parameter2.. 為依附在選項後面的參數,或者是 command 的參數;
-
指令, 選項, 參數等這幾個咚咚中間以空格來區分,不論空幾格 shell 都視為一格。所以空格是很重要的特殊字元!;
-
按下[Enter]按鍵後,該指令就立即執行。[Enter]按鍵代表著一行指令的開始啟動。
-
指令太長的時候,可以使用反斜線 (\) 來跳脫[Enter]符號,使指令連續到下一行。註意!反斜線後就立刻接特殊字元,才能跳脫!
-
其他:在 Linux 系統中,英文大小寫字母是不一樣的。舉例來說, cd 與 CD 並不同。
ls這個指令列出自己的主文件夾(區分大小寫)
-
幾個基本且好玩,有用的指令
-
顯示時間與日期的指令:dat
-
顯示日曆的指令: cal
[dmtsai@study ~]$ cal [month] [year]
-
簡單好用的電腦: bc
如果要輸出小數點下位
數,那麼就必須要執行 scale=number ,那個number就是小數點位數 -
查詢幫助的:help/man
-
-
幾個熱鍵
[Tab], [ctrl]-c, [ctrl]-d``[Tab]
接在一串指令的第一個字的後面,則為“命令補全”;
接在一串指令的第二個字以後時,則為“文件補齊”!
若安裝bash-completion
軟體,則在某些指令後面使用 [tab] 按鍵時,可以進行“選項/參數的補齊”功能!
善用[tab]
按鍵真的是個很好的習慣!可以讓你避免掉很多輸入錯誤的機會!
[ctrl]-c
:讓當前的程式“停掉”的
[ctrl]-d
:鍵盤輸入結束(End Of File, EOF 或 End Of Input)”的意思! 另外,他也可以用來取代exit的輸入呢!例如你想要直接離開命令行,可以直接按下[Ctrl]-d就能夠直接離開了(相當於輸入exit啊!)
錯誤信訊息的察看
[dmtsai@study ~]$ DATE
bash: DATE: command not found... # 這裡顯示錯誤的訊息
Similar command is: 'date' # 這裡竟然給你一個可能的解決方案耶!
上面的bach:表示的是我們的shell的名稱,上面例子的錯誤bash會告訴你出現了什麼錯誤:
command not found
出現這種情況可能原因是這條指令不存在或者你打錯了。
-
man(man page) 指令詳情
[dmtsai@study ~]$ man date DATE(1) User Commands DATE(1) # 請註意上面這個括弧內的數字 NAME <==這個指令的完整全名,如下所示為date且說明簡單用途為設置與顯示日期/時間 date - print or set the system date and time SYNOPSIS <==這個指令的基本語法如下所示 date [OPTION]... [+FORMAT] <==第一種單純顯示的用法 date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] <==這種可以設置系統時間的用法 DESCRIPTION <==詳細說明剛剛語法談到的選項與參數的用法 Display the current time in the given FORMAT, or set the system date. Mandatory arguments to long options are mandatory for short options too. -d, --date=STRING <==左邊-d為短選項名稱,右邊--date為完整選項名稱 display time described by STRING, not 'now' -f, --file=DATEFILE like --date once for each line of DATEFILE -I[TIMESPEC], --iso-8601[=TIMESPEC] output date/time in ISO 8601 format. TIMESPEC='date' for date only (the default), 'hours', 'minutes', 'seconds', or 'ns' for date and time to the indicated precision. ....(中間省略).... # 找到了!下麵就是格式化輸出的詳細數據! FORMAT controls the output. Interpreted sequences are: %% a literal % %a locale's abbreviated weekday name (e.g., Sun) %A locale's full weekday name (e.g., Sunday) ....(中間省略).... ENVIRONMENT <==與這個指令相關的環境參數有如下的說明 TZ Specifies the timezone, unless overridden by command line parameters. If neither is specified, the setting from /etc/localtime is used. EXAMPLES <==一堆可用的範本 Convert seconds since the epoch (1970-01-01 UTC) to a date $ date --date='@2147483647' ....(中間省略).... DATE STRING <==上面曾提到的 --date 的格式說明! The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next Thursday". A date string may contain items indicating calendar date, time of day, time zone, day of AUTHOR <==這個指令的作者啦! Written by David MacKenzie. COPYRIGHT <==受到著作權法的保護!用的就是 GPL 了! Copyright © 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO <==這個重要,你還可以從哪裡查到與date相關的說明文檔之意 The full documentation for date is maintained as a Texinfo manual. If the info and date programs are properly installed at your site, the command info coreutils 'date invocation' should give you access to the complete manual. GNU coreutils 8.22 June 2014 DATE
表格的第一行,你可以看到的是:“DATE(1)”,DATE我們知道是指令的名
稱, 那麼(1)代表什麼呢?他代表的是“一般使用者可使用的指令”的意思!咦!還有這個用
意啊!呵呵! 沒錯~在查詢數據的後面的數字是有意義的喔!他可以幫助我們瞭解或者是直
接查詢相關的數據。 常見的幾個數字的意義是這樣的:
1 | 使用者在shell環境中可以操作的指令或可可執行文件 |
---|---|
2 | 系統核心可調用的函數與工具等 |
3 | 一些常用的函數(function)與函數庫(library),大部分為C的函數庫(libc) |
4 | 設備文件的說明,通常在/dev下的文件 |
5 | 配置文件或者是某些文件的格式 |
6 | 游戲(games) |
7 | 慣例與協定等,例如Linux文件系統、網路協定、ASCII code等等的說明 |
8 | 系統管理員可用的管理指令 |
9 | 跟kernel有關的文件 |
上表中的1, 5, 8這三個號碼特別重要,也請讀者要將這三個數字所代表的意義背下來喔!
man page的內容也分成好幾個部分來加以介紹該指令呢!就是上頭man date那個表格內, 以NAME作為開始介紹,最後還有個SEE ALSO來作為結束。基本上,man page大致分成下麵這幾個部分:
NAME | 簡短的指令、數據名稱說明 |
---|---|
SYNOPSIS | 簡短的指令下達語法(syntax)簡介 |
DESCRIPTION | 較為完整的說明,這部分最好仔細看看! |
OPTIONS | 針對SYNOPSIS部分中,有列舉的所有可用的選項說明 |
COMMANDS | 當這個程式(軟體)在執行的時候,可以再此程式(軟體)中下達的指令 |
FILES | 這個程式或數據所使用或者參考或鏈接到的某些文件 |
SEE ALSO | 可以參考的,跟這個指令或者數據有相關的其他說明 |
EXAMPLE | 一些可以參考的範例 |
空白鍵 | 向下翻一頁 |
/string | 向“下”搜尋 string 這個字串,如果要搜尋 vbird 的話,就輸入 /vbird |
?string | 向“上”搜尋 string 這個字串 |
n,N | 利用 / 或 ? 來搜尋字串時,可以用 n 來繼續下一個搜尋 (不論是 / 或 ?) ,可以利用 N 來進行“反向”搜尋。舉例來說,以 /vbird 搜尋 vbird 字串, 那麼可以 n 繼續往下查詢,用 N 往上查詢。若以 ?vbird 向上查詢 vbird 字串, 那可以用 n 繼續“向上”查詢,用 N 反向查詢。 |
q | 結束這次的 man page |
-
上述表格說明
有時候除了這些外,還可能會看到Authors與Copyright等,不過也有很多時候僅有NAME與
DESCRIPTION等部分。 通常鳥哥在查詢某個數據時是這樣來查閱的:-
先察看NAME的項目,約略看一下這個數據的意思;
-
再詳看一下DESCRIPTION,這個部分會提到很多相關的數據與使用時機,從這個地方可以學到很多小細節呢;
-
而如果這個指令其實很熟悉了(例如上面的date),那麼鳥哥主要就是查詢關於OPTIONS的部分了! 可以知道每個選項的意義,這樣就可以下達比較細部的指令內容呢!
-
最後,再看一下,跟這個數據有關的還有哪些東西可以使用的?舉例來說,上面的SEE ALSO就告知我們還可以利用“info coreutils date”來進一步查閱數據;
-
某些說明內容還會列舉有關的文件(FILES 部分)來提供我們參考!這些都是很有幫助的!
-
如何關機
最大的問題是,若不正常關機,則可能造成文件系統的毀損 (因為來不及將數據回寫
到文件中,所以有些服務的文件會有問題!)。所以正常情況下,要關機時需要註意下麵幾
件事:
-
觀察系統的使用狀態: 如果要看目前有誰線上上,可以下達“who”這個指令,而如果要看網路的連線狀態,可以下達 “ netstat -a ”這個指令,而要看背景執行的程式可以執行“ ps -aux ”這個指令。使用這些指令可以讓你稍微瞭解主機目前的使用狀態!當然啰,就可以讓你判斷是否可以關機了 (這些指令在後面Linux常用指令中會提及喔!)
-
通知線上使用者關機的時刻: 要關機前總得給線上的使用者一些時間來結束他們的工作,所以,這個時候你可以使用 shutdown 的特別指令來達到此一功能。
-
正確的關機指令使用: 例如 shutdown 與 reboot 兩個指令!所以下麵我們就來談一談幾個與關機/重新開機相關的指令啰!
-
將數據同步寫入硬碟中的指令: sync
我們談到過數據在電腦中運行的模式, 所有的數據都得要被讀入記憶體後才能夠被CPU所處理,但是數據又常常需要由記憶體寫回硬碟當中(例如儲存的動作)。 由於硬碟的速度太慢(相對於記憶體來說),如果常常讓數據在記憶體與硬碟中來回寫入/讀出,系統的性能就不會太好。因此在Linux系統中,為了加快數據的讀取速度,所以在預設的情況中, 某些已經載入記憶體中的數據將不會直接被寫回硬碟,而是先暫存在記憶體當中,如此一來, 如果一個數據被你重覆的改寫,那麼由於他尚未被寫入硬碟中,因此可以直接由記憶體當中讀取出來, 在速度上一定是快上相當多的!
不過,如此一來也造成些許的困擾,那就是萬一你的系統因為某些特殊情況造成不正常關機(例如停電或者是不小心踢到power)時,由於數據尚未被寫入硬碟當中,哇!所以就會成數據的更新不正常啦! 那要怎麼辦呢?這個時候就需要sync這個指令來進行數據的寫入動作啦! 直接在命令行下輸入sync,那麼在記憶體中尚未被更新的數據,就會被寫入硬碟中!所以,這個指令在系統關機或重新開機之前, 很重要喔!最好多執行幾次!
雖然目前的 shutdown/reboot/halt 等等指令均已經在關機前進行了 sync 這個工具的調用,不過,多做幾次總是比較放心點~呵呵~
[dmtsai@study ~]$ su - # 這個指令在讓你的身份變成 root !下麵請輸入 root 的密碼! Password: # 就這裡!請輸入安裝時你所設置的 root 密碼! Last login: Mon Jun 1 16:10:12 CST 2015 on pts/0 [root@study ~]# sync
事實上sync也可以被一般帳號使用喔!只不過一般帳號使用者所更新的硬碟數據就僅有自己的數據,不像root可以更新整個系統中的數據了
-
慣用的關機指令: shutdown
由於Linux的關機是那麼重要的工作,因此除了你是在主機前面以實體終端機 (tty1~tty7) 來登陸系統時, 不論用什麼身份都能夠關機之外,若你是使用遠端管理工具(如通過pietty使用ssh服務來從其他電腦登陸主機), 那關機就只有root有權力而喔!
嗯!那麼就來關機試試看吧!我們較常使用的是shutdown這個指令,而這個指令會通知系統內的各個程式 (processes),並且將通知系統中的一些服務來關閉。shutdown可以達成如下的工作:
-
可以自由選擇關機模式:是要關機或重新開機均可;
-
可以設置關機時間: 可以設置成現在立刻關機, 也可以設置某一個特定的時間才關機。
-
可以自訂關機訊息:在關機之前,可以將自己設置的訊息傳送給線上 user 。
-
可以僅發出警告訊息:有時有可能你要進行一些測試,而不想讓其他的使用者干擾,或者是明白的告訴使用者某段時間要註意一下!這個時候可以使用 shutdown 來嚇一嚇使用者,但卻不是真的要關機啦!
簡單的語法規則
[root@study ~]# /sbin/shutdown [-krhc] [時間] [警告訊息] 選項與參數: -k : 不要真的關機,只是發送警告訊息出去! -r : 在將系統的服務停掉之後就重新開機(常用) -h : 將系統的服務停掉後,立即關機。 (常用) -c : 取消已經在進行的 shutdown 指令內容。 時間 : 指定系統關機的時間!時間的範例下麵會說明。若沒有這個項目,則預設 1 分鐘後自動進行。 範例: [root@study ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins' Broadcast message from [email protected] (Tue 2015-06-02 10:51:34 CST): I will shutdown after 10 mins The system is going down for power-off at Tue 2015-06-02 11:01:34 CST!
執行完這個指令之後,十分鐘後機子關機,可以輸入“shutdown -c“取消本次指令,如果什麼參數都沒有輸入則預設為一分鐘之內關機
[root@study ~]# shutdown -h now 立刻關機,其中 now 相當於時間為 0 的狀態 [root@study ~]# shutdown -h 20:25 系統在今天的 20:25 分會關機,若在21:25才下達此指令,則隔天才關機 [root@study ~]# shutdown -h +10 系統再過十分鐘後自動關機 [root@study ~]# shutdown -r now 系統立刻重新開機 [root@study ~]# shutdown -r +30 'The system will reboot' 再過三十分鐘系統會重新開機,並顯示後面的訊息給所有線上上的使用者 [root@study ~]# shutdown -k now 'This system will reboot' 僅發出警告信件的參數!系統並不會關機啦!嚇唬人!
-
-
重新開機,關機: reboot, halt, poweroff
還有三個指令可以進行重新開機與關機的任務,那就是reboot, halt, poweroff。 其實這三個指令調用的函數庫都差不多,所以當你使用“man reboot”時,會同時出現三個指令的用法給你看呢。 其實鳥哥通常都只有記poweroff與reboot這兩個指令啦!一般鳥哥在重新開機時,都會下達如下的指令喔:
[root@study ~]# sync; sync; sync; reboot
既然這些指令都能夠關機或重新開機,那他有沒有什麼差異啊?基本上,在預設的情況下,
這幾個指令都會完成一樣的工作!(全部的動作都是去調用 systemctl 這個重要的管理命
令!) 所以,你只要記得其中一個就好了!重點是,你自己習慣即可!更多功能去man一下
[root@study ~]# halt # 系統停止~屏幕可能會保留系統已經停止的訊息! [root@study ~]# poweroff # 系統關機,所以沒有提供額外的電力,屏幕空白!
-
實際使用管理工具 systemctl 關機
如果你是個老手,那麼一定會知道有個名為 init 的指令,這個指令可以切換不同的執行等級~ 執行等級共有 0~6 七個,其中 0 就是關機、6 就是重新開機等等。不過,這個init目前只是一個相容模式而已~ 所以在 CentOS 7 當中,雖然你依舊可以使用“ init 0 ”來關機,但是那已經跟所謂的“執行等級”無關了!
那目前系統中所有服務的管理是使用哪個指令呢?那就是 systemctl 啦!這個指令相當的複雜!我們會在很後面系統管理員部份才講的到! 目前你只要學習 systemctl 當中與關機有關的部份即可。要註意,上面談到的 halt, poweroff, reboot, shutdown 等等,其實都是調用這個
systemctl 指令的喔! 這個指令跟關機有關的語法如下:
[root@study ~]# systemctl [指令] 指令項目包括如下: halt 進入系統停止的模式,屏幕可能會保留一些訊息,這與你的電源管理模式有關 poweroff 進入系統關機模式,直接關機沒有提供電力喔! reboot 直接重新開機 suspend 進入休眠模式 [root@study ~]# systemctl reboot # 系統重新開機 [root@study ~]# systemctl poweroff # 系統關機
-
Linux系統關機/重啟是很重大的系統運行,因此只有root才能夠進行。