linux基礎命令

1.mkdir(make directory創建目錄)

例子:mkdir /data 在根/下創建data目錄,mkdir –p創建連續目錄

2.ls(list列表) 列出目錄文件

例子:ls / 列根/目錄下目錄和文件

參數:

-l(long)長格式,查看文件的權限,屬主屬組信息

-d(directorys)查看目錄

-ld查看目錄的權限屬主屬組信息

–r(反轉排序,倒敘)

-t(按修改時間排序)

-F給每個輸出項追加文件的類型標識“*”表示具有可執行權限的普通文件,“/”表示目錄,“@”表示符號鏈接,“|”表示命令管道FIFO,“=”表示sockets套接字。當文件爲普通文件時,不輸出任何標識符。

linux基礎命令

-p 只給目錄加標識

linux基礎命令

-i查看inode節點

-h人類可讀,人類可讀就是將大小整數化,比如1024k就算成1M了。

3.cd (change directory) 改變目錄路徑列子

例子:cd /etc

cd ..返回上一級目錄

cd .當前目錄

cd – 返回上一次目錄

cd ~返回用戶家目錄

cd –演示

linux基礎命令

爲什麼cd –可以返回上一次目錄,因爲cd –調用了OLDPWD變量和PWD變量

linux基礎命令

4.相對路徑和絕對路徑

Windows絕對路徑:D:\娛樂\音樂,從頭(盤符)開始的路徑。

linux絕對路徑:cat /etc/sysconfig/network-scripts/ifcfg-eth0,從“/”開始的路徑。

相對路徑:不從根/開始,不從頭開始的路徑。

例如:cd /linzhongniao/這種進入目錄的方法就是絕對路徑,

cd linzhongniao/這種進入目錄的方法就是相對路徑。

5.重定向標準輸入輸出和錯誤輸出

特殊符號:

或1> 輸出重定向:把當前輸出的內容輸入到後邊的文件中,會清除文件原有內容。

>或1>>追加重定向:把當前輸出的內容追加到後邊的文件尾部,不會清除文件原有內容。

0<或< 輸入重定向:輸入重定向用於改變命令的輸入,後面指定輸入內容,前面跟文件名。

0<<或<<追加輸入重定向:後跟字符串用來表示“輸入結束”,也可用ctrl+d結束輸入。

例子:

cat >>./linzhongniao.txt <<EOF
> woshishei
> nimeide
> I am linzhongniao
> EOF

2> 錯誤輸出重定向:把錯誤信息輸出到後邊的文件中,會清空文件原有內容。

2>> 錯誤追加重定向:把錯誤信息追加到後邊的文件中,不會刪除文件原有內容。

說明:

(1)頭的指向就是數據的流向。

(2)標準輸入(stdin):代碼爲0,使用0<或0<<。數據流向從右向左。

(3)標準正常輸出(stdout):代碼1,使用1>或1>>。數據(正確的數據)流向從左向右。

(4)標準錯誤輸出(stderr):代碼爲2,使用2>或2>>。數據(錯誤的數據)流向從左到右。

(5)2>&1,把標準輸出和標準錯誤輸出放到一個文件裏面。正確輸出放在哪了,錯誤輸出也放在哪。例如echo linzhongniao >a.txt 2>&1將標準輸出和標準錯誤輸出都追加到a.txt文件中(推薦),定時任務使用>/dev/null 2>&1將標準輸出和標準錯誤輸出都輸出到空。

(6)&>a.log 標準輸出和標準錯誤輸出都放到a.log裏面,也可以追加&>>a.log。也可以這樣寫>a.log 2>&1

6.cat 查看文件內容

6.1編輯文件

方法一:

[root@linzhongniao local]# cat >>$(date +%Y%m%d%H%M).txt
DSFDS
DFSD
FDSFSD
DFDS《==按ctrl +d結束

查看一下

[root@linzhongniao local]# cat 201809020834.txt 
DSFDS
DFSD
FDSFSD
DFDS

方法二:也可以將上面的輸入改成追加

[root@linzhongniao local]# cat >>201809020834.txt 
dhjh
hjfjdd
nimeide
[root@linzhongniao local]# cat 201809020834.txt 
DSFDS
DFSD
FDSFSD
DFDS
dhjh
hjfjdd
nimeide

方法三:注意EOF的運用

[root@linzhongniao ~]# cat >>ddd/20180806.txt<<EOF
> DSDSDS
> djskd
> ds
> EOF
[root@linzhongniao ~]# cat ddd/20180806.txt 
DSDSDS
djskd
ds

6.2 cat查看文件內容

參數說明

(1)-n參數說明

cat –n顯示行號

[root@linzhongniao ~]# cat -n ddd/20180806.txt 
 1  DSDSDS
 2  djskd
 3  ds
 4
 5
 6  DS
 7  dfsadfdf
 8
 9  erwer

(2)-b參數

cat –b也是顯示行號但是不顯示空行的行號,相當於nl命令(number lines)。

[root@linzhongniao ~]# cat -b ddd/20180806.txt  
 1  DSDSDS
 2  djskd
 3  ds

 4  DS
 5  dfsadfdf

 6  erwer
[root@linzhongniao ~]# nl ddd/20180806.txt
 1  DSDSDS
 2  djskd
 3  ds

 4  DS
 5  dfsadfdf

 6  erwer

(3)-E(或-e)參數說明

display $ at end of each line(在每一行的末尾顯示“$”)-E 參數在每一行的末尾顯示“$”符號

[root@linzhongniao ~]# cat -E ddd/20180806.txt 
DSDSDS$
djskd$
ds$
$
$
DS$
dfsadfdf$
$
erwer$

(4)-s參數說明

suppress repeated empty output lines(抑制重複空行的輸出),合併連續的重複行例如將兩個空行合併成一個空行

[root@linzhongniao ~]# cat -s ddd/20180806.txt  
DSDSDS
djskd
ds

DS
dfsadfdf

erwer

(5)-T選項

display TAB characters as ^I(顯示tab的標籤字符爲^I),顯示tab鍵標籤字符“^I”,所以文檔中間不一定是空格有可能是tab鍵標籤,在選取分隔符的時候要注意用-T參數檢測一下。

[root@linzhongniao ~]# cat -T ddd/20180806.txt 
DSDSDS
djskd
sdsd^Idjkjk dsjk
ds

DS
dfsadfdf

erwer

7.cp (copy)拷貝命令:

拷貝文件和目錄

cp(copy) [-aifpru] [源文件][目標文件]

            -a:相當於-pdr(-p、-d和-r)
            -d: 若源文件爲連接文件(link file),則複製鏈接文件屬性而非檔案本身
            -f:強制,若目標檔案已經存在且無法開啓,則移除後再嘗試
            -i:若目標文件已經存在是,在覆蓋時先問詢
            -p:連同檔案的屬性(所有權、時間戳)一起復制過去,而非使用默認屬性。
            -r:遞歸用於複製目錄
            -u:若目標文件存在,則目標文件比源文件舊時才複製。

在一個目錄或不同目錄下備份文件可以用下面的方式來提高效率

[root@linzhongniao ~]# cp /etc/yum.repos.d/CentOS-Base.repo{,.ori}
[root@linzhongniao ~]# cd /etc/yum.repos.d/
[root@linzhongniao yum.repos.d]# ls
CentOS-Base.repo  CentOS-Base.repo.ori

-d參數說明

[root@linzhongniao ~]# ln -s d n
[root@linzhongniao ~]# ls -li  d n
413365 -rw-r--r--. 2 root root 0 Sep  2 22:55 d
398541 lrwxrwxrwx. 1 root root 1 Sep 18 21:33 n -> d
[root@linzhongniao ~]# cp n /tmp/
[root@linzhongniao ~]# ls -l /tmp/n
 -rw-r--r--. 1 root root 0 Sep 18 21:34 /tmp/n
[root@linzhongniao ~]# cp -d n /mnt/
[root@linzhongniao ~]# ls -l /mnt/n 
lrwxrwxrwx. 1 root root 1 Sep 18 21:34 /mnt/n -> d

7.1 範例

已知/tmp目錄下已經存在了test.txt文件,如何執行命令才能把/mnt/test.txt拷貝到/tmp下覆蓋掉/tmp/test.txt,而讓linux系統不提示是否覆蓋。

linux基礎命令

方法一:在命令前加反斜線“\”屏蔽別名

linux基礎命令

方法二:加命令的全路徑,用which查看命令全路徑

linux基礎命令

解題思路就是屏蔽掉系統默認的對應命令別名,默認執行cp的操作是調用了別名,所以會提示覆蓋。還可以用下面的修改別名的方法

8.別名alias

cp mv rm 這些命令比較危險,所以系統會自動的爲這些命令添加別名,會自動的在命令後加-i 當執行這些命令的時候就會詢問是否執行。我們使用反斜線的作用就是屏蔽它的別名功能。查看系統別名用alias。

linux基礎命令

方法四:也可以用unalias +命令,將別名刪掉。刪除cp的別名在複製有重複文件就不會提示是否覆蓋了。瞭解原理不要操作,只是臨時的重啓服務器之後別名還會存在。

linux基礎命令
linux基礎命令

刪除別名後也可以用alias命令添加別名 alias cp=’cp -i’

linux基礎命令

也可以設置別名提示別人慎用此命令,例如rm命令
linux基礎命令

給網卡設置別名,在查網卡的時候命令很長記不住就可以設置別名
linux基礎命令

別名的作用:

(1)通過給危險命令加一些參數,防止人爲誤操作。

(2)把很多複雜的字符串或命令變成一個簡單的字符串或命令。

定義別名永久生效:

/etc/profile 全局生效

~/.bashrc 當前用戶生效

在命令行刪除別名可以用 source ~/.bashrc命令加載出來

linux基礎命令

9.mv(move)移動文件

mv [-ifu] [源文件/源目錄] [目的文件/目的目錄]

參數

            -i:如果目錄已經存在,詢問是否覆蓋
            -f:強制執行不再詢問。
            -u:若目的文件存在,則比源文件新纔會移動
            -t: 將所有元數據移動到目錄中 ,結合find使用(重要)。

find命令與xargs命令和mv –t使用可以將查找出來的內容元數據移動到別的目錄。

