應用領域:服務器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)組合。php
linux啓動:Linux系統的啓動過程能夠分爲5個階段:前端
運行級別:mysql
窗口切換:默認登陸就是第一個窗口,也就是tty1,這個六個窗口分別爲tty1,tty2 … tty6,你能夠按下Ctrl + Alt + F1 ~ F6 來切換它們。當你進入命令窗口界面後再返回圖形界面只要按下Ctrl + Alt + F7 就回來了。linux
Linux關機:正確的關機流程爲:sync > shutdown > reboot > haltnginx
sync 將數據由內存同步到硬盤中。 shutdown –h now 立馬關機 shutdown –h 20:25 系統會在今天20:25關機 shutdown –h +10 十分鐘後關機 shutdown –r now 系統立馬重啓 shutdown –r +10 系統十分鐘後重啓 reboot 就是重啓,等同於 shutdown –r now halt 關閉系統,等同於shutdown –h now 和 poweroff
Linux 忘記密碼:進入單用戶模式更改一下root密碼便可。git
遠程登錄:Linux系統中是經過ssh服務實現的遠程登陸功能,默認ssh服務端口號爲 22。Window系統上 Linux 遠程登陸客戶端有SecureCRT, Putty, SSH Secure Shell等,本文以Putty爲例來登陸遠程服務器。程序員
putty下載地址:http://www.putty.org/github
登陸系統後,在當前命令窗口下輸入命令ls /sql
文件基本操做docker
在Linux中第一個字符表明這個文件是目錄、文件或連接文件等等。
[root@www /]# ls -l total 64 dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot ……
文件屬主和屬組
[root@www /]# ls -l total 64 drwxr-xr-x 2 root root 4096 Feb 15 14:46 cron drwxr-xr-x 3 mysql mysql 4096 Apr 21 2014 mysql ……
chgrp [-R] 屬組名 文件名
chown [–R] 屬主名 文件名 chown [-R] 屬主名:屬組名 文件名
進入 /root 目錄(~)將install.log的擁有者改成bin這個帳號:
[root@www ~] cd ~ [root@www ~]# chown bin install.log [root@www ~]# ls -l -rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
將install.log的擁有者與羣組改回爲root:
[root@www ~]# chown root:root install.log [root@www ~]# ls -l -rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
Linux文件屬性有兩種設置方法,一種是數字,一種是符號。Linux文件的基本權限就有九個,分別是owner/group/others三種身份各有本身的read/write/execute權限。各權限的分數對照表以下:r:4,w:2,x:1
每種身份(owner/group/others)各自的三個權限(r/w/x)分數是須要累加的,例如當權限爲: [-rwxrwx---] 分數則是:
因此等一下咱們設定權限的變動時,該文件的權限數字就是770啦!變動權限的指令chmod的語法是這樣的:xyz : 就是剛剛提到的數字類型的權限屬性,爲 rwx 屬性數值的相加。
chmod [-R] xyz 文件或目錄
舉例來講,若是要將.bashrc這個文件全部的權限都設定啓用,那麼命令以下:
[root@www ~]# ls -al .bashrc -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod 777 .bashrc [root@www ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc
那若是要將權限變成 -rwxr-xr-- 呢?那麼權限的分數就成爲 [4+2+1][4+0+1][4+0+0]=754。
處理目錄的經常使用命令
ls: 列出目錄
cd:切換目錄
pwd:顯示目前的目錄
mkdir:建立一個新的目錄
rmdir:刪除一個空的目錄
cp: 複製文件或目錄
rm: 移除文件或目錄
mv: 移動文件與目錄,或修改文件與目錄的名稱
文件內容查看
cat 由第一行開始顯示文件內容
tac 從最後一行開始顯示,能夠看出 tac 是 cat 的倒著寫!
nl 顯示的時候,順道輸出行號!
more 一頁一頁的顯示文件內容
less 與 more 相似,可是比 more 更好的是,他能夠往前翻頁!
head 只看頭幾行
tail 只看尾巴幾行
實現用戶帳號的管理,要完成的工做主要有以下幾個方面:
用戶帳號的添加、刪除與修改。
# useradd –d /usr/sam -m sam
用戶口令的管理。用戶管理的一項重要內容是用戶口令的管理。用戶帳號剛建立時沒有口令,可是被系統鎖定,沒法使用,必須爲其指定口令後纔可使用,即便是指定空口令。
用戶組的管理。用戶組的管理涉及用戶組的添加、刪除和修改。組的增長、刪除和修改實際上就是對/etc/group文件的更新。
Linux磁盤管理好壞直接關係到整個系統的性能問題。Linux磁盤管理經常使用三個命令爲df、du和fdisk。
df:列出文件系統的總體磁盤使用量,能夠利用該命令來獲取硬盤被佔用了多少空間,目前還剩下多少空間等信息。
du:檢查磁盤空間使用量,Linux du命令是對文件和目錄磁盤使用的空間的查看。
fdisk:用於磁盤分區
列出全部分區信息:fdisk -l
Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。
基本上 vi/vim 共分爲三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。 這三種模式的做用分別是:
(1)命令模式
戶剛剛啓動 vi/vim,便進入了命令模式。此狀態下敲擊鍵盤動做會被Vim識別爲命令,而非輸入字符。好比咱們此時按下i,並不會輸入一個字符,i被看成了一個命令。如下是經常使用的幾個命令:
若想要編輯文本:啓動Vim,進入了命令模式,按下i,切換到輸入模式。命令模式只有一些最基本的命令,所以仍要依靠底線命令模式輸入更多命令。
(2)輸入模式
在命令模式下按下i就進入了輸入模式。在輸入模式中,可使用如下按鍵:
(3)底線命令模式
在命令模式下按下:(英文冒號)就進入了底線命令模式。底線命令模式能夠輸入單個或多個字符的命令,可用的命令很是多。在底線命令模式中,基本的命令有(已經省略了冒號):
按ESC鍵可隨時退出底線命令模式。簡單的說,咱們能夠將這三個模式想成底下的圖標來表示:
使用案例
建立文件,按下i進入編輯模式,Esc回到通常模式,:wq保存且退出,:q退出
$ vim runoob.txt
常見按鍵
yum( Yellow dog Updater, Modified)是一個Shell前端軟件包管理器。能夠自動處理依賴性關係,而且一次安裝全部依賴的軟體包,無須繁瑣地一次次下載、安裝。yum提供了查找、安裝、刪除某一個、一組甚至所有軟件包的命令,並且命令簡潔而又好記。
Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋樑。Shell 既是一種命令語言,又是一種程序設計語言。Shell 腳本(shell script),是一種爲 shell 編寫的腳本程序。shell 和 shell script 是兩個不一樣的概念。新建一個文件 test.sh,擴展名爲 sh(sh表明shell)保存爲 test.sh,並 cd 到相應目錄:
#!/bin/bash echo "這是個人第一行shell命令"
(1)做爲可執行程序運行
chmod +x ./test.sh #使腳本具備執行權限 ./test.sh #執行腳本
(2) 做爲解釋器參數運行
/bin/sh test.sh /bin/php test.php
your_name="runoob.com"
for file in `ls /etc` 或 for file in $(ls /etc)
以上語句將 /etc 下目錄的文件名循環出來。
#!/bin/bash myUrl="http://www.google.com" readonly myUrl
unset variable_name
your_name="runoob" # 使用雙引號拼接 greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 # 使用單引號拼接 greeting_2='hello, '$your_name' !' greeting_3='hello, ${your_name} !' echo $greeting_2 $greeting_3
string="abcd" echo ${#string} #輸出 4
string="runoob is a great site" echo ${string:1:4} # 輸出 unoo
string="runoob is a great site" echo `expr index "$string" io` # 輸出 4
元素用"空格"符號
分割開。定義數組的通常形式爲:數組名=(值1 值2 ... 值n) array_name=(value0 value1 value2 value3)
能夠不使用連續的下標,並且下標的範圍沒有限制。
array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen
讀取數組,使用 @ 符號能夠獲取數組中的全部元素
${數組名[下標]} valuen=${array_name[n]} echo ${array_name[@]}
獲取數組長度
# 取得數組元素的個數 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得數組單個元素的長度 lengthn=${#array_name[n]}
shell註釋。每一行加一個 # 號設置多行註釋,
向腳本傳遞參數,腳本內獲取參數的格式爲:$n。n 表明一個數字,1 爲執行腳本的第一個參數,2 爲執行腳本的第二個參數,以此類推……
#!/bin/bash echo "Shell 傳遞參數實例!"; echo "執行的文件名:$0"; echo "第一個參數爲:$1"; echo "第二個參數爲:$2"; echo "第三個參數爲:$3";
爲腳本設置可執行權限,並執行腳本,輸出結果以下所示:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 傳遞參數實例! 執行的文件名:./test.sh 第一個參數爲:1 第二個參數爲:2 第三個參數爲:3
原生bash不支持簡單的數學運算,可是能夠經過其餘命令來實現,例如 awk 和 expr,expr 最經常使用。expr
是一款表達式計算工具,使用它能完成表達式的求值操做。
(1)算數運算符:乘號(*)前邊必須加反斜槓()才能實現乘法運算;if...then...fi 是條件語句.
(2)關係運算符
(3)布爾運算符
(4)字符串運算符
(5)文件測試運算符
換行
結果定向到文件
echo "It is a test" > myfile
顯示當前時間
echo `date`
%s %c %d %f都是格式替代符;%-10s 指一個寬度爲10個字符(-表示左對齊,沒有則表示右對齊),任何字符都會被顯示在10個字符寬的字符內,若是不足則自動以空格填充,超過也會將內容所有顯示出來。%-4.2f 指格式化爲小數,其中.2指保留2位小數。
Python,Java、PHP等語言不同,sh的流程控制不可爲空.
使用中使用了 Bash let 命令,它用於執行一個或多個表達式,變量計算中不須要加上 $ 來表示變量
取值後面必須爲單詞in,每一模式必須以右括號結束。取值能夠爲變量或常數。匹配發現取值符合某一模式後,其間全部命令開始執行直至 ;;。取值將檢測匹配的每個模式。一旦模式匹配,則執行完匹配模式相應命令後再也不繼續其餘模式。若是無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。下面的腳本提示輸入1到4,與每一種模式進行匹配:
echo '輸入 1 到 4 之間的數字:' echo '你輸入的數字爲:' read aNum case $aNum in 1) echo '你選擇了 1' ;; 2) echo '你選擇了 2' ;; 3) echo '你選擇了 3' ;; 4) echo '你選擇了 4' ;; *) echo '你沒有輸入 1 到 4 之間的數字' ;; esac
#!/bin/bash while : do echo -n "輸入 1 到 5 之間的數字:" read aNum case $aNum in 1|2|3|4|5) echo "你輸入的數字爲 $aNum!" ;; *) echo "你輸入的數字不是 1 到 5 之間的! 遊戲結束" break ;; esac done
#!/bin/bash while : do echo -n "輸入 1 到 5 之間的數字: " read aNum case $aNum in 1|2|3|4|5) echo "你輸入的數字爲 $aNum!" ;; *) echo "你輸入的數字不是 1 到 5 之間的!" continue echo "遊戲結束" ;; esac done
#!/bin/bash funWithReturn(){ echo "這個函數會對輸入的兩個數字進行相加運算..." echo "輸入第一個數字: " read aNum echo "輸入第二個數字: " read anotherNum echo "兩個數字分別爲 $aNum 和 $anotherNum !" return $(($aNum+$anotherNum)) } funWithReturn echo "輸入的兩個數字之和爲 $? !"
函數返回值在調用該函數後經過 $? 來得到。
在Shell中,調用函數時能夠向其傳遞參數。在函數體內部,經過 n 的形式來獲取參數的值,例如,$1表示第一個參數,$2表示第二個參數...
funWithParam(){ echo "第一個參數爲 $1 !" echo "第二個參數爲 $2 !" echo "第十個參數爲 $10 !" echo "第十個參數爲 ${10} !" echo "第十一個參數爲 ${11} !" echo "參數總數有 $# 個!" echo "做爲一個字符串輸出全部參數 $* !" } funWithParam 1 2 3 4 5 6 7 8 9 34 73
$ echo "菜鳥教程:www.runoob.com" >> users $ cat users 菜鳥教程:www.runoob.com 菜鳥教程:www.runoob.com $
輸入重定向
通常狀況下,每一個 Unix/Linux 命令運行時都會打開三個文件:
默認狀況下,command > file 將 stdout 重定向到 file,command < file 將stdin 重定向到 file。注意:0 是標準輸入(STDIN),1 是標準輸出(STDOUT),2 是標準錯誤輸出(STDERR)。
$ command 2 > file
test1.sh 代碼以下:
#!/bin/bash url="http://www.runoob.com"
test2.sh 代碼以下:
#!/bin/bash #使用 . 號來引用test1.sh 文件 . ./test1.sh # 或者使用如下包含文件代碼 # source ./test1.sh echo "菜鳥教程官網地址:$url"
接下來,咱們爲 test2.sh 添加可執行權限並執行:
$ chmod +x test2.sh $ ./test2.sh 菜鳥教程官網地址:http://www.runoob.com
注:被包含的文件 test1.sh 不須要可執行權限
Nginx("engine x")是一款是由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器。在高鏈接併發的狀況下,Nginx是Apache服務器不錯的替代品。