Linux中一切皆文件 內核 + 文件系統 + shell = Linux 文件系統結構:文件進行讀寫 Linux是一個樹形的文件系統結構 第一層目錄:/ 整個文件系統的訪問入口
bin:存儲Linux上經常使用的命令 dev:放置設備的目錄 etc:Linux配置文件目錄 home:普通用戶會在該目錄下建立屬於本身的目錄 root:管理員用戶家目錄 media:即插即用型的設備的掛載目錄,光盤自動掛載到media目錄下 mnt:掛載目錄 將硬盤中的分區(C/D/E)與目錄進行關聯 /datas/cpan 《- C分區 /datas/Dpan 《- D分區 /datas/Epan 《- E分區 opt:可選目錄 usr:放安裝的應用程序 sbin:只有管理員才能執行的命令 var:Linux日誌默認存儲目錄
用於切換當前目錄,它的參數是要切換到的目錄的路徑,能夠是絕對路徑,也能夠是相對路徑。 cd /root/Docements # 切換到目錄/root/Docements cd ./path # 切換到當前目錄下的path目錄中,「.」表示當前目錄 cd ../path # 切換到上層目錄中的path目錄中,「..」表示上一層目錄
ls 用於列舉一個目錄或者文件 ls -a 顯示全部文件及目錄,包括隱藏文件 ls -l 顯示文件詳細信息 eg. ls -a
grep命令html
該命令經常使用於分析一行的信息,若當中有咱們所須要的信息,就將該行顯示出來,該命令一般與管道命令一塊兒使用,用於對一些命令的輸出進行篩選加工等等,它的簡單語法爲 -a :將binary文件以text文件的方式查找數據 -c :計算找到‘查找字符串’的次數 -i :忽略大小寫的區別,即把大小寫視爲相同 -v :反向選擇,即顯示出沒有‘查找字符串’內容的那一行 # 例如: # 取出文件/etc/man.config中包含MANPATH的行,並把找到的關鍵字加上顏色 grep --color=auto 'MANPATH' /etc/man.config # 把ls -l的輸出中包含字母file(不區分大小寫)的內容輸出 ls -l | grep -i file
find是一個基於查找的功能很是強大的命令,相對而言,它的使用也相對較爲複雜,參數也比較多,因此在這裏將給把它們分類列出,它的基本語法以下:java
find [PATH] [option] [action] # 與時間有關的參數: -mtime n : n爲數字,意思爲在n天以前的「一天內」被更改過的文件; -mtime +n : 列出在n天以前(不含n天自己)被更改過的文件名; -mtime -n : 列出在n天以內(含n天自己)被更改過的文件名; -newer file : 列出比file還要新的文件名 # 例如: find /root -mtime 0 # 在當前目錄下查找今天以內有改動的文件 # 與用戶或用戶組名有關的參數: -user name : 列出文件全部者爲name的文件 -group name : 列出文件所屬用戶組爲name的文件 -uid n : 列出文件全部者爲用戶ID爲n的文件 -gid n : 列出文件所屬用戶組爲用戶組ID爲n的文件 # 例如: find /home/ljianhui -user ljianhui # 在目錄/home/ljianhui中找出全部者爲ljianhui的文件 # 與文件權限及名稱有關的參數: -name filename :找出文件名爲filename的文件 -size [+-]SIZE :找出比SIZE還要大(+)或小(-)的文件 -tpye TYPE :查找文件的類型爲TYPE的文件,TYPE的值主要有:通常文件(f)、設備文件(b、c)、 目錄(d)、鏈接文件(l)、socket(s)、FIFO管道文件(p); -perm mode :查找文件權限恰好等於mode的文件,mode用數字表示,如0755; -perm -mode :查找文件權限必需要所有包括mode權限的文件,mode用數字表示 -perm +mode :查找文件權限包含任一mode的權限的文件,mode用數字表示 # 例如: find / -name passwd # 查找文件名爲passwd的文件 find . -perm 0755 # 查找當前目錄中文件權限的0755的文件 find . -size +12k # 查找當前目錄中大於12KB的文件,注意c表示byte
該命令用於複製文件,copy之意,它還能夠把多個文件一次性地複製到一個目錄下,它的經常使用參數以下:node
-a :將文件的特性一塊兒複製 -p :連同文件的屬性一塊兒複製,而非使用默認方式,與-a類似,經常使用於備份 -i :若目標文件已經存在時,在覆蓋時會先詢問操做的進行 -r :遞歸持續複製,用於目錄的複製行爲 -u :目標文件與源文件有差別時纔會複製 eg. cp -a file1 file2 #連同文件的全部特性把文件file1複製成文件file2 cp file1 file2 file3 dir #把文件file一、file二、file3複製到目錄dir中
該命令用於移動文件、目錄或改名,move之意,它的經常使用參數以下:mysql
-f :force強制的意思,若是目標文件已經存在,不會詢問而直接覆蓋 -i :若目標文件已經存在,就會詢問是否覆蓋 -u :若目標文件已經存在,且比目標文件新,纔會更新 mv file1 file2 file3 dir # 把文件file一、file二、file3移動到目錄dir中 mv file1 file2 # 把文件file1重命名爲file2
該命令用於刪除文件或目錄,remove之間,它的經常使用參數以下:linux
-f :就是force的意思,忽略不存在的文件,不會出現警告消息 -i :互動模式,在刪除前會詢問用戶是否操做 -r :遞歸刪除,最經常使用於目錄刪除,它是一個很是危險的參數 eg. rm -i file # 刪除文件file,在刪除以前會詢問是否進行該操做 rm -fr dir # 強制刪除目錄dir中的全部文件
該命令用於將某個時間點的進程運行狀況選取下來並輸出,process之意,它的經常使用參數以下:redis
-A :全部的進程均顯示出來 -a :不與terminal有關的全部進程 -u :有效用戶的相關進程 -x :通常與a參數一塊兒使用,可列出較完整的信息 -l :較長,較詳細地將PID的信息列出 eg. ps aux # 查看系統全部的進程數據 ps ax # 查看不與terminal有關的全部進程 ps -lA # 查看系統全部的進程數據 ps axjf # 查看連同一部分進程樹狀態
該命令用於向某個工做(%jobnumber)或者是某個PID(數字)傳送一個信號,它一般與ps和jobs命令一塊兒使用,它的基本語法以下:sql
kill -signal PID 1:SIGHUP,啓動被終止的進程 2:SIGINT,至關於輸入ctrl+c,中斷一個程序的進行 9:SIGKILL,強制中斷一個進程的進行 15:SIGTERM,以正常的結束進程方式來終止進程 17:SIGSTOP,至關於輸入ctrl+z,暫停一個進程的進行 eg. # 以正常的結束進程方式來終於第一個後臺工做,可用jobs命令查看後臺中的第一個工做進程 kill -SIGTERM %1 # 從新改動進程ID爲PID的進程,PID可用ps命令經過管道命令加上grep命令進行篩選得到 kill -SIGHUP PID
該命令用於向一個命令啓動的進程發送一個信號,它的通常語法以下:shell
-i :交互式的意思,若須要刪除時,會詢問用戶 -e :表示後面接的command name要一致,但command name不能超過15個字符 -I :命令名稱忽略大小寫 # 例如: killall -SIGHUP syslogd # 從新啓動syslogd
該命令用於判斷接在file命令後的文件的基本數據,由於在Linux下文件的類型並非之後綴爲分的,因此這個命令對咱們來講就頗有用了,它的用法很是簡單,基本語法以下:vim
file filename #例如: file ./test
該命令用於對文件進行打包,默認狀況並不會壓縮,若是指定了相應的參數,它還會調用相應的壓縮程序(如gzip和bzip等)進行壓縮和解壓。它的經常使用參數以下:centos
-c :新建打包文件 -t :查看打包文件的內容含有哪些文件名 -x :解打包或解壓縮的功能,能夠搭配-C(大寫)指定解壓的目錄,注意-c,-t,-x不能同時出如今同一條命令中 -j :經過bzip2的支持進行壓縮/解壓縮 -z :經過gzip的支持進行壓縮/解壓縮 -v :在壓縮/解壓縮過程當中,將正在處理的文件名顯示出來 -f filename :filename爲要處理的文件 -C dir :指定壓縮/解壓縮的目錄dir 壓縮:tar -jcv -f filename.tar.bz2 要被處理的文件或目錄名稱 查詢:tar -jtv -f filename.tar.bz2 解壓:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄
該命令用於查看文本文件的內容,後接要查看的文件名,一般可用管道與more和less一塊兒使用,從而能夠一頁頁地查看數據。例如:
cat text | less # 查看text文件中的內容 # 注:這條命令也可使用less text來代替
該命令用於改變文件所屬用戶組,它的使用很是簡單,它的基本用法以下:
chgrp [-R] dirname/filename -R :進行遞歸的持續對全部文件和子目錄更改 # 例如: chgrp users -R ./dir # 遞歸地把dir目錄下中的全部文件和子目錄下全部文件的用戶組修改成users
該命令用於改變文件的全部者,與chgrp命令的使用方法相同,只是修改的文件屬性不一樣,再也不詳述。
該命令用於改變文件的權限,通常的用法以下:
chmod [-R] xyz 文件或目錄 -R:進行遞歸的持續更改,即連同子目錄下的全部文件都會更改
該命令主要用於文本編輯,它接一個或多個文件名做爲參數,若是文件存在就打開,若是文件不存在就以該文件名建立一個文件。
1. vim模式 正常模式(按Esc或Ctrl+[進入) 左下角顯示文件名或爲空 插入模式(按i進入) 左下角顯示--INSERT-- 可視模式(按v進入) 左下角顯示--VISUAL-- 替換模式(按r或R開始) 左下角顯示 --REPLACE-- 命令行模式(按:或者/或者?開始) ex模式 沒用過,有興趣的同窗能夠自行了解
2. 打開文件 # 打開單個文件 vim file # 同時打開多個文件 vim file1 file2.. # 在vim窗口中打開一個新文件 :open [file] 【舉個例子】 # 當前打開1.txt,作了一些編輯沒保存 :open! 放棄這些修改,並從新打開未修改的文件 # 當前打開1.txt,作了一些編輯並保存 :open 2.txt 直接退出對1.txt的編輯,直接打開2.txt編輯,省了退出:wq再從新vim 2.txt的步驟 # 打開遠程文件,好比ftp或者share folder :e ftp://192.168.10.76/abc.txt :e \qadrive\test\1.txt # 以只讀形式打開文件,可是仍然可使用 :wq! 寫入 vim -R file # 強制性關閉修改功能,沒法使用 :wq! 寫入 vim -M file
3. 插入命令 i 在當前位置生前插入 I 在當前行首插入 a 在當前位置後插入 A 在當前行尾插入 o 在當前行以後插入一行 O 在當前行以前插入一行
4. 查找命令 最簡單的查找 /text 查找text,按n健查找下一個,按N健查找前一個。 ?text 查找text,反向查找,按n健查找下一個,按N健查找前一個。 vim中有一些特殊字符在查找時須要轉義 .*[]^%/?~$ :set ignorecase 忽略大小寫的查找 :set noignorecase 不忽略大小寫的查找 快速查找,不須要手打字符便可查找 * 向後(下)尋找遊標所在處的單詞 # 向前(上)尋找遊標所在處的單詞
5. 替換命令 ~ 反轉游標字母大小寫 r<字母> 將當前字符替換爲所寫字母 R<字母><字母>... 連續替換字母 cc 替換整行(就是刪除當前行,並在下一行插入) cw 替換一個單詞(就是刪除一個單詞,就進入插入模式),前提是遊標處於單詞第一個字母(可用b定位) C (大寫C)替換至行尾(和D有所區別,D是刪除(剪切)至行尾,C是刪除至行位並進入插入模式) :s/old/new/ 用old替換new,替換當前行的第一個匹配 :s/old/new/g 用old替換new,替換當前行的全部匹配 :%s/old/new/ 用old替換new,替換全部行的第一個匹配 :%s/old/new/g 用old替換new,替換整個文件的全部匹配 :10,20 s/^/ /g 在第10行至第20行每行前面加四個空格,用於縮進。 ddp 交換光標所在行和其下緊鄰的一行。 xp 交換相鄰兩個字母的順序
6. 撤銷與重作 u 撤銷(Undo) U 撤銷對整行的操做 Ctrl + r 重作(Redo),即撤銷的撤銷。
7. 刪除命令 須要說明的是,vim 其實並無單純的刪除命令,下面你或許理解爲剪切更加準確。 以字符爲單位刪除 x 刪除當前字符 3x 刪除當前字符3次 X 刪除當前字符的前一個字符。 3X 刪除當前光標向前三個字符 dl 刪除當前字符, dl=x dh 刪除前一個字符,X=dh D 刪除當前字符至行尾。D=d$ d$ 刪除當前字符至行尾 d^ 刪除當前字符以前至行首 以單詞爲單位刪除 dw 刪除當前字符到單詞尾 daw 刪除當前字符所在單詞 以行爲單位刪除 dd 刪除當前行 dj 刪除下一行 dk 刪除上一行 dgg 刪除當前行至文檔首部 d1G 刪除當前行至文檔首部 dG 刪除當前行至文檔尾部 kdgg 刪除當前行以前全部行(不包括當前行) jdG 刪除當前行以後全部行(不包括當前行) 10d 刪除當前行開始的10行。 :1,10d 刪除1-10行 :11,$d 刪除11行及之後全部的行 :1,$d 刪除全部行 J 刪除兩行之間的空行,其實是合併兩行。
8. 複製粘貼 普通模式中使用y複製 yy 複製遊標所在的整行(3yy表示複製3行) y^ 複製至行首,或y0。不含光標所在處字符。 y$ 複製至行尾。含光標所在處字符。 yw 複製一個單詞。 y2w 複製兩個單詞。 yG 複製至文本末。 y1G 複製至文本開頭。 普通模式中使用p粘貼 p(小寫):表明粘貼至光標後(下邊,右邊) P(大寫):表明粘貼至光標前(上邊,左邊)
9. 剪切粘貼 dd 其實就是剪切命令,剪切當前行 ddp 剪切當前行並粘貼,可實現當前行和下一行調換位置 正常模式下按v(逐字)或V(逐行)進入可視模式 而後用jklh命令移動便可選擇某些行或字符,再按d便可剪切 ndd 剪切當前行以後的n行。利用p命令能夠對剪切的內容進行粘貼 :1,10d 將1-10行剪切。利用p命令可將剪切後的內容進行粘貼。 :1, 10 m 20 將第1-10行移動到第20行以後。
10. 退出保存 :wq 保存並退出 ZZ 保存並退出 :q! 強制退出並忽略全部更改 :e! 放棄全部修改,並打開原來文件。 ZZ 保存並退出 :sav(eas) new.txt 另存爲一個新文件,退出原文件的編輯且不會保存 :f(ile) new.txt 新開一個文件,並不保存,退出原文件的編輯且不會保存
以字符爲單位移動 h 左移一個字符 l 右移一個字符 k 上移一個字符 j 下移一個字符 # 【定位字符】f和F fx 找到光標後第一個爲x的字符 3fd 找到光標後第三個爲d的字符 F 同f,反向查找。 以行爲單位移動 # 10指代全部數字,可任意指定 10h 左移10個字符 10l 右移10個字符 10k 上移10行 10j 下移10行 $ 移動到行尾 3$ 移動到下面3行的行尾 以單詞爲單位移動 w 向前移動一個單詞(光標停在單詞首部) b 向後移動一個單詞 e,同w,只不過是光標停在單詞尾部 ge 同b,光標停在單詞尾部。 以句爲單位移動 ( 移動到句首 ) 移動到句尾 跳轉到文件的首尾 gg 移動到文件頭。 = [[ == `` G 移動到文件尾。 = ]] 其餘移動方法 ^ 移動到本行第一個非空白字符上。 0 移動到本行第一個字符上(能夠是空格) 使用 具名標記 跳轉,我的感受這個很好用,由於能夠跨文件。 使用 ma ,能夠將此處標記爲 a,使用 'a 進行跳轉 使用 :marks 能夠查看全部的標記 使用 :delm!能夠刪除全部的標記 當在查看錯誤日誌時,正常的步驟是,vim打開文件,而後使用 shift+g 再跳轉到最後一行,這裏有個更簡單的操做能夠在打開文件時當即跳到最後一行。只要在 vim 和 文件 中間加個 + 便可。 vim + you.log 觸類旁通,當你想打開文件當即跳轉到指定行時,能夠這樣 # 打開文件並跳轉到 20 行 vim you.log +20 當你使用 / 搜索定位跳轉或者使用 :行號 進行精準跳轉時,有時咱們想返回到上一次的位置,如何實現? 只要使用 Ctrl+o 便可返回上一次的位置。
對於一個用Linux開發C程序的人來講,這個命令就很是重要了,它用於把C語言的源程序文件,編譯成可執行程序
該命令用於測算一個命令(即程序)的執行時間。它的使用很是簡單,就像平時輸入命令同樣,不過在命令的前面加入一個time便可,例如:
time ./process time ps aux
| http://www.javashuo.com/article/p-apskrkvq-t.html
UID是用戶ID,PID是進程ID,PPID是父進程ID。
UID
UID 用戶身份證實(User Identification)的縮寫。UID用戶在註冊後,系統會自動的給你一個UID的數值。意思就是給這名用戶編個號。
PID
PID(Process Identification)操做系統裏指進程識別號,也就是進程標識符。操做系統裏每打開一個程序都會建立一個進程ID,即PID。PID(進程控制符)英文全稱爲Process Identifier。PID是各進程的代號,每一個進程有惟一的PID編號。它是進程運行時系統分配的,並不表明專門的進程。在運行時PID是不會改變標識符的,可是進程終止後PID標識符就會被系統回收,就可能會被繼續分配給新運行的程序。
只要運行一程序,系統會自動分配一個標識。是暫時惟一:進程停止後,這個號碼就會被回收,並可能被分配給另外一個新進程。只要沒有成功運行其餘程序,這個PID會繼續分配給當前要運行的程序。若是成功運行一個程序,而後再運行別的程序時,系統會自動分配另外一個PID。
PPID
表明當前進程的父進程ID;
提問: 我想要知道運行中腳本子shell的進程id。我該如何在shell腳本中獲得PID。
當我在執行shell腳本時,它會啓動一個叫子shell的進程。做爲主shell的子進程,子shell將shell腳本中的命令做爲批處理運行(所以稱爲「批處理進程」)。 子shell進程的PID存儲在一個特殊的變量‘$$'中, PPID存儲子shell父進程的ID(也就是主shell), UID存儲了執行這個腳本的當前用戶ID. echo "PID of this script: $$" echo "PPID of this script: $PPID" echo "UID of this script: $UID"
1、系統初始化技術演變——開機啓動流程 CentOS 6:採用了INIT技術,整個開機過程是自檢BIOS——MBR引導——GRUB加載——加載內核——啓動INIT進程——讀取INITTAB配置文件,根據配置文件指定的模式按順序來啓動進程服務。INIT技術讓啓動流程很清晰,依賴SHELL腳本。由於啓動進程時是按順序一個一個啓動,因此速度慢,會由於某個服務卡住而影響系統的啓動。 CentOS 7:採用了systemd技術。這是替代INIT的新技術,採用了並行方式來啓動進程,因此啓動速度更快,而且兼容INIT的命令以下降遷移成本。 PS:經過ps命令查看PID爲1的進程能夠得知當前系統所採用的技術 2、網絡設置方式的改變 在CentOS 6中讓人熟悉的ipconfig在CentOS 7中被ip命令取代了;圖形化網絡配置工具nmtui取代了setup upgrade-centos-6-to-7.jpg upgrade-centos-6-to-7.jpg 3、主機名與字符集 在CentOS 6中要修改主機名能夠經過編輯/etc/sysconfig/network文件,可是在CentOS 7中已經廢棄這個方式,而使用了/etc/hostname文件。對於臨時修改主機名的方式不變,依然是hostname命令。而且CentOS 7中新增了一個主機名管理工具hostnamectl(該工具對文件名的修改是永久有效)。 而對於字符集的修改,CentOS 7使用了新的配置文件/etc/locale.conf來替代/etc/sysconfig/i18n。若是要臨時修改字符集的話方式不變,修改LANG變量,如LANG=zh_CN.UTF-8。新增了字符集管理工具localectl,效果和hostnamectl同樣。 4、兼容/etc/rc.local /etc/rc.local文件中記錄了須要開機後自動執行的命令,在CentOS 7中該文件雖然已經被廢棄,可是也能兼容使用,只須要給該文件賦予可執行權限: chmod +x /etc/rc.d/rc.local 5、runlevel運行級別的區別 CentOS 6中的/etc/inittab文件是基於init技術實現的,因此在CentOS 7中天然沒法使用,可是該文件依然被保留下來,只不過其中的內容已經被替換爲引導內容,讓用戶知道如今如何切換運行級別,因爲這個不經常使用就不繼續描寫。 6、服務的管理 這是讓用戶最不爽的修改,增長了systemctl工具,融合了service和chkconfig命令的功能,具體使用方式見圖: systemctl: 融合service和chkconfig的功能於一體 systemctl start crond.service 啓動服務 systemctl stop crond.service 中止服務 systemctl restart crond.service 重啓服務 systemctl reload crond.service 重載服務 systemctl status crond.service 查看服務運行狀態 systemctl list-unit-files 查看全部開機服務 systemctl enable crond.service 開機自啓動 systemctl disable crond.service 開機不啓動 systemctl is-enabled crond.service 檢查是否開機自啓動