天天看點

Linux運維 第二階段 (一)linux基礎概念及常用指令

一、基礎概念:

1、CPU(slice):運算器(線路複用)、控制器(晶片針腳有電沒電)、寄存器(儲存現場);

interrupt(中斷,硬體通知機制),FSB(frontside bus前端總線),1GHZ=10^9HZ(1KHZ=10^3HZ);

存儲器(分段,虛拟位址空間,32bit最多使用4G實體記憶體):RAM、ROM;

程式局部性原理:時間上(頻繁使用的資料—>緩存),空間上;

程式的移植(底層晶片)。

Input/Output device:

2、低級語言:機器語言;微碼(晶片自帶,彙編語言)->編譯器

進階語言:API(application program interface);庫(虛拟裝置,程式,調用接口,隻能被調用)

3、硬體架構:ARM系列(高通)、X86(intel/amd)、X64(AMD)、安騰(intel從HP收購)、alpha(HP)、UtralSparc(SUN)、power(IBM)、M68000 (M68K,motorola)、powerpc

4、OS:windows、Linux、UNIX泛稱(HP Unix、Solaris(SUN)、AIX(IBM)、SCO Unix、UnixWare)

5、shell:GUI(graphicaluser interface,GNOME/KDE/Xface);CLI(command line interface,prompt(#,$),bash/csh/zsh/ksh/tcsh);虛拟終端(CLI下的terminal;模拟終端(GUI下打開的terminal)

7、核心功能:程序管理、記憶體管理、檔案系統、網絡功能、硬體驅動、安全機制

8、redhat(rpm),debian(dpt),suse,SLS,centos,mandriva,Ubuntu,fedora

9、Linux的基本原則:由目的單一的小程式組成(組合小程式完成複雜任務);一切皆檔案;盡量避免捕獲使用者接口(不與使用者互動);配置檔案儲存為純文字格式

10、      RH401,RH423,RH442(系統調優),RH436(叢集),RHS333(加密機制)

11、      IDE(integrated developmentenvironment內建開發環境)( Integrated Device Electronics內建器件電子技術)

12、      windows(dll,dynamic linklibrary);linux(.so,shared object)

13、      認證(authentication);授權(authorization);審計(Audition,日志)

14、      程式的執行入口(魔數magic number,提示二進制程式的執行格式,如腳本的第一句#!/bin/bash)

15、      目錄也是檔案,是路徑映射;路徑(從指定起始點到目的地所經過的位置);階層化管理的機制(filesystem);絕對路徑(從根開始);相對路徑;進入系統預設位置(working directory,current directory)

16、      密碼複雜度規則:使用4種類别字元中至少3種;足夠長,大于7位;使用随機字元串;定期更換;循環周期足夠大(與近期24次的密碼不一樣)。例如:6位密碼:10^6(僅數字)、36^6(字母數字組合)、62^6(大小寫加數字、100^6(全鍵盤組合))

17、      在linux下操作的每一條指令,沒有任何消息就是最好的資訊,表示操作成功

18、      檔案的指令規則:長度不能超過255個字元;不能使用/斜線slash作檔案名,除此之外其它都可,但不建議使用其它字元,如空格、星号等;嚴格區分大小寫

二、指令:

1、文法:

#COMMAND [option]...  arguments

指令中[]表示可選,<>表示必選,...表示可出現多次,|表示多選一,{}表示分組

option(選項:修改指令的執行特性):短選項-(多個短選項可以組合);長選項--

arguments(參數:指定指令的作用對象)

指令類型:内置指令(SHELL内置)、外部指令(某一路徑下有與指令名稱相應的可執行檔案)

#type COMMAND(檢視指令屬于哪種類型)

#help COMMAND(内部指令獲得幫助資訊)

#COMMAND --help(外部指令獲得簡要幫助)

man的使用:

#man COMMAND(manual指令手冊,文本文檔,壓縮存放,内部指令用man檢視的是bash的幫助)

man的幾個部分:

Name(指令名稱及功能簡要說明)

Synopsis(用法說明,包括可用的選項)

Description(指令功能的詳盡說明,包括每一個選項的意義)

Options(說明每一個選項的意義)

FILES(此指令的相關檔案)

BUGS

EXAMPLES(使用示例)

See also(另外參照)

man分8章節:1使用者指令;2系統調用;3庫調用;4特殊檔案(裝置檔案,進入裝置的入口);5檔案格式(配置檔案文法);6遊戲;7雜項;8管理指令(硬體參數及系統級别配置/sbin,/usr/sbin,/usr/local/sbin)

舉例:

#whatis passwd(檢視此指令有幾個章節的幫助資訊)

#man 5  passwd(檢視/etc/passwd配置檔案的文法說明)

man常用快捷鍵

空格space向後翻一屏

b向前翻一屏backspace

<Enter>向後翻一行

k向前翻一行

查找/KEYWORD(由前到後查找,?KEYWORD後到前查找,n查找下一個比對項,N查找前一個比對項)

q退出

/usr/share/doc/(幾乎每一個指令在此目錄下都有相關文檔)

#info COMMAND(線上文檔幫助,檢視内容更詳細,支援連結跳轉)

2、常用指令:

目錄管理:ls,cd,pwd,mkdir,rmdir,tree

#ls -l  FILE

檔案類型:-(f,普通檔案)|d(directory)|b(block device)|c(character device)|l(symbolic linkfile)|p(pipe)|s(socket)

檔案權限:rwxrwxrwx

檔案硬連結次數

檔案屬主

檔案屬組

檔案大小(預設位元組)

時間戳(timestamp)最近一次被修改的時間(通路access;修改modify(檔案内容);改變change(檔案屬性),檔案屬性資料:中繼資料metadata,inode(index node))

-h(humanreadable做機關換算)

-a(顯示以點.開頭的隐藏檔案)

-A(顯示全部檔案不顯示.及..)

-d(顯示目錄自身屬性)

-i(顯示檔案的索引節點号inode)

-r(reverse反向顯示,逆序顯示)

-R(recursive遞歸顯示)

#cd(change directory,使用#cd直接回車,表示回到目前使用者家目錄home directory)

#cd ~USERNAME(進入指定使用者的家目錄,僅管理者用)

#cd -(在目前目錄和前一次所在目錄之間來回切換)

#cd ..(切至上一級目錄)

#cd  ../..(切至上兩級目錄)

# mkdir [OPTION]... DIRECTORY...(makedirectory,建立空目錄)

#mkdir /backup

#mkdir -p  /backup/test/(-p表示父目錄及其下的目錄一塊建立--parents)

#mkdir -pv  /backup/test/1/2(-v表示顯示詳細資訊--verbose)

#mkdir -pv  /backup/{a,c}_{b,d}(建立a_b,a_d,c_b,c_d目錄)

#tree /backup(檢視目錄樹)

#pwd(print name ofcurrent/working directory檢視目前所在目錄)

# rmdir [OPTION]... DIRECTORY...(remove emptydirectories删除空目錄)

#rmdir /backup/test/1/2

檔案管理:touch,stat,file,rm,cp,mv,install

# touch [OPTION]... FILE...(change filetimestamp,改變檔案時間戳,可用于建立檔案)

#touch /backup/test1(建立檔案,注意目錄和檔案不能同名)

#cd /backup

#stat /backup/test1(顯示檔案的狀态資訊)

#touch -a  test1(change onlythe access time,atime檔案通路時間)

#touch -m  test1(change onlythe modification time,mtime檔案修改時間(檔案修改時間指内容))

#touch -a  -t  1507111430 test1(用指定時間改變檔案的通路時間)

#touch -c  test1(-c表示不建立檔案—no-create,更改檔案的所有時間atime,mtime,ctime(檔案改變時間指屬性))

#cp  [OPTION]...SOURCE[...]  DEST|DIRECTORY(copy,可複制一個檔案到一個檔案,或多個檔案到一個目錄)

options:

-r(--recursive遞歸複制,目錄及其下的子目錄或檔案)

-p(--preserve=mode,ownership,timestamps保留檔案屬性資訊)

-i(--interactive互動模式,詢問)

-f(--force強制複制)

-a(--archive,  -dr  --preserve=all,常用于備份)

#cp  -p  /etc/{passwd,inittab,rc.d/rc.sysinit}  /tmp/

#mv SRC  DEST(移動或改名)

#mv -t  DEST  SRC(先指定目标)

#file /bin/ls(檢視檔案類型,ELF:executable link file;windows下類似此檔案為PE,portable execute)

#file test.txt(ASCII text,america standard code for information interchange,7位即可表示128個字元2^7(0-127),1byte=8bit;漢字2^16(0-65535)65536個字元,國标GB/8030,GBK,GB2312,Unicode(utf-8,universalcode全球編碼))

#file sum.sh(Bourne-Again shell script text executable)

#install [options]  SRC  DEST(copy files and setattributes)

#install -m  644  /tmp/test.txt /tmp/test1.txt(複制檔案,并設定權限,若無-m指定權限則預設複制的檔案都為755)

#install -d  /tmp/install.1(建立空目錄)

#install -t  /tmp/install.1  /tmp/test.txt(複制test.txt到/tmp/install.1目錄下,注意不加-m預設複制檔案的權限為755)

#rm [OPTION]... FILE...(remove filesor directories删除檔案或目錄)

option:

-r(--recursive遞歸)

-f(--force強制)

#rm -rf  /backup/*(删除指定目錄下所有檔案及目錄)

日期時間:

RTC(real time clock)、ntp(network timeprotocol)

linux分:硬體時鐘、系統時鐘

#date [options]...  [+FORMAT]

#date(檢視的是系統時鐘,根據CPU的繁忙程度系統時鐘有可能不準)

#date -s  20150711(調整系統日期)

#date -s  14:20:20(調整系統時間)

#date +%F(顯示日期年月日,完整格式為%Y-%m-%d)

#date +%T(顯示日間時分秒,完整格式為%H:%M:%S)

#date +”This year is %Y.%nToday is %d.”(%n表示換行)

#clock(檢視硬體時鐘,此指令是連結檔案連結到/sbin/hwclock)

#hwclock(query and set thehardware clock (RTC)檢視或設定硬體時鐘)

#hwclock -w(--systohc,系統時鐘同步到硬體時鐘)

#hwclock -s(--hctosys,硬體時鐘同步到系統時鐘)

#cal(calendar顯示當月月曆)

#cal 2015(顯示2015年全年月曆)

#cal 07  2015(顯示指定月月曆)

文本檢視與處理:cat,tac,more,less,head,tail,cut,sort,uniq,wc,tr,sed,grep,awk

#cat [-n|-E]  FILE(-n顯示行号,-E顯示結束符,linux的文本檔案的結束符是$或換行符)

#tac FILE(concatenate and print files in reverse,cat顯示的最後一行是tac顯示的第一行,反向顯示)

#more  FILE(分屏檢視,向後翻,翻至尾部直接退出)

#less FILE(分屏檢視,man就是通過調用less打開檔案的)

#head -n  #  FILE(僅檢視檔案的頭#行)

#tail -n  5  FILE(僅檢視檔案的後5行)

#cut -d:  -f1,3  /etc/passwd(-d,--delimiter指定分隔符;-f,--fields指定第幾列,字段)

#sort [option]  FILE(排序,僅影響顯示,不影響源檔案内容,逐個字元從左至右預設按ASCII碼表排序)

-n(--numeric-sort按數值排序)

-r(--reverse反向排序,降序排序)

-t(--field-separator字段分隔符)

-k(--key-pos1,pos2以哪個字段為關鍵字進行排序)

-u(--unique排序後相同内容隻顯示一次)

-f(--ignore-case忽略字元大小寫)

例:#sort  -t:  -k3 -n  /etc/passwd

#uniq(report or omitrepeated lines,同#sort  -u  FILE,重複行是相鄰且重複的行,如一文本中有三行重複但不相鄰則不是重複行)

-d(--repeated,僅顯示重複的行)

-D(--all-repeated,重複的行全部顯示)

-c(--count,顯示每一行重複行的次數)

#wc FILE(word ...counts文本統計,顯示結果為行數,單詞數,位元組數)

-l(--lines隻顯示行數)

-w(--words隻顯示單詞數)

-c(--bytes隻顯示位元組數)

-m(--chars隻顯示字元數,同位元組數)

-L(--max-line-length最長的一行有多少字元數)

#tr [option]  SET1  [SET2] <  FILE(translate ordelete characters轉換或删除字元,SET表示字元集)

-d(--delete删除指定字元)

#tr  ‘ab’  ‘A-Z’ <  /tmp/text.txt(将檔案中所有字母轉為大寫)

#echo “abcdefg”  |  tr  -d  “abc”(删除顯示指定字元)

壓縮、解壓縮:

常見壓縮格式:gz,bz2,xz,zip,Z

算法不同,壓縮比也會不同,壓縮前與壓縮後的大小不同

#gzip -#  /PATH/TO/SOMEFILE(僅壓縮檔案,不能壓縮目錄,壓縮完成後會删除源檔案,#表示壓縮比1-9,預設為6)

#gunzip /PATH/TO/SOMEFILE.gz(解壓縮,解壓完後會删除源檔案)

#gzip -d  /PATH/TO/SOMEFILE.gz(解壓縮)

#zcat FILE.gz(不解壓檢視壓縮的文本檔案内容)

#bzip2 -#  FILE(比gzip有更大的壓縮比,但小檔案不明顯,用法與gzip相同)

#bzip2 -k  FILE(保留源檔案壓縮)

#bzip2 -d  FILE.bz2(解壓縮,同#bunzip2)

#bzcat FILE.bz2(不解壓檢視文本檔案内容)

#xz -#  FILE(redhat6中工具)

#xz -k  FILE

#xz -d  FILE.xz(同#unxz)

#xzcat FILE.xz

#xzdec FILE.xz(同#xzcat)

#zip DEST  SRC(歸檔并壓縮,歸檔archive本身并不意味着壓縮)

#zip /tmp/test.zip /tmp/{test1.txt,test2.txt}

#unzip /tmp/test/zip  -d  /root/(-d指定解壓到某一目錄下)

#tar options  DEST  SRC

-c(--create建立歸檔)

-f(--file操作的歸檔檔案)

-x(--extract還原歸檔)

-t(--list不展開歸檔檢視歸檔了哪些檔案)

-v(--verbose詳細資訊)

--xattrs(歸檔時保留檔案的擴充屬性)

-zcf(歸檔并調用gzip壓縮)

-zxf(調用gzip解壓縮并展開歸檔)

-jcf(歸檔并調用bzip2壓縮)

-jxf(調用bzip2解壓縮并展開歸檔)

-Jcf(歸檔并調用xz壓縮)

-Jxf(調用xz解壓縮并展開歸檔)

-C(指定解壓目錄)

#tar -cf  /root/sum.tar  /tmp/{sum1.sh,sum2.sh}(注意歸檔時若要歸檔的檔案明确指定了路徑,歸檔檔案中也有對應的路徑)

#cd /tmp

#tar -cf  /root/sum.tar  sum1.sh sum2.sh(注意歸檔時若要歸檔的檔案沒指定路徑在目前目錄下,檢視歸檔檔案時也無路徑)

#tar -jcf  sum.tar.bz2  sum1.sh sum2.sh  sum.sh

#tar -jxf   sum.tar.bz2  -C /root/tmp/(解壓時-j可省,如#tar  -xf  sum.tar.bz2 -C  /root/tmp,tar會自動識别檔案名字尾并找到相應工具解壓縮,但建立壓縮檔案時不可省略)

#echo “this year is 2015.”(顯示輸入資料)

#echo -n  “this year is 2015.”(-n表示顯示完内容不換行)

#echo -e  “this year is 2015.\nthismonth is 07.”(-e啟用反斜線功能,\n)

#echo -e  “\033[31mHello,world!\033[0,”(31m中3表示控制前景色(換為4表示控制背景色),1表示紅色(1-7可指定不同顔色),也可同時控制前景色與背景色如\033[32;41m,\033[1;32;41m其中1表示加粗(5表示閃爍,7表示前景色與背景色反過來))

#printf “this year is 2015.\nthis month is 07.\n”(格式化輸出資料,預設不換行)

\\    backslash

\a    alert (BEL)

\b    backspace

\c    produce no further output

\e    escape

\f    form feed

\n    new line

\r    carriage return

\t    horizontal tab

\v    vertical tab

檔案名通配(#man  7  glob):

*任意長度任意字元

?任意單個字元

[]比對指定範圍内的任意單個字元,如[abc],[a-z],[A-Z],[0-9],[a-zA-Z],[0-9a-zA-Z]

[^]比對指定範圍外的任意單個字元,如[^0-9]非數字

字元集合:[:space:]空白字元,[:punct:]标點符号,[:low:]小寫字母,[:upper:]大寫字母,[:alpha:]大小寫字字母,[:digit:]數字,[:alnum:]大小寫字母數字

[[:space:]]外面的中括号表示引用

例:#touch  ‘a  b’

#ls [[:alpha:]]*[[:space:]]*[[:alpha:]](查找以字母開頭字母結尾中間有空白字元)

檔案查找:

#locate FILE(此方式是根據系統檔案資料庫進行的,非實時查找且是模糊比對)

#updatedb(手動生成檔案資料庫,新裝的系統可能此檔案資料庫,需手動生成)

#find 查找路徑  查找标準 處理動作action(實時查找,精确比對,支援衆多的查找标準,周遊指定目錄中的所有檔案,速度慢)

查找标準:

-name ‘FILENAME’(對檔案名作精确比對,區分大小寫,支援通配符*?[])

-iname ‘FILENAME’(對檔案名作精确比對,不區分大小寫,支援通配符)

-regex PATTERN(基于模式進行檔案名比對)

-user USERNAME(根據屬主查找)

-group GROUPNAME(根據屬組查找)

-uid UID(使用者删除後,檢視該使用者的檔案時顯示的是UID和GID)

-gid GID

-nouser(查找無屬主檔案)

-nogroup

-type f|d|c|b|l|p|s

-size [+|-]#k|#M|#G  (#是數字)

-mtime|-ctime|atime  [+|-]#(-5表示5天内,+5表示5天前,5表示第5天)

-mmin|-cmin|-amin  [+|-]#

-perm mode|-mode|/mode(/644表示有任意一位比對即可,-644表示要查找的檔案權限能完全包含644例如755)

組合條件:-a|-o|-not

處理動作:

-print(預設)

-ls(類似ll形式顯示每一個檔案)

-ok COMMAND  {}  \;(每一次都需确認,{}表示查找到的檔案,)

-exec COMMAND  {}  \;(不需确認)

1、查找/var下屬主為root且屬組為mail的所有檔案

#find /var  -user  root -a  -group  mail

2、查找/usr下不屬于root、bin、stu的檔案

#find /usr  -not  \( -user root  -o  -user bin  -o  -user stu \)

3、查找/etc下最近一周内内容修改過且不屬于root及stu使用者的檔案

#find /etc  -mtime  -7 -not  \( -user  root -o  -user  stu \)

4、查找目前系統上沒有屬主或改組且最近1天内被通路過的檔案,并将屬主屬組改為root

#find /  \( -nouser  -o -nogroup \)  -a  -atime -1  -exec  chown root.root  {}  \;

5、查找/etc下大于1M的檔案,将檔案名寫入/tmp/etc.largefiles檔案中

#find /etc  -size  +1M >>  /tmp/etc.largefiles

#find /etc  -size  +1M -exec  echo  {} >>  /tmp/etc.largefiles  \;

#find /etc  -size  +1M |  xargs  echo >>  /tmp/etc/largefils

6、查找/etc下所有使用者都沒寫權限的檔案,顯示出其詳細資訊

#find  /etc  -not  -perm   \222  -ls

Linux文本處理三劍客:grep(文本過濾器)、sed、awk(報告生成器)

正則的使用:

REGEXP:basic REGEXP;extendedREGEXP(#egrep或#grep  -E);

1、  basic REGEXP:

字元比對:

.(比對任意單個字元);

[](比對指定範圍内的任意單個字元;

[^](比對指定範圍外的任意單個字元);

[:digit:][:lower:][:upper:][:punct:][:space:][:alpha:][:alnum:](字元集合)

次數比對:

*(比對其前面的字元任意次);

.*(任意長度任意字元);

\?(比對其前面的字元0次或1次);

\{m,n\}(比對其前面的字元至少m次,最多n次);

位置錨定:

^(錨定行首,此字元後面的任意内容必須出現在行首);

$(錨定行尾,此字元前面的任意内容必須出現在行尾);

^$(空白行)

錨定詞:

\<或\b(詞首,其後的任意字元必須作為單詞的首部出現);

\>或\b(詞尾,其後的任意字元必須作為單詞的尾部出現);

分組:

\(\) \1,\2,\3,....(向後引用,例如:比對like和liker,love和lover:#grep  ‘\(l..e\).*\1’  test.txt)

#grep ‘[[:digit:]]$’  /etc/inittab

#grep ‘[[:space:]][[:digit:]]’ /etc/inittab

#grep ‘\<r’  /etc/passwd  (以下兩例同此句比較#grep  ‘r’ /etc/passwd)

#grep ‘r\b’  /etc/passwd

#grep ‘\<bash$’  /etc/passwd

2、  extended REGEXP:

.

[]

[^]

*

?

+(比對其前字元至少1次);

{m,n}

^

$

\<(詞首);

\>(啟尾);

()

\1,\2,\3,...

或者:

舉例:精确比對#ifconfig中所有IP位址(不包括廣播位址及子網路遮罩)

#ifconfig | egrep -o'\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[01][0-9]|22[0-3])\>(\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>){2}\.\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])\>'

sed(stream editor):行編輯器、全屏編輯器,把每行讀到記憶體空間(模式空間),預設不編輯源檔案,僅對模式空間的資料作處理,處理結束将模式空間列印至螢幕;

#sed [options]  ‘AddressCommand’  file1...

options:

-n(靜默模式,不再顯示模式空間的行,不加-n預設是列印模式空間);

-i(直接修改源檔案);

-e(後接腳本或編輯好的語句,如#sed  -e SCRIPT  -e  SCRIPT FILE,可以同時執行多個腳本);

-f(後接腳本檔案,如#sed  -f /PATH/TO/FILE  FILE);

-r(表示使用擴充正規表達式)

Address:

start line,end line;(起始行,結束行,例如:1,13)

/pattern/(//中間是正規表達式)參照shell基礎中正規表達式的用法

/pattern1/,/pattern2/(第一次被模式1比對到的行開始到第一次被模式2比對到的行結束,中間的所有行);

linenumber(指定行);

startline,+N(從startline開始向後N行)

Command:

d(删除符合條件的行);

P(顯示符合條件的行);

a \string(在指定的行後追加新行,内容為string);

i \string(在指定的行前添加新行,内容為string);

r FILE(将指定檔案的内容添加至符合條件的行處);

w FILE(将指定範圍内的行另存至指定的檔案中);

s/pattern/string/修飾符(查找并替換,不加修飾符g預設隻替換第一次被模式比對到的字元串,修飾符(g全局替換,i查找時忽略大小寫),s///也可用s###,s@@@等其它符号)

#sed ‘/^\//a  #  hello linux’  /etc/fstab  (在行首是/的行後追加#  hello linux)

#sed ‘/^\//a  #  hello linux\n#  hello  world’ /etc/fstab  (在行首是/的行後追加兩行)

#sed ‘$r  /etc/issue’  /etc/fstab (在末行後添加指定檔案内容,此例可用做檔案合并)

#sed ‘1,2r  /etc/issue’  /etc/fstab (在第一行和第二行後都追加指定檔案的内容)

#sed ‘/oot/w  /tmp/oot.txt’  /etc/fstab (将查詢到的含oot的行另存至指定檔案/tmp/oot.txt)

#sed ‘s/oot/OOT/g’  /tmp/oot.txt  (将查詢到含oot的全部替換為大寫)

#sed ‘s/^\//#/g’  /etc/fstab  (将行首的/全部替換為#)

#sed ‘s#l..e#&r#g’  test.txt  (&r比對模式裡的整個字元串,将檔案中like或love均替換為liker或lover)

#sed ‘s#\(l..e\)#\1r#g’  test.txt  (同上例)

#sed ‘s#l\(..e\)#L\1#g’  test.txt  (将檔案中like或love替換為Like或Love)

#sed -r  ‘s/^[[:space:]]+//g’  /etc/grub.conf  (删除行首的空白字元)

#history |  sed  ‘s#^[[:space:]]##g’  (功能同上例)

#sed ‘s@\(id:\)[0-9]\(:initdefault\)@\15\2@g’ /etc/inittab  (将行id:3:initdefault中的3替換為5)

#sed ‘/^$/d’  /etc/inittab  (删除空白行)

#sed ‘s/^#//g’  /etc/inittab  (删除檔案中開頭的#)

#sed -r  ‘s/^#[[:space:]]+//g’  /etc/inittab (删除檔案中開頭的#,且#後必須有空白字元)

#sed -r  ‘s@^[[:space:]]+#@@g’  test.txt (删除檔案中以空白字元開頭後跟#的行)

#echo “/etc/rc.d/”  |  sed -r  ‘s@^(/.*/)[^/]+/?@\1@g’  (取出一路徑中上一層目錄的名稱)

以上是學習《馬哥網絡視訊》做的筆記

一、Linux簡介

1、常見的UNIX:

         AIX                      IBM

         HP-UX                   HP

         Solaris                 SUN

    2、常見的LINUX:

         1)RedHat系列:RHEL、Fedora、CentOS、SUSE、gentoo、紅旗、Mantriva、turbolinux;

         2)Debian系列:Unbuntu。

    3、Linux優點:開源、免費、穩定、安全;缺點:易用性差、廠商支援性差。

    4、Linux分區表示:

         1)主分區+擴充分區最多隻能分4個;

         2)擴充分區最多1個,且不能格式化也不能寫入資料,它隻包含邏輯分區;

         例:sda5表示第一塊硬碟第一個邏輯分區;

         3)根分區、SWAP分區為必須分區;/boot、/home 、/www,為常用分區。

    5、注意:

         1)Linux下所有内容都是檔案,包括硬體;

         2)嚴格區分大小寫;

         3)不以擴充名區分檔案類型,而是靠權限,但有特例,如壓縮檔案、RPM封包件;

         4)所有可儲存設備都必須挂載使用,包括硬碟。

    6、密碼原則:複雜性、易記性、時效性。

    7、Linux指令提示符:[目前登入使用者@目前主機名  目前所在目錄的最後一個目錄]#

二、常用指令(一)

         格式:指令  [選項/option]   [參數/parameter]

     >目錄操作指令

         1、ls (list)                  (顯示目錄下的内容)

         #ls[-a|-l|-h|-d|-i]             

                   -l       long長格式顯示

                   -h      human人性化顯示,如可自動顯示檔案大小

         2、cd (change directory)                  改變目錄,shell内置指令

         #cd[-|~|..]

         相對路徑:參照目前所在目錄進行查找,一定要先确定目前所在目錄;

         絕對路徑:從根目錄開始指定,一級一級遞歸查找,在任何目錄下都能進入指定位置。

         3、#pwd(printworking directory)            顯示目前所在目錄

         4、mkdir (makedirectory)                         建立目錄

         #mkdir  -p /11/22/33/44                       遞歸建立目錄

         5、rmdir(remove directory)                     隻能删除空目錄

         #rmdir  目錄                                 不常用,一般使用#rm  –rf 目錄或檔案

         6、#tree  目錄名                             顯示指定目錄下所有内容的目錄樹

    >檔案操作指令

         1、#touch 檔案名                                      建立空檔案或修改檔案時間

         2、#rm  –rf 目錄或檔案名                   

         3、#cat  –n  檔案名                               檢視檔案内容,-n可列出行号

         4、#more  檔案名                           分屏顯示檔案内容,快捷鍵:空格、b、q

         5、#less  檔案名                                       分行顯示檔案内容

         6、#head  -n 行數  檔案名                 顯示檔案頭;-n 行數(指定顯示頭幾行)

         7、#tail   -n  行數  檔案名  顯示檔案尾;-f(監聽檔案尾,不退出,适合監聽實時檔案)

      >檔案和目錄都能操作的指令

         1、#rm                                                           删除檔案或目錄

         2、#cp  [-r|-p|-d|-a]      源檔案  目标位置

                            -r                複制目錄

                            -p               連帶檔案屬性複制

                            -d               若源檔案是連結檔案,則複制連結屬性

                            -a               相當于-pdr

         3、#mv  源檔案  目标位置

    >連結檔案                難點

         1、硬連結特征:擁有相同的i節點和存儲block塊,可以看作是同一個檔案;可通過i節點識别;不能跨分區;不能針對目錄使用。

         #ln  源檔案  目标檔案

         2、軟連結特征:類似windows快捷方式;擁有自己的i節點和block塊,但是資料塊隻儲存源檔案的檔案名和i節點号,并沒有實際的檔案資料;修改任意檔案另一個都改變;删除源檔案,軟連結不能使用;屬性lrwxrwxrwx。

         #ln  -s  源檔案  目标檔案

>權限管理

         1、權限位:共10位,- rw- r- -r- -

         第一位為檔案類型:- 普通檔案;d 目錄檔案;l 連結檔案;b 塊裝置檔案;c 字元裝置檔案;s 套接字;p 管道

         r:4    w:2  x:1

         2、修改權限

         #chmod    u+x aa            (change the permission mode of file)

         #chmod    g+w,o+w aa

         #chmod    u=rwx aa

         #chmod    755 aa            常用權限(755、644)

         3、權限意義:

         1)權限對檔案的含義:r讀取檔案内容(cat/more/head/tail);w編輯修改檔案内容(vi/echo);x可執行

         2)權限對目錄的含義:r可查閱目錄下檔案名(ls);w具有修改目錄結構的權限,如建立、删除、重命名、剪切此目錄下的檔案和目錄(touch/rm/mv/cp);x可進入該目錄。

         注意:為系統安全,檔案少給x權限,目錄少給w權限,一般目錄給的權限為0/5/7。

         4、屬主和屬組指令:

         #chown  使用者名 檔案名             (change file ownership)

         例:#chown  user1:user1 aa   (改變屬主同時改變屬組,user1必須存在)

         #chgrp  屬組名 檔案名               (change file group ownership)

         #useradd  使用者名                             (添加使用者)

         #passwd  使用者名                              (設定使用者密碼,普通使用者改密碼#passwd直接回車)

         5、檔案和目錄預設權限:umask                (the user file-creation mask)  shell内置指令

         預設0022

         #umask                                         (檢視系統umask值)

         #umask  0002                                   (臨時修改umask值)

         #umask  -S(大寫)                               (以rwx形式顯示權限)

         檔案:666(rw-rw-rw-)減去預設值022(----w—w-)等于644(-rwr—r--)

         目錄:777(rwxrwxrwx)減去預設值022(----w—w-)等于755(rwxr-xr-x)

         注意:以上是用字母rwx計算,不能單純用數字相減。