[root@linzhongniao ~]# find /tmp/ -type f|xargs mv -t /data/

10.rm(remove)刪除目錄和文件

參數:

-f(force)強制

-r(recursive)遞歸,用於刪除目錄。

刪除一個文件用rm 1.txt,此方法會提示確認。禁止使用“rm –rf 文件名”,可以使用“rm -f”,rm –rf一般用來強制刪除目錄不提示,非常危險。rm命令用於刪除文件,rmdir刪除空文件。刪目錄可以用rm -rf強制刪除.但是要慎用!少用最好不用可以將不需要的文件mv移動到tmp目錄下或者其他目錄中,tmp目錄相當於windows的回收站。

linux基礎命令

企業很少用rm直接刪除文件,結合find來刪除文件

11.find命令

find 在目錄結構層次中搜索文件或者目錄

參數:

-type文件類型(f文件,d目錄,c字符類型,b塊設備磁盤,s socket文件通信用的)

-mtime n n爲數字按文件的修改時間查找文件或目錄,n爲數字 ,+7代表七天以前,7代表第七天,-7代表最近7天。

-atime n n爲數字,意義在n天之前的一天內被access過的文件或目錄

-ctime n n爲數字,意義爲在n天之前的一天內被change過狀態的文件或目錄

-inum 查找inode

-perm 4755 按文件或目錄權限查找

-maxdepth 1深度爲1,最底層目錄,因爲第二層也會有目錄那麼不用這個參數有可能不準確,查找文件也是可以用的。

[root@linzhongniao linzhongniao]# find ./ -maxdepth 1 -type d  ! -name "." 
./ext
./wanger
./test
./zhangsan
./lisi

在腳本中刪除文件或目錄時生產場景常用的的方法爲:

(1)和xargs搭配的方法

find . -type -name "*.log" -mtime +7 |xargs rm –f 刪除7天以前的文件
find . -type -name "*.log" -mtime +7 |xargs rm –rf 刪除7天以前的文件慎用

(2)使用find的-exec

find /tmp -type f -mtime +5 -exec rm {} \; 在tmp目錄中查找更改時間爲7天以前的文件並刪除他們

範例:

(1)mv –t 和find命令以及xargs命令的使用。

[root@linzhongniao ~]# find /tmp/ -type f|xargs mv -t /data/

find命令與xargs命令和mv –t使用可以將查找出來的內容元數據移動到別的目錄。

(2)mv 和find命令以及exec命令的使用

[root@linzhongniao ~]# ls eee/
[root@linzhongniao ~]# find . -type f -name "*.txt" -exec mv {} eee/ \;
[root@linzhongniao ~]# ls eee/
 20180819.txt  ett.txthhh.txt  new.txt  sd1.txt  sd3.txt  sd5.txt   sss.txt   svnpass.txt  text.txt
dddd.txt  fdisk.txt  id.txt   nnn.txt  sd2.txt  sd4.txt  sort.txt  svnpass1.txt  svn.txt
[root@linzhongniao ~]# find eee/ -type f -name "*.txt" -exec mv {} -t  . \;  
[root@linzhongniao ~]# ls eee/

這個地方的mv {} eee/ \; 中的“{}”中括號就是前面用find查找的內容,而“\;”就是一個格式。“;”分號是bash的特殊意義用“\”反斜槓轉義。更多find的例題請看下面的企業面試題。

12.grep命令

參數:

-v排除不需要的內容只過濾需要的內容 例子:grep –v linzhongniao text.txt

-B(before) 除了顯示匹配的一行之外,並顯示該行之前的num行

-A(after) 除了顯示匹配的一行之外,並顯示該行之後的num行

-C(Context control) 除了顯示匹配的一行之外,並顯示該行之前後各num行

命令:grep “過濾的內容” -(A|B|C) 行數 文件

--color=auto 對過濾的匹配的字符串加顏色

-n 對匹配的內容打印行號,-n “^$”顯示空格行號。

-i 不區分大小寫。

-E grep –E 可以同過濾多個字符串相當於egrep。

-o 只輸出文件中匹配到的部分,把輸出的內容在新的一行輸出

grep –w 按單詞搜索,只輸出想要的單詞或行。

-x 完全匹配輸出,按行匹配及匹配的內容佔整行只選擇與整行完全匹配的匹配項。

-c 抑制正常輸出或相反,打印匹配的輸出文件的匹配的行數

grep –E 命令演示

[root@linzhongniao ~]# egrep "3306|1521" /etc/services
mysql   3306/tcp# MySQL
mysql   3306/udp   # MySQL
ncube-lm1521/tcp # nCube License Manager
ncube-lm1521/udp# nCube License Manager
[root@linzhongniao ~]# grep -E "3306|1521" /etc/services 
mysql   3306/tcp# MySQL
mysql   3306/udp# MySQL
ncube-lm1521/tcp# nCube License Manager
ncube-lm1521/udp# nCube License Manager

grep –w命令演示按單詞搜索

[root@linzhongniao ~]# grep  "good" linzhongniao.log
goodi
good
[root@linzhongniao ~]# grep -w "good" linzhongniao.log 
good

grep –i命令演示不區分大小寫

[root@linzhongniao ~]# grep -i "linzhongniao" linzhongniao.log 
my god,i am not linzhongniao,But to the birds of the FOREST!!!!
LINZHONGNIAO

grep –o命令演示,對比和grep –w的區別

[root@linzhongniao ~]# grep -o "good" linzhongniao.log 
good
good

grep –x命令演示完全匹配輸出,匹配的內容獨佔一行

[root@linzhongniao ~]# grep -x  "good" linzhongniao.log
good

grep –c參數演示,匹配空行的數量

[root@linzhongniao ~]# grep -c "^$" /etc/services 
16

13.head命令

讀取文件的前n行默認是前10行,head -2或者head –n 2讀取文件的前兩行,也可以一次查看多個文件

[root@linzhongniao ~]# head sd2.txt sd3.txt 
==> sd2.txt <==

==> sd3.txt <==

14.tail

輸出文件的後n行默認後10行,-n 數字,習慣-5,忽略n。
tail –f實時查看系統日誌 tail –f /var/log/messages

模擬更新日誌文件,用tail –f(或者tailf命令不是tail –f的縮寫和tail -F)查看。模擬更新日誌for n in seq 1000;do echo $n >>/var/log/messages;sleep 1;done

15.企業面試題:

1.只查看ett.txt文件(100行)內第20到第30行的內容

在解決本題之前先了解一下seq命令(sequence序列),它可以從低到高打印數字的序列。例如從低到高打印數字10。橫着打印10個數字,用seq –s,-s可以指定分隔符,默認分隔符是回車\n。

linux基礎命令
linux基礎命令

從數字2到10,打印數字10

linux基礎命令

從1開始以2爲等差,打印數字10

linux基礎命令

解答:

演示測試數據:生成ett文件

[root@linzhongniao ~]# seq 100 >ett.txt

方法一:使用head和tail命令結合

先head命令取出前30行,再用tail命令取出倒數11行

linux基礎命令

方法二:

用sed命令,sed(stream editor)流編輯器linux三劍客老二,它可以實現對文件的增刪改查替換功能sed -n ' 'p 。-n取消默認輸出,p打印。

linux基礎命令

擴展:
用sed命令打印行尾 $符號是結尾的意思

linux基礎命令

方法三:三劍客老三

awk,可以過濾輸出內容,它是一門語言,NR代表行號。awk –F 指定分隔符。

awk -F對中括號裏面的內容匹配多次,匹配多個分隔符[ ]+。例如“[ :]+”指定空格和“:”冒號作爲分隔符。

awk –F “[ :]+” ‘{print }’

awk -F "[ :]+" '{print $4}' /etc/passwd

linux基礎命令

方法四:用grep命令

-B 除了顯示匹配的一行之外,並顯示該行之前的num行

-A 除了顯示匹配的一行之外,並顯示該行之後的num行

-C 除了顯示匹配的一行之外,並顯示該行之前後各num行

linux基礎命令
linux基礎命令
linux基礎命令

2.find結合sed查找替換企業案例實戰

在解答本題之前先複習sed –i命令,sed –i修改替換文件內容

先用echo成一個文件

linux基礎命令

用sed替換linzhongniao爲zhangsan。這種只是把輸出改了內容沒有改

linux基礎命令
linux基礎命令

修改內容用sed -i

linux基礎命令

案例:

把/nishishei目錄下及其子目錄下所有以擴展名.sh結尾的文件中包含nishishei的字符串全部替換爲lisi。

解答:

建立測試數據:

linux基礎命令

用find結合sed解決問題

方法一:

linux基礎命令
linux基礎命令

將所有.sh文件裏的nishishei替換成lisi,我們可以用cat查看一下里面的內容,注意不能直接加cat;因爲cat會將管道過濾的內容按數據流進行處理,查看的還是過濾之前的內容,所以要想查看裏面的內容必須加xargs。

linux基礎命令
linux基礎命令

好下面接xargs接sed命令,將所有.sh文件中的nishishei替換成lisi,可以在sed後不加-i參數,先看一下替換的內容對不對。
linux基礎命令

加-i替換

linux基礎命令

方法二:再把lisi改成linzhongniao,道理是一樣的

linux基礎命令

反引號應用命令相當於$(),先執行find再執行sed

16.查看man幫助

用man 命令—help查看命令的幫助信息

Linux內置的命令用man查不到,可以用help 查看。比如cd命令,就要用help cd 查看幫助。

下圖爲linux自帶的命令

linux基礎命令

Linux內置命令是查不到全路徑的,用which查看命令路徑

linux基礎命令

17.特殊符號講解

(1){}中括號,生成字符或者數字序列,類似seq,一般配合echo命令使用,“find /etc -type f -name ".sh"-exec 命令 {} \;” 裏的{}意思是前面find命令查找的結果。

linux基礎命令

linux基礎命令

(2)歎號

!歎號,!後接命令第一個字母,表示找出最近一次以此字母開頭的命令。

linux基礎命令

!!兩個歎號表示上一次操作的命令

linux基礎命令

!歎號後接操作歷史記錄的表示調出最近操作的第幾條命令,查看操作的歷史用history,清空歷史記錄用history –c,用history –d刪除指定行的歷史記錄。“!”歎號後面接302就是把歷史記錄的302行又執行了一遍。

