在寫這篇隨筆時,翻看了一下上一篇隨筆的寫作日期,發現已經是4月8號了,時間已經過了11天了!!!過了這么久沒有更新Linux學習系列的隨筆了,是因為我又松懈了Linux的學習了嗎?不是的!!!是因為最近這段日子真的是發生了很多事。。。。
造成許久沒有更新Linux學習系列隨筆的原因:
①4.15-5.3這段時間報名參加了廣交會的實習,一共分為三期,基本每期都是工作4天,然后休息4天。。。所以基本只能在放假那幾天擠出時間來學習了
②電腦用的太久,里面囤下了太多的灰塵,導致電腦散熱非常差,基本上每天開機后不怎么用都會在1小時左右自動關機,不過今天已經將筆記本整個清潔了一次,電腦也終於正常工作了
③最近騰訊開始招聘2013實習生崗位,自己也投遞了簡歷,參加了筆試以及今天上午進行的一面。。。總結一點,自己還真的差很多啊!!!
綜合上述原因,使得自己這段時間沒有系統的學習Linux,所以Linux學習系列的隨筆也就沒有更新了,不過現在已經空下來了時間,趁着廣交會第一期放假這幾天,自己得抓緊時間多學一下,不能松懈了Linux的學習!!!!
縱觀之前的14篇Linux學習系列隨筆,基本上是學習了Linux的一些常用命令,以及如何在Linux下進行j2ee環境搭建等知識,應該說並沒有深入到Linux的學習當中,也沒有找一本Linux的書籍來細看,所以從這篇隨筆開始,自己准備好好地跟着Linux的書籍或者其他資料來深入的了解、學習Linux。為此,特地從圖書館借來了一本書,這本書應該也是Linux學習的入門書籍了--《鳥哥的Linux私房菜--基礎學習篇》,現在就先從基礎學習篇開始學習啦,后續還會繼續學習服務器篇。。。
所以從本隨筆開始,基本上就是通過細讀《鳥哥的Linux私房菜--基礎學習篇》這本書,來記錄下自己學習的一些點點滴滴以及一些心得,如有錯誤或者好的學習建議,還希望大家能夠指出來。。。
這篇隨筆主要記錄下Linux下的bc、man、shutdown等一些命令的用法及含義
一、bc (Linux系統下的一個簡單計算器)
在windows系統里,里面自帶了一個計算器的工具,我們可以用其進行各種計算,在Linux系統下也有一個簡單的計算器功能,我們通過 bc 命令就可以用其來進行一些簡單的計算。
[root@xiaoluo ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
-->>> 這這里輸入我們要進行的一些運算
此時我們就已經進入到了bc這個簡單計算器的工作環境中了,在這個簡單的計算器下我們可以進行如下的一些簡單運算:
+ 加法、- 減法、* 乘法、/ 除法、^ 指數、% 余數
例如:
12+15+12
39
12*5
60
10^2
100
10%3
1
10/3
3 -->> 為什么這里只是顯示3呢?那是因為bc默認輸出的是整數,如果我們要輸出小數,還需要執行一個scale命令,例如scale=3,則表示輸出三位小數。
scale=3
10/3
3.333
quit -> 退出當前的bc計算器命令
這個簡單的計算器功能就是這樣,通過bc這個命令,我們就可以在Linux系統下進行一些簡單的數據運算了。
二、man命令
Linux系統的命令非常非常的多,我們可以在bash下連續按兩次[Tab]鍵,就可以查看當前Linux中所擁有的命令條數,如:
[root@xiaoluo ~]# Display all 4221 possibilities? (y or n)
我們看到,在我安裝的CentOS6.4系統下,一共存在了4221條命令,所以這么多的命令我們都需要記住嗎?當然不能這么傻了,就像java的API一樣,那么多的類和方法,咱們不可能去每個都記住吧,所以我們如果需要使用某個命令時只需要google一下就行了。至於當我們拿到一個命令后,要如何使用它,這就需要問"男人"(man)了。我們在Linux里面流行了這樣一句話,如果不清楚一個命令的具體用法,就要找男人(man)。當然這個man是manual(操作說明)的簡寫,比如說我們要查看date這個命令的用法,就可以輸入 man date 這個命令來進行查看:
[root@xiaoluo ~]# man date DATE(1) User Commands DATE(1) NAME 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. -d, --date=STRING display time described by STRING, not ‘now’ -f, --file=DATEFILE like --date once for each line of DATEFILE -r, --reference=FILE display the last modification time of FILE -R, --rfc-2822 output date and time in RFC 2822 format. Example: Mon, 07 Aug
..............................................此處省略幾百字..................................................... DATE STRING 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 cal- endar date, time of day, time zone, day of week, relative time, rela- tive date, and numbers. An empty string indicates the beginning of the day. The date string format is more complex than is easily documented here but is fully described in the info documentation. ENVIRONMENT TZ Specifies the timezone, unless overridden by command line param- eters. If neither is specified, the setting from /etc/localtime is used. AUTHOR Written by David MacKenzie. REPORTING BUGS Report date bugs to bug-coreutils@gnu.org GNU coreutils home page: <http://www.gnu.org/software/coreutils/> General help using GNU software: <http://www.gnu.org/gethelp/> Report date translation bugs to <http://translationproject.org/team/> COPYRIGHT Copyright © 2010 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 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.4 June 2012 DATE(1
這樣的話我們就馬上可以知道date命令的具體用法了,而且也知道了date這個命令可以添加的一些參數,以及這些參數的信息,對於這個界面,我們將其稱作是man page(幫助頁)。我們可以看到在輸入 man date這個命令后第一行出現了 "DATE(1)",這里的DATE就是命令的名稱,(1)在這里表示的是"一般用戶可以使用的命令"。對於這個數字,在某些場合對我們還是很有幫助的,Linux的常見數字的含義如下:
常見數字的含義
| 代號 | 代表內容 |
| 1 | 使用者在shell環境中可以操作的命令或可運行文件 |
| 2 | 系統核心可呼叫的函數與工具等 |
| 3 | 一些常用的函數(function)與函式庫(library),大部分為C的函式庫(libc) |
| 4 | 裝置文件的說明,通常在/dev下的文件 |
| 5 | 配置文件或者是某些文件的格式 |
| 6 | 游戲(games) |
| 7 | 慣例與協議等,例如Linux文件系統、網絡協議、ASCII code等等的說明 |
| 8 | 系統管理員可用的管理命令 |
| 9 | 跟kernel有關的文件 |
在通過輸入 man date 命令后,我們發現其輸出信息有很多的字段,那么組成man page 的這些字段的含義又是代表什么意思呢?
man page 的組成部分
| 代號 | 內容說明 |
| NAME | 簡短的命令、數據名稱說明 |
| SYNOPSIS | 簡短的命令下達語法(syntax)簡介 |
| DESCRIPTION | 較為完整的說明,這部分最好仔細看看! |
| OPTIONS | 針對 SYNOPSIS 部分中,有列舉的所有可用的選項說明 |
| COMMANDS | 當這個程序(軟件)在運行的時候,可以在此程序(軟件)中下達的命令 |
| FILES | 這個程序或數據所使用或參考或連結到的某些文件 |
| SEE ALSO | 可以參考的,跟這個命令或數據有相關的其他說明! |
| EXAMPLE | 一些可以參考的范例 |
| BUGS | 是否有相關的錯誤! |
我們通常需要關注的就是NAME、DESCRIPTION這兩個字段,NAME就是代表了該命令的名稱,DESCRIPTION就是該命令的一些常見參數及其所代表的意思。我們在man page這個頁面進行命令的查詢時,通常也有一些常用的按鍵可以幫助我們:
man page 常用的按鍵
| 按鍵 | 進行工作 |
| 空格鍵 | 向下翻一頁 |
| [Page Down] | 向下翻一頁 |
| [Page Up] | 向上翻一頁 |
| [Home] | 去到第一頁 |
| [End] | 去到最后一頁 |
| /string | 向『下』搜尋 string 這個字符串,如果要搜尋 date 的話,就輸入 /date |
| ?string | 向『上』搜尋 string 這個字符串 |
| n, N | 利 用 / 或 ? 來搜尋字符串時,可以用 n 來繼續下一個搜尋 (不論是 / 或 ?) ,可以利用 N 來進行『反向』搜尋。舉例來說,我如果以 /date 搜尋 date 字符串, 那么可以 n 繼續往下查詢,用 N 往上查詢。若以 ?date 向上查詢 date 字符串, 那我可以用 n 繼續『向上』查詢,用 N 反向查詢。 |
| q |
結束這次的 man page |
注意:這些常用的按鍵只能是在man page 這個頁面下才能使用。
三、shutdown命令
在之前的隨筆中就有記錄下Linux系統的關機命令可以是 shutdown -h now ,重啟命令可以是 shutdown -r now 或者 reboot,而且關機命令、重啟命令只能是root才有權力執行。那么shutdown這個命令的具體語法規則是什么呢?shutdown命令可以實現什么呢?沒錯,咱們不知道就問 man
[root@xiaoluo ~]# man shutdown shutdown(8) //8就表示該命令是管理員才能執行的命令 shutdown(8) NAME shutdown - bring the system down SYNOPSIS shutdown [OPTION]... TIME [MESSAGE] OPTIONS -r Requests that the system be rebooted after it has been brought down. -h Requests that the system be either halted or powered off after it has been brought down, with the choice as to which left up to the system. -H Requests that the system be halted after it has been brought down. -P Requests that the system be powered off after it has been brought down. -c Cancels a running shutdown. TIME is not specified with this option, the first argument is MESSAGE. -k Only send out the warning messages and disable logins, do not actually bring the system down.
shutdown命令的語法規則為:
[root@xiaoluo ~]# shutdown [-t 秒] [-arkhncfF] 時間 [警告信息] 選項與參數: -t sec : -t 后面加秒數,亦即『過幾秒后關機』的意思 -k : 不要真的關機,只是發送警告信息出去! -r : 在將系統的服務停掉之后就重新啟動(常用) -h : 將系統的服務停掉后,立即關機。 (常用) -n : 不經過 init 程序,直接以 shutdown 的功能來關機 -f : 關機並啟動之后,強制略過 fsck 的磁盤檢查 -F : 系統重新啟動之后,強制進行 fsck 的磁盤檢查 -c : 取消已經在進行的 shutdown 命令內容。 時間 : 這是一定要加入的參數!指定系統關機的時間!時間的范例底下會說明。 范例: [root@xiaoluo ~]# shutdown -h 10 'I will shutdown after 10 mins' # 告訴大家,這部機器會在十分鍾后關機!並且會顯示在目前登陸者的屏幕前方!
如果我們需要關機時,比如設定某個時間關機,就必須要加入時間參數,否則此時會自動跳到1級運行級別(就是單用戶登陸情況)。
[root@xiaoluo ~]# shutdown -h now // 咱們平常關機最常用的一個命令 立刻關機,其中 now 相當於時間為 0 的狀態
[root@xiaoluo ~]# shutdown -h 23:25 系統在今天的 23:25 分會關機,若在23:50才下達此命令,則隔天才關機
[root@xiaoluo ~]# shutdown -h +10 系統再過十分鍾后自動關機
[root@xiaoluo ~]# shutdown -r now 系統立刻重新啟動
[root@xiaoluo ~]# shutdown -r +30 'The system will reboot' 再過三十分鍾系統會重新啟動,並顯示后面的信息給所有在在線的使用者
[root@xiaoluo ~]# shutdown -k now 'This system will reboot' 僅發出警告信件的參數!系統並不會關機!但是會給出警告信息!
shutdown命令有什么用呢?或者說shutdown命令可以做什么?
- 可以自由選擇關機模式:是要關機、重新啟動或進入單用戶操作模式均可;
- 可以配置關機時間: 可以配置成現在立刻關機, 也可以配置某一個特定的時間才關機。
- 可以自定義關機信息:在關機之前,可以將自己配置的信息傳送給在線 user 。
- 可以僅發出警告信息:有時有可能你要進行一些測試,而不想讓其他的使用者干擾, 或者是明白的告訴使用者某段時間要注意一下!這個時候可以使用 shutdown 來嚇一嚇使用者,但卻不是真的要關機啦!
- 可以選擇是否要 fsck 檢查文件系統 。
如果我們需要重啟的話,就直接使用 reboot 命令或者 shutdown -r now 即可。
四、sync 命令
這個命令雖然簡單,但是還是不得不記錄一下。sync命令是將數據同步到磁盤上。
在Linux系統中,為了加快數據的讀取速度,在默認的情況中, 某些已經加載內存中的數據將不會直接被寫回硬盤,而是先緩存在內存當中,如此一來, 如果一個數據被你重復的改寫,那么由於他尚未被寫入硬盤中,因此可以直接由內存當中讀取出來, 在速度上一定是快上相當多的!
不過,如此一來也造成些許的困擾,那就是萬一你的系統因為某些特殊情況造成不正常關機 (例如停電或者是不小心踢到power)時,由於數據尚未被寫入硬盤當中,哇!所以就會造成數據的升級不正常啦! 那要怎么辦呢?這個時候就需要sync這個命令來進行數據的寫入動作啦! 直接在文字接口下輸入sync,那么在內存中尚未被升級的數據,就會被寫入硬盤中!所以,這個命令在系統關機或重新啟動之前, 很重要喔!最好多運行幾次!該命令如下:
[root@xiaoluo ~]# sync
所以為了保險起見,我們在進行系統關機或者重啟之前,最好先多運行幾次sync命令,將內存中的數據同步到硬盤中:
[root@xiaoluo ~]# sync [root@xiaoluo ~]# sync [root@xiaoluo ~]# sync [root@xiaoluo ~]# shutdown -h now
本篇隨筆主要記錄了自己深入學習Linux的一些心得以及體會,后續學習中將會繼續記錄下自己的學習心得!!!