>幫助指令:

         1、#man  指令名

         #man -f 指令                                 (whatis,檢視指令擁有哪個級别的幫助)

         #man  -k  指令                                 (apropos,檢視和指令相關的所有幫助)

         2、#help  内部指令

         3、#指令 ――help                      (檢視指令的正常選項)

         4、#info  指令                                 (進入子幫助頁面,帶有*标記,常用快捷鍵u/n/p/q,可按h獲得幫助)

常用指令(二)

一、查找指令

         1、#which  指令名                        (查找指令的指令,能看到相關别名)

         2、#whereis  指令名                    (查找指令的指令,同時看到幫助文檔位置)

         3、#locate  檔案名                       (按照檔案名在資料庫中查找)

                   #updatedb                                    (強制更新資料庫)

                   /var/lib/mlocate                         (locate所搜尋的背景資料庫)

                   /etc/updatedb.conf                   (配置檔案,用于定義locate指令)

         4、#find  查找位置  選項   檔案名

                              -uid  數字       (按使用者屬主ID查找)

                              -gid  數字       (按使用者屬組組ID查找)

                              -user使用者名      (按屬主使用者名查找)

                              -group組名      (按屬組組名查找)

                              -nouser          (找沒有屬主的檔案)

                              -size  +50k      (-50k、50k、例#find . –size+5k –a –size -10k。-a(邏輯與),機關k小寫,M大寫

                              -type        (f普通檔案,d目錄,l連結檔案)

                              -perm  755  (按檔案權限查找)

                              -inum  節點号 (按i節點号查找)

                              -ctime|-mtime|-atime              (天)

         例:#find  / -name  123  -exec(或OK)  指令 選項  {}\;

             #cat  install.log | grep  lib

             #指令1 | 指令2                        (管道符)

             #grep  -i|-v  “字元串”  檔案名          (-i忽略大小寫,-v反向選擇)

二、壓縮解壓縮

         1、識别.tar.gz格式的包

         #tar  -zcvf  壓縮檔案名  源檔案

         #tar  -zxvf  壓縮檔案名 –C  位置                    (-C指定解壓縮位置)

         2、識别.tar.bz2格式的包

         #tar  -jcvf  壓縮檔案名  源檔案

         #tar  -jxvf  壓縮檔案名

三、常用網絡指令

         1、#w                                         (查詢目前登入伺服器的所有使用者)

         2、#who                                    (查詢登入使用者)

         3、#last                                               (列出登入系統的相關資訊)

         4、#lastlog                                (顯示所有賬号最後一次的登入時間)

         5、#write  使用者名                (給線上使用者寫資訊)

                   #write  root tty1                   (給tty1登入的root寫資訊)

         6、#wall                                     (對線上所有使用者說話)

         7、#mail                                    (郵件,常用快捷鍵h/d/s/x)

         8、#ping  -c  次數  ip

                   #ping  -s 65536  ip   (指定探測資料包的大小,死亡之ping)

         9、#ifconfig  eth0 192.168.14.252  netmask  255.255.255.0

         10、#netstat  -tuln          (檢視網絡狀态,/etc/services有系統中的所有常見端口)

                   #netstat  -an

         11、#telnet  ip  端口      (測試端口是否可以正常連接配接,quit退出)

四、關機指令

         #sync;sync;shutdown  -r|-h now

         #reboot

         #init  6|0

         #halt

         #poweroff

五、挂載

         1、#mount  -l                         (查詢系統中已經挂載的裝置)

                   # mount  -a                     (依據/etc/fstab的内容,自動挂載)

                   #mount  -t  檔案系統 –L  卷标名  -o 特殊選項 裝置檔案名  挂載點

         2、例:#mount

                            #mount  -o remount,noexec  /boot

                            #cd/boot

                            #vi  hello.sh           (内容:echo “helloworld”)

                            #chmod  755 hello.sh

                            #./hello.sh

                            #mount  -o remount,exec  /boot

         3、CD光牒挂載:

                   #mount  -t iso9660  /dev/cdrom(sr0)  /mnt/cdrom

         4、U盤挂載:

                   #mount  -t vfat  /dev/sdb1  /mnt/usb             (vfat:fat32,fat:fat16)

                  #mount -t  vfat  -o iocharset=utf8  /dev/sdb1  /mnt/usb

         5、使用ntfs-3g安裝ntfs檔案系統子產品

                   #mount  -t ntfs-3g  /dev/sdb1  /mnt/win

本文轉自 chaijowin 51CTO部落格,原文連結:http://blog.51cto.com/jowin/1640093,如需轉載請自行聯系原作者