linux基礎命令

(3)波浪線“~”

~波浪線,在root目錄下表示當前目錄,在其他用戶下表示當前用戶的用戶家目錄

(4)橫線“-”

在兩個目錄之間切換時,可以用cd –直接在這兩個目錄之間切換,之所以能夠切換是有$OLDPWD和$PWD兩個參數。

linux基礎命令

18.linux命令行常用快捷鍵

tab 路徑補全鍵

ctrl+c 終止當前任務或程序

ctrl+d 退出當前用戶環境,相當於exit和logout

ctrl+l (是小寫字母L)清屏clear

ctrl+a 移動到一行命令的開頭

ctrl+e 移動到一行命令的結尾

ctrl+u 將光標移動到命令中間清除前面的內容

ctrl+k 將光標移動到命令中間清除後面的內容

ctrl+w 刪除當前行。

ctrl+r 搜索之前用到的命令。

linux基礎命令

ctrl+q 如果長時間光標被鎖定,可以解除鎖定。

19.查看linux系統是32位還是64位的方法

(1)查看系統內存版本uname –m

uname –m查看系統內存版本也可以用uname –a查看系統的所有信息

方法一:

linux基礎命令

方法二:

linux基礎命令

(2)查看裝操作系統版本

linux基礎命令

(3)查看系統內核版本

用uname –r

linux基礎命令

(4)查看主機名

查看主機名用uname –n 或者hostname

[root@linzhongniao ~]# uname -n
linzhongniao
[root@linzhongniao ~]# hostname
linzhongniao

20.touch

它可以創建新文件,更新舊文件的時間戳。創建文件名,touch命令加文件名,touch更改舊文件的時間戳。

-a (change only the access time)改變訪問時間執行touch –a ddd.txt,我們發現訪問時間和改變時間發生了變化。

linux基礎命令

用touch –a只有訪問時間和change時間改變了,修改文件時間沒有變,那我們對ddd.txt文件進行編輯;再用stat命令查看文件屬性,時間戳就改變了。

linux基礎命令

用stat命令查看詳細的文件屬性,access訪問時間,modify修改操作時間對文件進行編輯時間就會改變,change發生改變的時間只要是訪問了文件時間就發生了變化。

linux基礎命令

21.連接CRT問題

客戶端連接服務器端物理鏈路有問題,檢查網卡,IP,網線,防火牆。
連接CRT先在windows端檢查網絡是否ping通,如果ping通還是連接不上CRT,用telnet命令查看linux端ssh服務是否開啓,也可以在windows端用tracert –d(路由跟蹤命令),也可以檢查路由網關是否通暢,-d是不進行反向解析。linux操作系統用traceroute –d ip地址或者域名。

linux基礎命令

linux基礎命令

linux基礎命令

linux基礎命令

linux基礎命令

linux基礎命令

不通的可能原因:

a.服務器端防火牆阻擋關閉防火牆

b.端口沒開,服務器端沒有監聽你連接的端口

netstat -lntup|grep 22
netstat -lntup|grep sshd

22.使用rz和sz注意事項

只能上傳下載文件而不能是目錄,如果是目錄需要打包成文件再上傳。
上傳的文件可以是電腦裏的任意文件,下載的文件會下載到SecureCRT配置的對應下載路徑目錄中。如圖。

linux基礎命令

執行rz命令回車後出現的的窗口下面的,一定不要勾選最下方的“以ASCLL方式上傳文件”,否則會遇到問題如圖

linux基礎命令

23.添加普通用戶

添加用戶並設置密碼

[root@linzhongniao ~]# useradd linzhongniao
[root@linzhongniao ~]# tail -1 /etc/passwd
linzhongniao:x:500:500::/home/linzhongniao:/bin/bash

交互式設計密碼:

[root@linzhongniao ~]# passwd linzhongniao
Changing password for user linzhongniao.
New password: 
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password: 
passwd: all authentication tokens updated successfully.

非交互式設置密碼

root@linzhongniao ~]# echo "1234567"|passwd --stdin linzhongniao
Changing password for user linzhongniao.
passwd: all authentication tokens updated successfully.

切換到普通用戶,必須用su –的格式

[root@linzhongniao ~]# su – linzhongniao

查看路徑

[linzhongniao@linzhongniao ~]$ pwd
/home/linzhongniao

查看當前用戶是誰

[linzhongniao@linzhongniao ~]$ whoami
linzhongniao
ctrl +d退出普通用戶,或者su – root
[linzhongniao@linzhongniao ~]$ logout
[root@linzhongniao ~]# su - lianzhongniao
su: user lianzhongniao does not exist
[root@linzhongniao ~]# su - linzhongniao 
[linzhongniao@linzhongniao ~]$ su - root
Password: 
[root@linzhongniao ~]#

24.linux系統的運行級別

(1)查看運行級別/etc/inittab

[root@linzhongniao ~]# cat /etc/inittab 
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this) 《==停止
#   1 - Single user mode 《==單用戶模式
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)  《==多用戶,沒有NFS(如果有網絡的話也就是 3)
#   3 - Full multiuser mode  《==完整的多用戶模式
#   4 – unused  《==未使用
#   5 - X11《==x11 桌面
#   6 - reboot (Do NOT set initdefault to this) 《==重啓
# 
id:3:initdefault:  《==linux系統默認的運行級別,如果設置成0系統就啓動不了了,默認設置爲3,設置爲6會一直重啓。

(2)查看當前運行級別

[root@linzhongniao ~]# runlevel
N 3

(3)切換運行級別用init

切換運行級別init後面接對應的數字,最常用的運行級別是3和1.
如果要切換桌面,必須安裝桌面軟件

a.檢查一下我們已經安裝的軟件以及可以安裝的軟件,yum grouplist

linux基礎命令

b.安裝X(X Window System),命令爲yum groupinstall "X Window System" 回車, 安裝完成會出現complete安裝成功

linux基礎命令

c.安裝圖形化界面軟件,CentOS6.8需要安裝Desktop ,有的CentOS需要安裝GNOME或者(GNOME Desktop)

[root@linzhongniao ~]# yum groupinstall "Desktop" –y

切換圖形界面出現下面錯誤無法切換,原因是"messagebus”“haldaemon”這兩個服務關閉這是在系統優化時犯的錯誤

linux基礎命令

25.linux關機重啓命令

(1)關機用shutdown命令,還有halt或者init 0,poweroff

我們一般用shutdown –h 後面接時間,shutdown –h now表示現在關閉,
設置指定時間後關機,比如1分鐘後關機

linux基礎命令

(2)重啓

重啓用reboot(init 6)或者shutdown –r now,或者shutdown –r +時間

26.linux系統開機顯示的版本信息的文件

linux基礎命令

linux基礎命令

如果開機不希望顯示這些信息可以清除掉,我們也可以編寫內容

linux基礎命令

27.motd顯示用crt登錄後的信息

在/etc/motd裏面設置

linux基礎命令

28.profile

/etc/profile全局環境變量

29.顯示總行數wc

爲每個文件打印新行、字符和字節計數

參數:

-c 打印字節數

-l 打印行數

-m 打印字符數

-w 打印單詞,統計

-L 打印最長的行的長度,應用它可以知道字符串的長度

舉例:

建立測試數據:

[root@linzhongniao ~]# cat >>wc.txt<<EOF
> WERTYU
> qwedfghj
> asd
> 林中鳥
> EOF
[root@linzhongniao ~]# cat wc.txt 
WERTYU
qwedfghj
asd
林中鳥

wc –l顯示文件的總行數

[root@linzhongniao ~]# wc -l wc.txt
4 wc.txt

-c參數舉例,打印字節數

[root@linzhongniao ~]# wc -c wc.txt
30 wc.txt

-m參數舉例,打印字符數

[root@linzhongniao ~]# wc -m wc.txt  
24 wc.txt 《==和-c參數對比,可知一個漢字相當於兩個字節

-w參數舉例,打印單詞統計

[root@linzhongniao ~]# wc -w wc.txt  
4 wc.txt

-L舉例,打印最長的行的字節數

[root@linzhongniao ~]# wc -L wc.txt   
8 wc.txt

30.設置開機自啓動

chkconfig --list 查看列表顯示所有,顯示某一個直接指定就可以了不用grep

--level 接運行級別 接服務 off[on] (指定哪些運行級別受到影響)

--add 加到chkconfig管理,自己寫的程序腳本纔會用到

chkconfig原理:

它的工作原理就是將服務加入開機自啓動或者關閉自啓動之後會在/etc/rc.d/rc3.d目錄下創建一個連接文件;開機自啓動以S開頭,關閉開機自啓動以K開頭。設置啓動級別可以在啓動文件中設置例如下圖,通常在自己寫的腳本中會用到,不必對其他啓動文件做任何修改。具體操作在開機自啓動優化中。

linux基礎命令

31.grup引導菜單

[root@linzhongniao ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#  all kernel and initrd paths are relative to /boot/, eg.
#  root (hd0,0)
#  kernel /vmlinuz-version ro root=/dev/sda4
#  initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-754.2.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-754.2.1.el6.x86_64 ro root=UUID=ce2ba6aa-2068-45b2-8942-5de30c7a363a rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-754.2.1.el6.x86_64.img
title CentOS 6 (2.6.32-642.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=ce2ba6aa-2068-45b2-8942-5de30c7a363a rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-642.el6.x86_64.img

裏面有linux啓動的內核,設置單用戶啓動或者雙系統就要設置grup引導。

32.linux系統開機自啓動優化

關閉不需要的服務,禁止其開機自啓動服務

[root@linzhongniao ~]# chkconfig --list|grep 3:on|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash
[root@linzhongniao ~]# chkconfig --list|grep 3:on
crond  0:off   1:off   2:on3:on4:on5:on6:off
network0:off   1:off   2:on3:on4:on5:on6:off
rsyslog 0:off   1:off   2:on3:on4:on5:on6:off
sshd   0:off   1:off   2:on3:on4:on5:on6:off
sysstat 0:off   1:on2:on3:on4:on5:on6:off

33.查看文件目錄的大小du

du 查看目錄或文件的大小

參數:

-h 人類可讀

[root@linzhongniao ~]# du ett.txt 
4   ett.txt
[root@linzhongniao ~]# du -h ett.txt  
4.0Kett.txt

--si 像h一樣但是使用1000而不是使用1024的冪

[root@linzhongniao ~]# du --si ett.txt   
4.1kett.txt

-S 查看目錄(不包括子目錄大小)或文件的大小

[root@linzhongniao ~]# du -Sh server/
12K server/scripts
 4.0Kserver/

-s 查看目錄(包括子目錄)或文件的大小

[root@linzhongniao ~]# du -sh ett.txt   
 4.0Kett.txt
[root@linzhongniao ~]# du -sh server/
16K server/

34.命令路徑加入的方法

臨時:

[root@linzhongniao ~]# export  PATH="$PATH:/root"
[root@linzhongniao ~]# nishishei
 -bash: /root/nishishei: Permission denied
[root@linzhongniao ~]# chmod +x /root/nishishei
[root@linzhongniao ~]# nishishei
I am linzhongniao!

永久:

設置環境變量用export PATH="$PATH:/root",永久生效放在/etc/profile全局配置文件裏。

35.查看二進制命令所在路徑

用which查看,從PATH變量所在的路徑查找

[root@linzhongniao ~]# which cp
alias cp='cp -i'
/bin/cp

36.搜索文件的全路徑命令

which命令

[root@linzhongniao ~]# which mv
alias mv='mv -i'
/bin/mv

whereis命令

[root@linzhongniao ~]# whereis mv
mv: /bin/mv /usr/share/man/man1p/mv.1p.gz /usr/share/man/man1/mv.1.gz

locate命令

linux基礎命令

find命令查找文件或目錄

[root@linzhongniao ~]# find . -type f -name "*.txt"

37.cut

cut 從每一行文件中刪除(切割)部分。

cut命令參數說明

(1)-b參數,按照字節切割文件

輸出第3個字節,空格也算一個字節

[root@linzhongniao ~]# cut -b 3 text.txt 
a

輸出第3到4個字節,空格也算一個字節

[root@linzhongniao ~]# cut -b 3-4 text.txt 
am

輸出第四個字節之前的,空格也算一個字節

[root@linzhongniao ~]# cut -b -4 text.txt 
I am

輸出第四個字節以後的內容

[root@linzhongniao ~]# cut -b 4- text.txt 
m linzhongniao my qq is 120989098

(2)-c參數以字符爲單位切割

英文中一個字符就等於一個字節,漢語中一個字符相當於兩個英文字符。

英文中-c參數和-b參數是一樣的。

[root@linzhongniao ~]# cut -c 4- text.txt
m linzhongniao my qq is 120989098

漢語中

[root@linzhongniao ~]# cut -c 3-5 text.txt 
am 

節放假

(3)-d參數指定分隔符

默認以tab鍵爲分隔符,可以提前用cat –T查看是否是以tab鍵爲分隔符,空格和tab鍵是看不出來的。自定義分隔符用-d參數指定分隔符,-f參數指定打印第幾欄的內容。

[root@linzhongniao ~]# head -1 /etc/passwd|cut -d : -f4
0

默認以tab鍵爲分隔符

[root@linzhongniao ~]# cat -T text.txt          
I am linzhongniao my qq is 120340987
中秋節放假
I^Iam^Ilisi
[root@linzhongniao ~]# cut -f 3 text.txt 
I am linzhongniao my qq is 120989098
中秋節放假

lisi

指定以空格爲分隔符

[root@linzhongniao ~]# cut -d " " -f 2 text.txt 
am
中秋節放假

I   am  lisi

38.date

date –s “ ”修改時間

date +%F 輸出這樣的“2018-07-31”年月日格式

date +%Y%m%d%H%M輸出這樣的“201809020834”年月日小時分鐘的格式

[root@linzhongniao ~]# echo `date +%F`
2018-07-31
[root@linzhongniao ~]# echo $(date +%F)
2018-07-31

39.ln命令

ln無參數常見創建硬鏈接,很少用到一般就是備份文件。演示見下文創建硬鏈接和軟連接。

硬鏈接:ln 源文件 目標文件

軟連接:ln –s 源文件 目標文件(目標文件不能事先存在)

40.rename

rename重命名文件

rename from to file

rename

form  代表需要替換或要處理的字符文件的一部分,文件的擴展名

to 把前面from代表的內容替換爲to代表的內容即重命名處理後的結果

file 接要處理的文件

格式:

rename "需要重命名的內容" "重命名完了的內容" (指定要修改的文件也可以是,所有內容)

修改文件名用rename

當前目錄下有文件如下所示:

[root@linzhongniao test]# ls
stu_102999_1_finished.jpg stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg stu_102999_5_finished.jpg

要求用rename命令重命名,效果爲stu_102999_1_finished.jpg==>stu_102999_1.jpg,即刪除文件名的_finished

[root@linzhongniao test]# rename "_finished" "" *
[root@linzhongniao test]# ls
stu_102999_1.jpg  stu_102999_2.jpg  stu_102999_3.jpg  stu_102999_4.jpg  stu_102999_5.jpg

41.basename(瞭解)

basename-從文件名中去掉目錄路徑和文件後綴

去掉目錄路徑

[root@linzhongniao test]# basename /root/test/stu_102999_1.JPG 
stu_102999_1.JPG

去掉文件的後綴

[root@linzhongniao test]# basename stu_102999_1.jpg .jpg
stu_102999_1

42.dirname(瞭解)

dirname——從文件名中去掉文件後綴,與basename命令互補

[root@linzhongniao test]# dirname /root/test/stu_102999_1.JPG
/root/test

43.file

file – 確定文件類型,多個文件用空格分開

[root@linzhongniao ~]# file /etc/init.d/sshd 
/etc/init.d/sshd: Bourne-Again shell script text executable
[root@linzhongniao ~]# file ett.txt 
ett.txt: ASCII text
[root@linzhongniao ~]# file id.txt sd1.txt 
id.txt:  ASCII text
sd1.txt: ASCII text

44.md5sum

md5sum - compute and check MD5 message digest計算和檢查md5摘要。

參數:-c 從文件中讀取MD5值並檢查是否一樣。

計算和校驗文件的md5值,md5值是唯一的;如果兩個文件的md5值一樣那麼這兩個文件就是一個文件,如下面text.soft是text.txt的軟連接文件

[root@linzhongniao ~]# ln -s text.txt text.soft 
[root@linzhongniao ~]# md5sum text.txt 
d41d8cd98f00b204e9800998ecf8427e  text.txt
[root@linzhongniao ~]# md5sum text.soft 
d41d8cd98f00b204e9800998ecf8427e  text.soft

校驗文件的MD5值,用md5sum –c命令,來檢測網絡傳輸的文件數據是否丟失,因爲受網絡波動的影響數據會有丟失或文件受損。

[root@linzhongniao ~]# md5sum text.txt >md5.log
[root@linzhongniao ~]# cat md5.log 
d41d8cd98f00b204e9800998ecf8427e  text.txt
[root@linzhongniao ~]# md5sum -c md5.log 
text.txt: OK

往文件中插入內容,文件的md5值會發生改變,模擬網絡波動

[root@linzhongniao ~]# echo "111" >> text.txt 
[root@linzhongniao ~]# md5sum -c md5.log
text.txt: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match

45.dumpe2fs

dumpe2fs - 顯示ext2/ext3/ext4文件系統信息。

dumpe2fs命令語法:dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device

  語法看起來比較複雜,看不懂的直接看下面的常用命令選項和實例。

dumpe2fs命令描述

  顯示device中文件系統的超級塊和塊組信息。

linux基礎命令

查看文件系統的超級塊和組塊的信息,超級塊記錄了文件系統的管理信息,inode和block的大小,元數據。

[root@linzhongniao ~]# dumpe2fs /dev/sdb1|egrep -i "super" 
dumpe2fs 1.41.12 (17-May-2010)
Filesystem features:  has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
  Primary superblock at 1, Group descriptors at 2-2
  Backup superblock at 8193, Group descriptors at 8194-8194
  Backup superblock at 24577, Group descriptors at 24578-24578
  Backup superblock at 40961, Group descriptors at 40962-40962
  Backup superblock at 57345, Group descriptors at 57346-57346
  Backup superblock at 73729, Group descriptors at 73730-73730
[root@linzhongniao ~]# dumpe2fs /dev/sdb1|egrep -i "inode count|block count" 
dumpe2fs 1.41.12 (17-May-2010)
Inode count:  25896
Block count:  103424
Reserved block count: 5171

46.xargs

xargs 從標準輸入(管道或stdin)獲取數據,並將數據轉換成命令行的參數,創建和執行命令,通常和find以及“|”管道一起使用。

參數:

-n 數字,分組

[root@linzhongniao ~]# xargs -n 2 <linzhongniao.txt 
1 2
3 4
5 6
7 8

-i和-I參數(瞭解)

[root@linzhongniao ~]# find . -type f -name "*.txt"|xargs -i mv {} /tmp/k/
[root@linzhongniao ~]# cd /tmp/k/
[root@linzhongniao k]# ls
2018-07-20.txt  b.txt  fff.txt  linzhongniao.txt  test1.txtuserpasswd3.txt  usersm.txt
 20180806.txtceshi.txt  f.txtperson.txttext.txt userpasswd.txt   users.txt
 201808.txt  ddd.txtggg.txt  sdsd.txt  userpasswd1.txt  usersm1.txt  user.txt
a.txt   ett.txtkkk.txt  sss.txt   userpasswd2.txt  usersm2.txt
[root@linzhongniao k]# find . -type f -name "*.txt"|xargs -I {} mv {} /tmp/l/
[root@linzhongniao k]# cd /tmp/l/
[root@linzhongniao l]# ls
2018-07-20.txt  b.txt  fff.txt  linzhongniao.txt  test1.txtuserpasswd3.txt  usersm.txt
 20180806.txtceshi.txt  f.txtperson.txttext.txt userpasswd.txt   users.txt
 201808.txt  ddd.txtggg.txt  sdsd.txt  userpasswd1.txt  usersm1.txt  user.txt
a.txt   ett.txtkkk.txt  sss.txt   userpasswd2.txt  usersm2.txt

47.tr

tr 對來自標準輸入的字符進行替換、壓縮和刪除。它可以將一組字符變成另一組字符,經常用來編寫優美的單行命令,作用很強大。

tr 選項 參數

(1)將輸入大寫字符逐個(不是整個字符)替換成小寫字符

[root@linzhongniao ~]# echo "HELLO WORLD"|tr 'A-Z' 'a-z' 
hello world

'A-Z' 和 'a-z'都是集合,集合是可以自己制定的。例如:'ABD-}'、'bB.,'、'a-de-h'、'a-c0-9'都屬於集合,集合裏可以使用'\n'、'\t',可以使用其他ASCII字符。

(2)-s參數

-s,squeeze-repeats 替換重複字符的每個輸入序列

[root@linzhongniao ~]# echo "HEELLO WWORLDD"|tr -s 'A-Z' 'a-z' 
helo world

(3)使用tr刪除字符

-d參數刪除所有屬於字符集的字符

[root@linzhongniao ~]# echo "hello 123 world 456"|tr -d '0-9'
hello  world

(4)刪除不在補集中所有字符

-c,取代所有不屬於第一字符集的字符,例刪除除了0-9就的所有內容

[root@linzhongniao ~]# echo "hello$%^^&1 2 3/.(^&world 4 5 6"|tr -d -c '0-9 \n'
1 2 3 4 5 6

也可以結合xargs

[root@linzhongniao ~]# echo "hello$%^^&1 2 3/.(^&world 4 5 6"|tr  -c '0-9' ' '|xargs
1 2 3 4 5 6

48.seq

sequence==seq序列

seq命令(sequence序列),它可以打印數字的序列從低到高。例如從低到高打印數字10。橫着打印10個數字,用seq –s參數,它可以指定分隔符,默認分隔符是回車\n。

參數:

-s 指定分隔符

-w 用前導零來平衡寬度,以01..02..03的形式打印

(1)打印1到10橫着打印或豎着打印,以1.2…..的方式

linux基礎命令

linux基礎命令

(2)-w 用前導零來平衡寬度

豎着打印1到10以01 02 …….的方式

[root@linzhongniao ~]# seq -w 10
01
02
03
04
05
06
07
08
09
10

橫着打印1到10以01 02 …….的方式,以空格爲分隔符

[root@linzhongniao ~]# seq -w -s " " 10 
01 02 03 04 05 06 07 08 09 10

(3)從數字2到10,打印數字10

linux基礎命令

(4)從1開始以2爲等差,豎着打印數字10

linux基礎命令

從1開始以2位等差,橫着打印數字10

[root@linzhongniao ~]# seq -s " " 1 2 10
1 3 5 7 9

49.strace命令跟蹤排查

strace 跟蹤系統調用和信號

參數:

-tt 在每行的輸出的前面,顯示毫秒級別的時間

-T 顯示每次系統調用所花費的時間

-o 把strace的輸出單獨寫到指定的文件

-p 指定要跟蹤進程的pid,要同時跟蹤多個pid,重複多次-p選項即可

–f 跟蹤目標進程,以及目標進程創建的所有子進程。

[root@linzhongniao ~]# strace -f rm -f ddd/

strace –p(pid)跟蹤進程排查,分析任務進程佔用cpu過高的方法。殭屍進程strtace是沒有權限追蹤的。

[root@linzhongniao ~]# strace -p 1387
strace: attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted

用top或者ps命令找到可疑的id,也可以直接用top –H找出佔用線程最高的id

[root@linzhongniao ~]# ps -ef|grep sshd
root   1527  1  0 09:01 ?00:00:00 /usr/sbin/sshd
root   1641   1527  0 09:02 ?00:00:00 sshd: root@pts/0 
root   2116   1645  0 09:26 pts/000:00:00 grep --color=auto sshd
[root@linzhongniao ~]# strace -p 1527

50.查看進程命令

查看進程靜態的用ps動態的用top,也可以用htop效果更佳華麗一點

50.1 ps命令查看靜態進程

ps:將某個時間點的進程情況選取下來

參數(瞭解):

-A 所有進程都顯示出來,與-e有相同的作用

a 不與terminal(終端)有關的程序

u 有效用戶相關的進程

x 通常與a參數一起使用可列出較完整信息,輸出格式規劃

-l 列表,更詳細的將pid列出

-j 列出工作的格式(jobs)

-f 做一個更爲完整的輸出

常用命令(記住):

ps aux查看系統所有的進程信息(重要)

ps –l(小寫的L)只列出與自己有關的進程(重要)

ps –lA 也能查看系統的所有進程信息

ps axjf 連同部分進程樹一起查看

(1)ps aux基礎頁面詳解

linux基礎命令

USER 該進程屬於哪個用戶

PID 進程的PID標識

%CPU 該進程使用的cpu資源百分比

%MEM 該進程所佔用的物理內存百分比

VSZ 該進程用掉的虛擬內存量

RSS 該進程佔用的固定的內存量

TTY 該進程是哪個終端機上面的,若與終端機無關則顯示?,若爲tty1-tty6是本機上面的登錄程序,若pst/0等則表示由網絡連接該主機的進程。

STAT 進程當前的狀態與ps –l的狀態相同

START 進程被觸發啓動的時間

TIME 該進程實際使用cpu運行的時間

COMMAND 該進程的實際命令

(2)ps –l基礎頁面詳解

[root@linzhongniao ~]# ps -l
F S   UIDPID   PPID  C PRI  NI ADDR SZ WCHAN  TTY  TIME CMD
4 S 0   1695   1691  0  82   2 - 27146 do_wai pts/000:00:00 bash
4 T 0  18825   1695  0  82   2 - 34790 do_sig pts/000:00:00 vim
4 R 0  21270   1695  0  82   2 - 27035 -  pts/000:00:00 ps

F:代表進程的標誌說明這個進程的權限,常見號碼有:

若爲4表示此進程的權限爲root。

若爲1 則表示此進程僅可進行復制(fork)而無法實際執行(exec)

S:代表這個進程的狀態,主要狀態有:S R D T Z

R(running)該進程正在運行中

S(sleep)該進程目前正在睡眠狀態,但可以被喚醒

D 不可被喚醒的睡眠狀態

T 停止狀態(stop)可能是工作控制(後臺暫停)或除錯狀態

Z (Zombe)“殭屍”狀態該進程已經停止但無法被刪除至內存外

UID|PID|PPID 代表此進程被該UID擁有|進程的PID號|此進程的父進程的PID號

C 代表CPU使用率,單位爲百分比

PRI /NI Priority/Nice的縮寫,代表此進程被CPU所執行的優先級,數值越小代表該進程越快被cpu執行

50.2 top查看動態進程

參數:

-d 接數字。整個進程更新的秒數

-p 指定某個pid查看

在執行top命令中可以使用的按鍵命令

?:顯示top當中可以輸入的按鍵命令

P :以cpu使用的資源排序

M:以內存的使用資源顯示

N:以pid進行排序

T:由該進程使用的cpu時間積累(TIME+)排序

k:給予某個PID一個信號,殺死進程

r:給予某個PID重新制定一個nice值,先輸入PID值回車再輸入nice值

q:離開top軟件

top命令基礎界面詳解

   [root@linzhongniao ~]# top
   top - 16:30:50 up  8:38,  3 users,  load average: 0.00, 0.00, 0.00
   Tasks: 131 total,   1 running, 130 sleeping,   0 stopped,   0 zombie
   Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
   Mem:   1003008k total,   348588k used,   654420k free,82488k buffers
   Swap:  1535996k total,0k used,  1535996k free,89592k cached

linux基礎命令

第一行:任務隊列信息

16:30:50 當前時間
up  8:38 系統運行時間8小時38分鐘
3 users  當前登錄幾個用戶
load average: 0.00, 0.00, 0.00 系統負載即任務隊列的平均長度,三個數值分別爲1分鐘、5分鐘、15分鐘前系統負載的平均值(重要),也可以用w命令查看或者cat /proc/loadavg

第二行:進程數信息

Tasks: 131 total   進程總數
1 running     一個正在運行的進程數
130 sleeping  130個睡眠的進程數
0 stopped     停止的進程數
0 zombie      殭屍進程數

第三行:CPU狀態

 0.0%us  用戶進程佔用的百分比
 0.1%sy  系統進程佔用的百分比
 0.0%ni  用戶進程空間內改變過優先級的進程佔cpu的百分比
 99.9%id 空閒cpu百分比
 0.0%wa  IO等待佔用CPU的百分比
 0.0%hi  硬中斷佔用cpu的百分比
 0.0%si  軟中斷佔用cpu的百分比

第四行:內存狀態

1003008k total  物理內存量
348588k used    使用的物理內存總量
654420k free    空閒內存總量
82488k buffers  用作內核緩存的內存量

第五行:swap交換狀態

1535996k total  交換區總量
0k used         使用的交換區總量
1535996k free   空閒的交換區總量
89592k cached   緩衝的交換區總量

第七行:各進程的狀態監控

PID 進程ID
user  用戶
PR   優先級
NInice值負值表示高優先級,正值表示低優先級
VIRT  使用的虛擬內存的總量
RES  進程使用的、未被換出的物理內存大小,單位kb
SHR  共享內存大小
%CPU  上次更新到現在的CPU時間佔用百分比
%MEM 進程使用的物理內存百分比
TIME+  進程使用的CPU時間總計,單位1/100秒
COMMAND  命令名/命令行

51.vi/vim命令考察

退出保存 wq

強制退出保存 wq!

強制退出不保存 q!

光標移動到文件的最後一行 G

光標移動到文件的第一行 gg或者:0

移動到指定行 ngg比如21gg

從光標所在位置將光標移動到當前行的開頭 “^”尖括號或者home鍵

從光標所在位置將光標移動到當前行的結尾 “$”或者end鍵

取消上一次的操作 u

刪除一行 dd ndd

向下搜索 /

向上搜索 ?

向上或下繼續搜索 n

向上或下反向搜索 N

52.tac命令(瞭解)

tac反向查看與cat相反,以行爲單位反向讀取,不是每一行反向讀取,即從最後一行開始讀取

[root@linzhongniao ~]# tac ddd/20180806.txt
erwer

dfsadfdf
DS

ds
sdsddjkjk dsjk
djskd
DSDSDS
[root@linzhongniao ~]# cat ddd/20180806.txt
DSDSDS
djskd
sdsddjkjk dsjk
ds

DS
dfsadfdf

erwer

53.rev命令(瞭解)

rev也是反向讀取,行的順序不會變,一行內容的首尾相反

[root@linzhongniao ~]# echo "123456"|rev
654321
[root@linzhongniao ~]# rev ddd/20180806.txt
SDSDSD
dksjd
kjsd kjkjd  dsds
sd

SD
fdfdasfd

rewre

54.more

more命令以滾動的方式查看文件,空格鍵向下一屏回車鍵向下一行,小b向上查看,按等於號顯示行號。/反斜線可以搜索。按小寫的v進入vi編輯器和vi編輯器是一樣的。vi編輯器的命令參數more同樣適用。小寫q退出。

more –“接數字”例如more -10,以10行爲單位查看

55.less命令

less命令也是分頁查看,查顯示行號用less –N

56.paste 命令

paste單詞的意思是粘貼的意思,該命令主要用來將多個文件的內容合併,與cut命令的功能正好相反。
粘貼兩個不同來源的數據時首先需將其分類,並確保兩個文件的行數相同。paste按行合併文件。默認情況下,paste連接用空格或tab鍵分隔新行中的不同文本,除非指定-d選項指定域分隔符。

paste的格式爲:

paste 參數 –file1 –file2

選項含義如下:

-d 指定不同於空格或tab鍵的域分隔符。例如用@符號分隔域,使用- d “@”。

-s 將每個文件每列按行合併而不是按行粘貼,即每個文本的每列,合併後單獨是一行。

“-” 使用標準輸出。例如ls -l |paste ,即只在一列上顯示輸出。

[root@linzhongniao ~]# paste ggg.txt fff.txt 
1   2
2   3
3   4
4   5
5   6
6   7
7   8
8   9
9   10
10  11
11  12
12  13
13  14
14  15
15  16
16  17
17  18
18  19
19  20
20  21

要創建不同於空格或tab鍵的域分隔符,使用-d選項。下面的例子用冒號做域分隔符。

[root@linzhongniao ~]# paste -d ":" ggg.txt fff.txt 
1:2
2:3
3:4
4:5
5:6
6:7
7:8
8:9
9:10
10:11
11:12
12:13
13:14
14:15
15:16
16:17
17:18
18:19
19:20
20:21

交叉合併的例子結合tr命令

[root@linzhongniao ~]# head svn.txt svnpass.txt
==> svn.txt <==
stu119594
stu25054
stu320718
stu424819
stu53033
stu62799
stu725987
stu83282
stu917554
stu1020697
==> svnpass.txt <==
be8e0041
aee8414e
5203ac06
24dbff8a
19390195
bc2c5d29
b1e4a85d
af48f59d
5360caec
38d7a4ff
[root@linzhongniao ~]# paste svn.txt svnpass.txt|tr "\t" "\n"  
stu119594
be8e0041
stu25054
aee8414e
stu320718
5203ac06
stu424819
24dbff8a
stu53033
19390195
stu62799
bc2c5d29
stu725987
b1e4a85d
stu83282
af48f59d
stu917554
5360caec
stu1020697
38d7a4ff

-s參數的用法

[root@linzhongniao ~]# head new.txt newac 
==> new.txt <==
1
2
3
4
5
6
==> newac <==
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#   
id:3:initdefault:
[root@linzhongniao ~]# paste -s new.txt newac
1   2   3   4   5   6
#   3 - Full multiuser mode #   4 - unused  #   5 - X11 #   6 - reboot (Do NOT set initdefault to this)  #   id:3:initdefault:

實例:

已知SVN服務器賬號及密碼字符串如下:

提示:stu開頭的爲賬號,對應的爲密碼

[root@linzhongniao ~]# cat svnpass1.txt
stu119594
be8e0041
stu25054
aee8414e
stu320718
5203ac06
stu424819
24dbff8a
stu53033
19390195
stu62799
bc2c5d29
stu725987
b1e4a85d
stu83282
af48f59d
stu917554
5360caec
stu1020697
38d7a4ff

問題:賬號和密碼合併成一行,並用等號分離

stu119594=be8e0041
stu25054=aee8414e
stu320718=5203ac06

解答:方法一:

[root@linzhongniao ~]# paste -sd "=\n" svnpass1.txt
stu119594=be8e0041
stu25054=aee8414e
stu320718=5203ac06
stu424819=24dbff8a
stu53033=19390195
stu62799=bc2c5d29
stu725987=b1e4a85d
stu83282=af48f59d
stu917554=5360caec
stu1020697=38d7a4ff

方法二:

[root@linzhongniao ~]# paste -d "=" - - <svnpass1.txt 
stu119594=be8e0041
stu25054=aee8414e
stu320718=5203ac06
stu424819=24dbff8a
stu53033=19390195
stu62799=bc2c5d29
stu725987=b1e4a85d
stu83282=af48f59d
stu917554=5360caec
stu1020697=38d7a4ff

57.chpasswd命令

chpasswd以批量處理的方式更新用戶密碼

chpasswd命令是批量更新用戶口令的工具,是把一個文件的內容重新定向添加到/etc/shadow中。

參數:

-e:輸入的密碼是加密後的密文

-h:顯示幫助信息並退出

-m:當被支持的密碼未被加密時,使用MD5加密代替DE5加密。

實例:

先創建用戶密碼對應文件,格式爲username:passwd, 如users1:users1b2b9,必須以這種格式來寫(涉及合併兩個文件可以用paste命令)並且不能空行保存成文本,然後執行chpasswd命令。列如chpasswd<usersm2.txt。

58.dd命令

dd命令用於複製文件並對源文件的內容進行轉換和格式化處理。dd命令可以用來備份裸設備,建議有需要的時候使用dd對物理磁盤操作。還可以創建文件和文件系統。

語法:dd(選項)

選項:

bs=<字節數>:將ibs(輸入)與歐巴桑(輸出)設成指定的字節數;

cbs=<字節數>:轉換時,每次只轉換指定的字節數;

conv=<關鍵字>:指定文件轉換的方式;

count=<區塊數>:僅讀取指定的區塊數;

ibs=<字節數>:每次讀取的字節數;

obs=<字節數>:每次輸出的字節數;

of=<文件>:輸出到文件;

seek=<區塊數>:一開始輸出時,跳過指定的區塊數;

skip=<區塊數>:一開始讀取時,跳過指定的區塊數;

--help:幫助;

--version:顯示版本信息。

實例:

(1)創建文件

[root@linzhongniao ~]# dd if=/dev/zero of=nnn.txt bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.00102039 s, 1.0 GB/s
[root@linzhongniao ~]# du -sh nnn.txt 
1.0Mnnn.txt

if 代表輸入文件。如果不指定if,默認就會從stdin中讀取輸入。

of 代表輸出文件。如果不指定of,默認就會將stdout作爲默認輸出。

bs 代表字節爲單位的塊大小。

count 代表被複制的塊數。

/dev/zero 是一個字符設備,會不斷返回0值字節(\0)。

(2)創建文件系統

[root@linzhongniao ~]# dd if=/dev/zero of=/dev/sdc bs=10M count=100
dd: writing `/dev/sdc': No space left on device
48+0 records in
47+0 records out
498610176 bytes (499 MB) copied, 8.26442 s, 60.3 MB/s

59.查看本地網卡信息

ethtool 是一個linux下的網絡驅動程序的診斷工具,可以獲取網絡設備的相關信息包括連接狀態、驅動版本。

查看機器上網的速度:查看千兆還是百兆的用ethool eth0,操作完畢後輸出信息中“speed”這一項就指示了網卡的速度。

linux基礎命令

如果機器上安裝了兩塊網卡,怎麼確定eth0對應那快網卡呢?執行下面命令看那快的led燈亮就是那個

[root@linzhongniao ~]# ethtool -p eth0 10

將千兆網卡的速度將爲百兆

ethtool –s eth0 speed 100

60.sh命令

sh命令是shell命令語言解釋器,執行命令從標準輸入讀取或從一個文件中讀取,和內核進行溝通。

參數:

-i:實現腳本交互。

-n:進行shell腳本的語法檢查。

-x:實現shell腳本逐條語句的跟蹤。

演示:

(1)-x參數,逐條跟蹤監本的執行過程

[root@linzhongniao ~]# sh -x chuangjianrizhi.sh
++ seq 15
+ for n in '`seq 15`'
+ date -s 2018/07/1
Sun Jul  1 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-01.log
+ for n in '`seq 15`'
+ date -s 2018/07/2
Mon Jul  2 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-02.log
+ for n in '`seq 15`'
+ date -s 2018/07/3
Tue Jul  3 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-03.log
+ for n in '`seq 15`'
+ date -s 2018/07/4
Wed Jul  4 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-04.log
+ for n in '`seq 15`'
+ date -s 2018/07/5
Thu Jul  5 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-05.log
+ for n in '`seq 15`'
+ date -s 2018/07/6
Fri Jul  6 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-06.log
+ for n in '`seq 15`'
+ date -s 2018/07/7
Sat Jul  7 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-07.log
+ for n in '`seq 15`'
+ date -s 2018/07/8
Sun Jul  8 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-08.log
+ for n in '`seq 15`'
+ date -s 2018/07/9
Mon Jul  9 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-09.log
+ for n in '`seq 15`'
+ date -s 2018/07/10
Tue Jul 10 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-10.log
+ for n in '`seq 15`'
+ date -s 2018/07/11
Wed Jul 11 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-11.log
+ for n in '`seq 15`'
+ date -s 2018/07/12
Thu Jul 12 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-12.log
+ for n in '`seq 15`'
+ date -s 2018/07/13
Fri Jul 13 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-13.log
+ for n in '`seq 15`'
+ date -s 2018/07/14
Sat Jul 14 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-14.log
+ for n in '`seq 15`'
+ date -s 2018/07/15
Sun Jul 15 00:00:00 CST 2018
++ date +%F
+ touch /app/logs/access_www_2018-07-15.log
+ date -s 2018/07/16
Mon Jul 16 00:00:00 CST 2018

(2)-n參數,檢查是否有語法錯誤

如果有語法錯誤執行腳本就會報錯,不是很重要如果腳本有錯誤也不會執行

[root@linzhongniao ~]# sh -n chuangjianrizhi.sh 
chuangjianrizhi.sh: line 3: syntax error near unexpected token `do'
chuangjianrizhi.sh: line 3: `do'

(3)-i參數,實現腳本的交互

[root@linzhongniao ~]# sh -i chuangjianrizhi.sh
Sun Jul  1 00:00:00 CST 2018
Mon Jul  2 00:00:00 CST 2018
Tue Jul  3 00:00:00 CST 2018
Wed Jul  4 00:00:00 CST 2018
Thu Jul  5 00:00:00 CST 2018
Fri Jul  6 00:00:00 CST 2018
Sat Jul  7 00:00:00 CST 2018
Sun Jul  8 00:00:00 CST 2018
Mon Jul  9 00:00:00 CST 2018
Tue Jul 10 00:00:00 CST 2018
Wed Jul 11 00:00:00 CST 2018
Thu Jul 12 00:00:00 CST 2018
Fri Jul 13 00:00:00 CST 2018
Sat Jul 14 00:00:00 CST 2018
Sun Jul 15 00:00:00 CST 2018
Mon Jul 16 00:00:00 CST 2018

61.echo命令

echo顯示一行文本

參數:

-n 不輸出後面的換行符

-e 支持對反斜槓轉義的解釋

[root@linzhongniao ~]# echo "dhfjd\ndfjsd"
dhfjd\ndfjsd
[root@linzhongniao ~]# echo -e "dhfjd\ndfjsd"
dhfjd
dfjsd

-E 禁用反斜槓轉義(默認)

[root@linzhongniao ~]# echo -E "dhfjd\ndfjsd"
dhfjd\ndfjsd

echo $RANDOM輸出隨機數通常用於爲用戶設置密碼

[root@linzhongniao ~]# echo $RANDOM
26292

62.free命令

free –m查看物理內存

linux基礎命令

第一部分Mem行:

total內存總數:979M

used 已經使用的內存數:182M

free 空閒的內存數:797M

shared 當前已經廢棄不用,總是0

buffers 緩衝區內存數:16M

cached 緩存內存數:44M

關係:total(979M)=used(182M)+free(797M)

第二部分(-/+ buffers/cache):

(-buffers/cache)used內存數:121M(指的是讀一部分Mem行中的used-buffers-cached)

(+buffers/cache)free內存數:858M(指的是讀一部分Mem行中的free+buffers+cached)

提示:

1.buffers爲寫入緩衝區,“sync;”將緩衝區數據寫入磁盤

2.cache爲讀取數據的緩存區

案例:取出剩餘的物理內存

[root@linzhongniao ~]# free -m|awk -F " " 'NR==3{ print $4}'
852

63.sync命令

同步-刷新文件系統緩衝區buffer,將緩衝區數據寫入磁盤

[root@linzhongniao ~]# sync;

64.split命令

cut命令是對文件的一行進行切割。split 的功能使把文件分成幾部分,按指定行數大小進行切割

語法:

split 選項 輸入的文件 輸出的文件_後綴

參數:

-l(小寫的L) 指定行數

-a 使用長度爲N(N爲數字)的後綴(默認2),及後綴的長度

-d - d,numeric-suffixes 使用數字後綴而不是字母

-b 指定輸出文件字節大小

每個輸出文件放置大小字節

實例:

(1) -l(L)參數

[root@linzhongniao ~]# split -l 10 /etc/inittab new 
[root@linzhongniao ~]# ls n
newaa  newab  newac  nishishei  nnn.txt
[root@linzhongniao ~]# head newaa  newab  newac
==> newaa <==
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#

==> newab <==
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

==> newac <==
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:3:initdefault:
[root@linzhongniao ~]# wc -l ne*
 10 newaa
 10 newab
 6 newac
 26 total

(2)-a參數舉例說明

[root@linzhongniao ~]# split -l 10 -a 3 /etc/inittab new2
[root@linzhongniao ~]# wc -l new2*
 10 new2aaa
 10 new2aab
 6 new2aac
 26 total

(3)-d參數舉例

[root@linzhongniao ~]# split -l 10 -a 4 -d /etc/inittab inittabb
[root@linzhongniao ~]# wc -l inittabb*
 10 inittabb0000
 10 inittabb0001
 6 inittabb0002
 26 total

65.diff和vimdiff命令

(1)diff比較兩個文件的不同

[root@linzhongniao ~]# diff chuangjianrizhi.sh chuangjianrizhi.ori.sh 
0a1   《==add增加的意思
> #!/bin/bash
2c3   《==change改變的意思
< for n in `seq 15`
---
> for n in `seq 20`
7d7   《==del刪除的意思
< date -s '2018/07/16'

除了比較文件的不同還可以比較目錄的不同

[root@linzhongniao ~]# diff /etc/rc3.d/ /etc/rc4.d/
Only in /etc/rc3.d/: K60nfs
Only in /etc/rc4.d/: S30nfs

(2)以編譯的方式查看多個(最多四個)文件的不同

用diff命令不顯眼。可以用vimdiff可視化工具。vimdiff相當於vim -d

linux基礎命令

66.tee多重重定向命令

從標準輸入讀取並寫入標準輸出和文件,把輸出的結果在屏幕顯示並重定向到文件中。

參數:-a 將輸出的結果追加重定向到文件中

[root@linzhongniao ~]# ls|tee /tmp/tee.txt
a
anaconda-ks.cfg
b
backup_2018-08-04-14-00.tar.gz
backup_201808042059.tar.gz
backup_201808042100.tar.gz
.....
install.log
......
sd4.txt
sd5.txt
server
soft_file
sort.txt
.......
woshishei
woshishei_hard_link
[root@linzhongniao ~]# wc -l /tmp/tee.txt 
62 /tmp/tee.txt

-a參數舉例,將內容追加重定向到文件中

[root@linzhongniao ~]# ls|tee -a /tmp/tee.txt 
a
anaconda-ks.cfg
b
......
,,,,,,,,
id.txt
inittab100
inittab101
inittab102
......
Pictures
Public
r
sd1.txt
sd2.txt
sd3.txt
sd4.txt
.......
text.soft
useradd
Videos
woshishei
woshishei_hard_link
[root@linzhongniao ~]# wc -l /tmp/tee.txt
124 /tmp/tee.txt

67.od命令

od命令用戶查看二進制文件

68.sort命令(重要)

sort將文件進行排序默認從小到大排序,並將排序結果標準輸出,sort命令既可以從特定的文件,也可以從stdin中獲取輸入。

語法:

sort 參數 文件

參數:

-u 壓縮相同行

-n是按照數字大小排序

-r是以相反順序排序

-k是指定需要排序的欄位

-t指定分隔符

實例:

sort將文件或者文本的每一行作爲一個單位,相互比較,比較原則是從首字母向後依次按ASCII碼值進行比較,最後將他們按升序輸出。

[root@linzhongniao ~]# cat id.txt 
 10.0.0.5
 10.0.0.1
 10.0.0.2
 10.0.0.3
 10.0.0.4
 10.0.0.5
 10.0.0.5
[root@linzhongniao ~]# sort id.txt
 10.0.0.1
 10.0.0.2
 10.0.0.3
 10.0.0.4
 10.0.0.5
 10.0.0.5
 10.0.0.5

壓縮相同行使用-u選項或者uniq也可以壓縮相同行的數據。uniq 報告或忽略重複的相鄰行它只能壓縮相鄰行,
uniq –c命令統計相鄰相同行單詞出現的次數,可以用來計算單詞出現的次數。

[root@linzhongniao ~]# cat id.txt 
 10.0.0.5
 10.0.0.1
 10.0.0.2
 10.0.0.3
 10.0.0.4
 10.0.0.5
 10.0.0.5

sort –u和uniq對比

[root@linzhongniao ~]# sort -u id.txt 
 10.0.0.1
 10.0.0.2
 10.0.0.3
 10.0.0.4
 10.0.0.5
[root@linzhongniao ~]# uniq id.txt  
 10.0.0.5
 10.0.0.1
 10.0.0.2
 10.0.0.3
 10.0.0.4
 10.0.0.5

uniq –c命令演示

[root@linzhongniao ~]# uniq -c id.txt 
  1 10.0.0.5
  1 10.0.0.1
  1 10.0.0.2
  1 10.0.0.3
  1 10.0.0.4
  2 10.0.0.5

sort的-n、-r、-k、-t選項的使用

將第二列的數字按照從小到大的順序排列

[root@linzhongniao ~]# sort -nk 2 -t: sort.txt 
aaa:10:1.1
bbb:20:2.2
ccc:30:3.3
ddd:40:4.4
eee:50:5.5
eee:50:5.5

將第三例數字從大到小排列``

[root@linzhongniao ~]# sort -nrk 3 -t: sort.txt  
eee:50:5.5
eee:50:5.5
ddd:40:4.4
ccc:30:3.3
bbb:20:2.2
aaa:10:1.1

69.查詢命令講解

(1)用戶及日誌查詢

w命令 顯示誰登陸了,他們在做什麼,查看系統負載平均值信息

who命令 顯示誰登錄了

[root@linzhongniao ~]# w
 09:05:58 up 11:08,  3 users,  load average: 0.00, 0.00, 0.00
USER TTY  FROM  LOGIN@   IDLE   JCPU   PCPU WHAT
root tty1 -07Aug18 389days  0.06s  0.06s -bash
root pts/1zbf666   07Aug18  0.00s  0.48s  0.00s w
root pts/2zbf666   00:029:05m  0.05s  0.01s -bash
[root@linzhongniao ~]# who
root tty1 2018-08-07 08:54
root pts/12018-08-07 10:19 (administrator)
root pts/22018-09-01 00:02 (administrator)

(2)顯示誰登錄

last ,lastb命令顯示最後登錄的用戶列表

(3)lastlog命令

lastlog 顯示最近系統用戶的登錄情況它會讀/var/log/lastlog文件

(4)finger

finger查找用戶信息

參數說明:

-l 多行顯示

-s 單行顯示

[root@linzhongniao ~]# finger -l 
Login: root Name: root
Directory: /rootShell: /bin/bash
On since Tue Sep  3 05:26 (CST) on tty11 day 4 hours idle  登錄時間
On since Tue Sep  3 05:26 (CST) on pts/0 from 192.168.18.3  登錄的窗口
On since Tue Sep  3 06:07 (CST) on pts/1 from 192.168.18.3 登錄的窗口
   3 hours 2 minutes idle
On since Wed Sep  4 05:07 (CST) on pts/2 from 192.168.18.3
   4 hours 37 minutes idle
New mail received Tue Sep  3 07:41 2019 (CST)
 Unread since Thu Jun 28 17:01 2018 (CST)
No Plan.
[root@linzhongniao ~]# finger -s
Login Name   Tty  Idle  Login Time   Office Office Phone
root  root   tty1   1d  Sep  3 05:26
root  root   pts/0  Sep  3 05:26 (192.168.18.3)
root  root   pts/13:02  Sep  3 06:07 (192.168.18.3)
root  root   pts/24:37  Sep  4 05:07 (192.168.18.3)

70.企業面試題2

1.如何過濾出已知當前目錄下linzhongniao中的所有一級目錄(提示:不包含linzhongniao目錄下面目錄的子目錄及隱藏目錄,即只能是一級目錄)

創建模擬數據

[root@linzhongniao ~]# mkdir linzhongniao
[root@linzhongniao ~]# cd linzhongniao
[root@linzhongniao linzhongniao]# ls
[root@linzhongniao linzhongniao]# mkdir ext/linzhongniao test zhangsan lisi wanger -p 
[root@linzhongniao linzhongniao]# touch nishishei linzhongniao wodi.gz nimei.gz

分析過程:要完成此題,要先想如何區分目錄和文件?

方法:

(1)根據顏色區分文件和目錄

(2)ls –l輸出結果中以d(全拼directory)開頭的就是目錄。

(3)通過給目錄加標識,然後過濾帶標識的,就過濾出目錄(ls –F或ls -p)-F表示不同的文件加不同的標識,-p表示只給目錄加斜線。

linux基礎命令

(4) 通過find查找指定類型的文件(-d 就是目錄)

實戰:方法一:

[root@linzhongniao linzhongniao]# ls -l
total 20
drwxr-xr-x. 3 root root 4096 Jul  3 15:29 ext
 -rw-r--r--. 1 root root0 Jul  3 15:31 linzhongniao
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 lisi
 -rw-r--r--. 1 root root0 Jul  3 15:31 nimei.gz
 -rw-r--r--. 1 root root0 Jul  3 15:31 nishishei
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 test
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 wanger
 -rw-r--r--. 1 root root0 Jul  3 15:31 wodi.gz
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 zhangsan
[root@linzhongniao linzhongniao]# ls -l|grep "^d" 《==尖括號表示以什麼開頭
drwxr-xr-x. 3 root root 4096 Jul  3 15:29 ext
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 lisi
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 test
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 wanger
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 zhangsan

方法二:

[root@linzhongniao linzhongniao]# ls -F
ext/  lisi/ nishishei  wanger/  zhangsan/
linzhongniao  nimei.gz  test/  wodi.gz
[root@linzhongniao linzhongniao]# ls -F|grep "/$"   《== “/$”以斜槓結尾
ext/
lisi/
test/
wanger/
zhangsan/

方法三:

-maxdepth 1深度爲1,最底層目錄,因爲第二層也會有目錄那麼不用這個參數有可能不準確,查找文件也是可以用的。

[root@linzhongniao linzhongniao]# find ./ -maxdepth 1 -type d  ! -name "." 
./ext
./wanger
./test
./zhangsan
./lisi

方法四:awk的過濾功能

[root@linzhongniao linzhongniao]# ls -l|awk '/^d/'
drwxr-xr-x. 3 root root 4096 Jul  3 15:29 ext
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 lisi
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 test
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 wanger
drwxr-xr-x. 2 root root 4096 Jul  3 15:29 zhangsan

方法五:

[root@linzhongniao linzhongniao]# ls -F|sed -n '/\/$/p'
ext/
lisi/
test/
wanger/
zhangsan/

2.刪除apache日誌

已知apache服務的訪問日誌文件按天記錄在服務器本地目錄/app/logs下,由於磁盤緊張,現在要求只能保留最近7天的訪問日誌。請問如何解決?

模擬數據

[root@linzhongniao ~]# cat chuangjianrizhi.sh 
for n in `seq 15`
do
date -s "2018/07/$n"
touch /app/logs/access_www_$(date +%F).log
done
date -s '2018/07/16'
[root@linzhongniao ~]# ls -lrt /app/logs/
total 0
 -rw-r--r--. 1 root root 0 Jul  1 00:00 access_www_2018-07-01.log
 -rw-r--r--. 1 root root 0 Jul  2 00:00 access_www_2018-07-02.log
 -rw-r--r--. 1 root root 0 Jul  3 00:00 access_www_2018-07-03.log
 -rw-r--r--. 1 root root 0 Jul  4 00:00 access_www_2018-07-04.log
 -rw-r--r--. 1 root root 0 Jul  5 00:00 access_www_2018-07-05.log
 -rw-r--r--. 1 root root 0 Jul  6 00:00 access_www_2018-07-06.log
 -rw-r--r--. 1 root root 0 Jul  7 00:00 access_www_2018-07-07.log
 -rw-r--r--. 1 root root 0 Jul  8 00:00 access_www_2018-07-08.log
 -rw-r--r--. 1 root root 0 Jul  9 00:00 access_www_2018-07-09.log
 -rw-r--r--. 1 root root 0 Jul 10 00:00 access_www_2018-07-10.log
 -rw-r--r--. 1 root root 0 Jul 11 00:00 access_www_2018-07-11.log
 -rw-r--r--. 1 root root 0 Jul 12 00:00 access_www_2018-07-12.log
 -rw-r--r--. 1 root root 0 Jul 13 00:00 access_www_2018-07-13.log
 -rw-r--r--. 1 root root 0 Jul 14 00:00 access_www_2018-07-14.log
 -rw-r--r--. 1 root root 0 Jul 15 00:00 access_www_2018-07-15.log

解答:刪除七天前的

先查看一下七天前的日誌文件

[root@linzhongniao ~]# find /app/logs/ -type f -mtime +7
/app/logs/access_www_2018-07-07.log
/app/logs/access_www_2018-07-05.log
/app/logs/access_www_2018-07-08.log
/app/logs/access_www_2018-07-02.log
/app/logs/access_www_2018-07-03.log
/app/logs/access_www_2018-07-01.log
/app/logs/access_www_2018-07-04.log
/app/logs/access_www_2018-07-06.log

刪除七天前的日誌文件

方法一:fine結合xargs

[root@linzhongniao ~]# find /app/logs/ -type f -mtime +7|xargs rm -f
[root@linzhongniao ~]# ls -lrt /app/logs/ 
total 0
 -rw-r--r--. 1 root root 0 Jul  9 00:00 access_www_2018-07-09.log
 -rw-r--r--. 1 root root 0 Jul 10 00:00 access_www_2018-07-10.log
 -rw-r--r--. 1 root root 0 Jul 11 00:00 access_www_2018-07-11.log
 -rw-r--r--. 1 root root 0 Jul 12 00:00 access_www_2018-07-12.log
 -rw-r--r--. 1 root root 0 Jul 13 00:00 access_www_2018-07-13.log
 -rw-r--r--. 1 root root 0 Jul 14 00:00 access_www_2018-07-14.log
 -rw-r--r--. 1 root root 0 Jul 15 00:00 access_www_2018-07-15.log

方法二:find結合-exec

[root@linzhongniao ~]# find /app/logs/ -type f -mtime +7 -exec rm -f {} \;
[root@linzhongniao ~]# ls -lrt /app/logs/
total 0
 -rw-r--r--. 1 root root 0 Jul  9 00:00 access_www_2018-07-09.log
 -rw-r--r--. 1 root root 0 Jul 10 00:00 access_www_2018-07-10.log
 -rw-r--r--. 1 root root 0 Jul 11 00:00 access_www_2018-07-11.log
 -rw-r--r--. 1 root root 0 Jul 12 00:00 access_www_2018-07-12.log
 -rw-r--r--. 1 root root 0 Jul 13 00:00 access_www_2018-07-13.log
 -rw-r--r--. 1 root root 0 Jul 14 00:00 access_www_2018-07-14.log
 -rw-r--r--. 1 root root 0 Jul 15 00:00 access_www_2018-07-15.log

方法三:先用find查找出來在用rm刪除

[root@linzhongniao ~]# rm -f `find /app/logs/ -type f -mtime +7`
[root@linzhongniao ~]# ls -lrt /app/logs/
total 0
 -rw-r--r--. 1 root root 0 Jul  9 00:00 access_www_2018-07-09.log
 -rw-r--r--. 1 root root 0 Jul 10 00:00 access_www_2018-07-10.log
 -rw-r--r--. 1 root root 0 Jul 11 00:00 access_www_2018-07-11.log
 -rw-r--r--. 1 root root 0 Jul 12 00:00 access_www_2018-07-12.log
 -rw-r--r--. 1 root root 0 Jul 13 00:00 access_www_2018-07-13.log
 -rw-r--r--. 1 root root 0 Jul 14 00:00 access_www_2018-07-14.log
 -rw-r--r--. 1 root root 0 Jul 15 00:00 access_www_2018-07-15.log

3.裝完系統後,希望讓網絡文件NFS,僅在3級別上開機自啓動,該如何做?

第一種文件配置方法,可以把要重啓的服務器的命令放在/etc/rc.local裏。

解答:全部關掉然後開啓需要的級別的服務。

[root@linzhongniao ~]# chkconfig nfs on
[root@linzhongniao ~]# chkconfig --list nfs
nfs 0:off   1:off   2:on3:on4:on5:on6:off
[root@linzhongniao ~]# chkconfig nfs off
[root@linzhongniao ~]# chkconfig --list nfs
nfs 0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@linzhongniao ~]# chkconfig --level 3 nfs on
[root@linzhongniao ~]# chkconfig --list nfs
nfs 0:off   1:off   2:off   3:on4:off   5:off   6:off

也可以將2345都開啓

[root@linzhongniao ~]# chkconfig --level 2345 nfs on
[root@linzhongniao ~]# chkconfig --list nfs
nfs 0:off   1:off   2:on3:on4:on5:on6:off
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章