例子:mkdir /data 在根/下建立data目錄,mkdir –p建立連續目錄node
例子:ls / 列根/目錄下目錄和文件mysql
參數:linux
-l(long)長格式,查看文件的權限,屬主屬組信息面試
-d(directorys)查看目錄 sql
-ld查看目錄的權限屬主屬組信息shell
–r(反轉排序,倒敘)apache
-t(按修改時間排序)vim
-F給每一個輸出項追加文件的類型標識「*」表示具備可執行權限的普通文件,「/」表示目錄,「@」表示符號連接,「|」表示命令管道FIFO,「=」表示sockets套接字。當文件爲普通文件時,不輸出任何標識符。windows
-p 只給目錄加標識緩存
-i查看inode節點
-h人類可讀,人類可讀就是將大小整數化,好比1024k就算成1M了。
例子:cd /etc
cd ..返回上一級目錄 cd .當前目錄 cd – 返回上一次目錄 cd ~返回用戶家目錄
cd –演示
爲何cd –能夠返回上一次目錄,由於cd –調用了OLDPWD變量和PWD變量
Windows絕對路徑:D:\娛樂\音樂,從頭(盤符)開始的路徑。
linux絕對路徑:cat /etc/sysconfig/network-scripts/ifcfg-eth0,從「/」開始的路徑。
相對路徑:不從根/開始,不從頭開始的路徑。
例如:cd /linzhongniao/這種進入目錄的方法就是絕對路徑,
cd linzhongniao/這種進入目錄的方法就是相對路徑。
特殊符號:
或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
方法一:
[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
參數說明
(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
拷貝文件和目錄
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
已知/tmp目錄下已經存在了test.txt文件,如何執行命令才能把/mnt/test.txt拷貝到/tmp下覆蓋掉/tmp/test.txt,而讓linux系統不提示是否覆蓋。
方法一:在命令前加反斜線「\」屏蔽別名
方法二:加命令的全路徑,用which查看命令全路徑
解題思路就是屏蔽掉系統默認的對應命令別名,默認執行cp的操做是調用了別名,因此會提示覆蓋。還能夠用下面的修改別名的方法
cp mv rm 這些命令比較危險,因此係統會自動的爲這些命令添加別名,會自動的在命令後加-i 當執行這些命令的時候就會詢問是否執行。咱們使用反斜線的做用就是屏蔽它的別名功能。查看系統別名用alias。
方法四:也能夠用unalias +命令,將別名刪掉。刪除cp的別名在複製有重複文件就不會提示是否覆蓋了。瞭解原理不要操做,只是臨時的重啓服務器以後別名還會存在。
刪除別名後也能夠用alias命令添加別名 alias cp=’cp -i’
也能夠設置別名提示別人慎用此命令,例如rm命令
給網卡設置別名,在查網卡的時候命令很長記不住就能夠設置別名
別名的做用:
(1)經過給危險命令加一些參數,防止人爲誤操做。
(2)把不少複雜的字符串或命令變成一個簡單的字符串或命令。
定義別名永久生效:
/etc/profile 全局生效
~/.bashrc 當前用戶生效
在命令行刪除別名能夠用 source ~/.bashrc命令加載出來
mv [-ifu] [源文件/源目錄] [目的文件/目的目錄]
參數
-i:若是目錄已經存在,詢問是否覆蓋 -f:強制執行再也不詢問。 -u:若目的文件存在,則比源文件新纔會移動 -t: 將全部元數據移動到目錄中 ,結合find使用(重要)。
find命令與xargs命令和mv –t使用能夠將查找出來的內容元數據移動到別的目錄。
[root@linzhongniao ~]# find /tmp/ -type f|xargs mv -t /data/
參數:
-f(force)強制
-r(recursive)遞歸,用於刪除目錄。
刪除一個文件用rm 1.txt,此方法會提示確認。禁止使用「rm –rf 文件名」,可使用「rm -f」,rm –rf通常用來強制刪除目錄不提示,很是危險。rm命令用於刪除文件,rmdir刪除空文件。刪目錄能夠用rm -rf強制刪除.可是要慎用!少用最好不用能夠將不須要的文件mv移動到tmp目錄下或者其餘目錄中,tmp目錄至關於windows的回收站。
企業不多用rm直接刪除文件,結合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的例題請看下面的企業面試題。
參數:
-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
讀取文件的前n行默認是前10行,head -2或者head –n 2讀取文件的前兩行,也能夠一次查看多個文件
[root@linzhongniao ~]# head sd2.txt sd3.txt ==> sd2.txt <== ==> sd3.txt <==
輸出文件的後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
在解決本題以前先了解一下seq命令(sequence序列),它能夠從低到高打印數字的序列。例如從低到高打印數字10。橫着打印10個數字,用seq –s,-s能夠指定分隔符,默認分隔符是回車\n。
從數字2到10,打印數字10
從1開始以2爲等差,打印數字10
解答:
演示測試數據:生成ett文件
[root@linzhongniao ~]# seq 100 >ett.txt
方法一:使用head和tail命令結合
先head命令取出前30行,再用tail命令取出倒數11行
方法二:
用sed命令,sed(stream editor)流編輯器linux三劍客老二,它能夠實現對文件的增刪改查替換功能sed -n ' 'p 。-n取消默認輸出,p打印。
擴展:
用sed命令打印行尾 $符號是結尾的意思
方法三:三劍客老三
awk,能夠過濾輸出內容,它是一門語言,NR表明行號。awk –F 指定分隔符。
awk -F對中括號裏面的內容匹配屢次,匹配多個分隔符[ ]+。例如「[ :]+」指定空格和「:」冒號做爲分隔符。
awk –F 「[ :]+」 ‘{print }’
awk -F "[ :]+" '{print $4}' /etc/passwd
方法四:用grep命令
-B 除了顯示匹配的一行以外,並顯示該行以前的num行
-A 除了顯示匹配的一行以外,並顯示該行以後的num行
-C 除了顯示匹配的一行以外,並顯示該行以前後各num行
在解答本題以前先複習sed –i命令,sed –i修改替換文件內容
先用echo成一個文件
用sed替換linzhongniao爲zhangsan。這種只是把輸出改了內容沒有改
修改內容用sed -i
案例:
把/nishishei目錄下及其子目錄下全部以擴展名.sh結尾的文件中包含nishishei的字符串所有替換爲lisi。
解答:
創建測試數據:
用find結合sed解決問題
方法一:
將全部.sh文件裏的nishishei替換成lisi,咱們能夠用cat查看一下里面的內容,注意不能直接加cat;由於cat會將管道過濾的內容按數據流進行處理,查看的仍是過濾以前的內容,因此要想查看裏面的內容必須加xargs。
好下面接xargs接sed命令,將全部.sh文件中的nishishei替換成lisi,能夠在sed後不加-i參數,先看一下替換的內容對不對。
加-i替換
方法二:再把lisi改爲linzhongniao,道理是同樣的
反引號應用命令至關於$(),先執行find再執行sed
用man 命令—help查看命令的幫助信息
Linux內置的命令用man查不到,能夠用help 查看。好比cd命令,就要用help cd 查看幫助。
下圖爲linux自帶的命令
Linux內置命令是查不到全路徑的,用which查看命令路徑
(1){}中括號,生成字符或者數字序列,相似seq,通常配合echo命令使用,「find /etc -type f -name ".sh"-exec 命令 {} \;」 裏的{}意思是前面find命令查找的結果。
(2)歎號
!歎號,!後接命令第一個字母,表示找出最近一次以此字母開頭的命令。
!!兩個歎號表示上一次操做的命令
!歎號後接操做歷史記錄的表示調出最近操做的第幾條命令,查看操做的歷史用history,清空歷史記錄用history –c,用history –d刪除指定行的歷史記錄。「!」歎號後面接302就是把歷史記錄的302行又執行了一遍。
(3)波浪線「~」
~波浪線,在root目錄下表示當前目錄,在其餘用戶下表示當前用戶的用戶家目錄
(4)橫線「-」
在兩個目錄之間切換時,能夠用cd –直接在這兩個目錄之間切換,之因此可以切換是有$OLDPWD和$PWD兩個參數。
tab 路徑補全鍵
ctrl+c 終止當前任務或程序
ctrl+d 退出當前用戶環境,至關於exit和logout
ctrl+l (是小寫字母L)清屏clear
ctrl+a 移動到一行命令的開頭
ctrl+e 移動到一行命令的結尾
ctrl+u 將光標移動到命令中間清除前面的內容
ctrl+k 將光標移動到命令中間清除後面的內容
ctrl+w 刪除當前行。
ctrl+r 搜索以前用到的命令。
ctrl+q 若是長時間光標被鎖定,能夠解除鎖定。
(1)查看系統內存版本uname –m
uname –m查看系統內存版本也能夠用uname –a查看系統的全部信息
方法一:
方法二:
(2)查看裝操做系統版本
(3)查看系統內核版本
用uname –r
(4)查看主機名
查看主機名用uname –n 或者hostname
[root@linzhongniao ~]# uname -n linzhongniao [root@linzhongniao ~]# hostname linzhongniao
它能夠建立新文件,更新舊文件的時間戳。建立文件名,touch命令加文件名,touch更改舊文件的時間戳。
-a (change only the access time)改變訪問時間執行touch –a ddd.txt,咱們發現訪問時間和改變時間發生了變化。
用touch –a只有訪問時間和change時間改變了,修改文件時間沒有變,那咱們對ddd.txt文件進行編輯;再用stat命令查看文件屬性,時間戳就改變了。
用stat命令查看詳細的文件屬性,access訪問時間,modify修改操做時間對文件進行編輯時間就會改變,change發生改變的時間只要是訪問了文件時間就發生了變化。
客戶端鏈接服務器端物理鏈路有問題,檢查網卡,IP,網線,防火牆。
鏈接CRT先在windows端檢查網絡是否ping通,若是ping通仍是鏈接不上CRT,用telnet命令查看linux端ssh服務是否開啓,也能夠在windows端用tracert –d(路由跟蹤命令),也能夠檢查路由網關是否通暢,-d是不進行反向解析。linux操做系統用traceroute –d ip地址或者域名。
不通的可能緣由:
a.服務器端防火牆阻擋關閉防火牆
b.端口沒開,服務器端沒有監聽你鏈接的端口
netstat -lntup|grep 22 netstat -lntup|grep sshd
只能上傳下載文件而不能是目錄,若是是目錄須要打包成文件再上傳。
上傳的文件能夠是電腦裏的任意文件,下載的文件會下載到SecureCRT配置的對應下載路徑目錄中。如圖。
執行rz命令回車後出現的的窗口下面的,必定不要勾選最下方的「以ASCLL方式上傳文件」,不然會遇到問題如圖
添加用戶並設置密碼
[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 ~]#
(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
b.安裝X(X Window System),命令爲yum groupinstall "X Window System" 回車, 安裝完成會出現complete安裝成功
c.安裝圖形化界面軟件,CentOS6.8須要安裝Desktop ,有的CentOS須要安裝GNOME或者(GNOME Desktop)
[root@linzhongniao ~]# yum groupinstall "Desktop" –y
切換圖形界面出現下面錯誤沒法切換,緣由是"messagebus」「haldaemon」這兩個服務關閉這是在系統優化時犯的錯誤
(1)關機用shutdown命令,還有halt或者init 0,poweroff
咱們通常用shutdown –h 後面接時間,shutdown –h now表示如今關閉,
設置指定時間後關機,好比1分鐘後關機
(2)重啓
重啓用reboot(init 6)或者shutdown –r now,或者shutdown –r +時間
若是開機不但願顯示這些信息能夠清除掉,咱們也能夠編寫內容
在/etc/motd裏面設置
/etc/profile全局環境變量
爲每一個文件打印新行、字符和字節計數
參數:
-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
chkconfig --list 查看列表顯示全部,顯示某一個直接指定就能夠了不用grep
--level 接運行級別 接服務 off[on] (指定哪些運行級別受到影響)
--add 加到chkconfig管理,本身寫的程序腳本纔會用到
chkconfig原理:
它的工做原理就是將服務加入開機自啓動或者關閉自啓動以後會在/etc/rc.d/rc3.d目錄下建立一個鏈接文件;開機自啓動以S開頭,關閉開機自啓動以K開頭。設置啓動級別能夠在啓動文件中設置例以下圖,一般在本身寫的腳本中會用到,沒必要對其餘啓動文件作任何修改。具體操做在開機自啓動優化中。
[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引導。
關閉不須要的服務,禁止其開機自啓動服務
[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
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/
臨時:
[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全局配置文件裏。
用which查看,從PATH變量所在的路徑查找
[root@linzhongniao ~]# which cp alias cp='cp -i' /bin/cp
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命令
find命令查找文件或目錄
[root@linzhongniao ~]# find . -type f -name "*.txt"
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
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
ln無參數常見建立硬連接,不多用到通常就是備份文件。演示見下文建立硬連接和軟鏈接。
硬連接:ln 源文件 目標文件
軟鏈接:ln –s 源文件 目標文件(目標文件不能事先存在)
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
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
dirname——從文件名中去掉文件後綴,與basename命令互補
[root@linzhongniao test]# dirname /root/test/stu_102999_1.JPG /root/test
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
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
dumpe2fs - 顯示ext2/ext3/ext4文件系統信息。
dumpe2fs命令語法:dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device
語法看起來比較複雜,看不懂的直接看下面的經常使用命令選項和實例。
dumpe2fs命令描述
顯示device中文件系統的超級塊和塊組信息。
查看文件系統的超級塊和組塊的信息,超級塊記錄了文件系統的管理信息,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
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
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
sequence==seq序列
seq命令(sequence序列),它能夠打印數字的序列從低到高。例如從低到高打印數字10。橫着打印10個數字,用seq –s參數,它能夠指定分隔符,默認分隔符是回車\n。
參數:
-s 指定分隔符
-w 用前導零來平衡寬度,以01..02..03的形式打印
(1)打印1到10橫着打印或豎着打印,以1.2…..的方式
(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
(4)從1開始以2爲等差,豎着打印數字10
從1開始以2位等差,橫着打印數字10
[root@linzhongniao ~]# seq -s " " 1 2 10 1 3 5 7 9
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
查看進程靜態的用ps動態的用top,也能夠用htop效果更佳華麗一點
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基礎頁面詳解
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執行
參數:
-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
第一行:任務隊列信息
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 命令名/命令行
退出保存 wq
強制退出保存 wq!
強制退出不保存 q!
光標移動到文件的最後一行 G
光標移動到文件的第一行 gg或者:0
移動到指定行 ngg好比21gg
從光標所在位置將光標移動到當前行的開頭 「^」尖括號或者home鍵
從光標所在位置將光標移動到當前行的結尾 「$」或者end鍵
取消上一次的操做 u
刪除一行 dd ndd
向下搜索 /
向上搜索 ?
向上或下繼續搜索 n
向上或下反向搜索 N
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
rev也是反向讀取,行的順序不會變,一行內容的首尾相反
[root@linzhongniao ~]# echo "123456"|rev 654321 [root@linzhongniao ~]# rev ddd/20180806.txt SDSDSD dksjd kjsd kjkjd dsds sd SD fdfdasfd rewre
more命令以滾動的方式查看文件,空格鍵向下一屏回車鍵向下一行,小b向上查看,按等於號顯示行號。/反斜線能夠搜索。按小寫的v進入vi編輯器和vi編輯器是同樣的。vi編輯器的命令參數more一樣適用。小寫q退出。
more –「接數字」例如more -10,以10行爲單位查看
less命令也是分頁查看,查顯示行號用less –N
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
chpasswd以批量處理的方式更新用戶密碼
chpasswd命令是批量更新用戶口令的工具,是把一個文件的內容從新定向添加到/etc/shadow中。
參數:
-e:輸入的密碼是加密後的密文
-h:顯示幫助信息並退出
-m:當被支持的密碼未被加密時,使用MD5加密代替DE5加密。
實例:
先建立用戶密碼對應文件,格式爲username:passwd, 如users1:users1b2b9,必須以這種格式來寫(涉及合併兩個文件能夠用paste命令)而且不能空行保存成文本,而後執行chpasswd命令。列如chpasswd<usersm2.txt。
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
ethtool 是一個linux下的網絡驅動程序的診斷工具,能夠獲取網絡設備的相關信息包括鏈接狀態、驅動版本。
查看機器上網的速度:查看千兆仍是百兆的用ethool eth0,操做完畢後輸出信息中「speed」這一項就指示了網卡的速度。
若是機器上安裝了兩塊網卡,怎麼肯定eth0對應那快網卡呢?執行下面命令看那快的led燈亮就是那個
[root@linzhongniao ~]# ethtool -p eth0 10
將千兆網卡的速度將爲百兆
ethtool –s eth0 speed 100
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
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
free –m查看物理內存
第一部分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
同步-刷新文件系統緩衝區buffer,將緩衝區數據寫入磁盤
[root@linzhongniao ~]# sync;
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
(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
從標準輸入讀取並寫入標準輸出和文件,把輸出的結果在屏幕顯示並重定向到文件中。
參數:-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
od命令用戶查看二進制文件
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
(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)
建立模擬數據
[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表示只給目錄加斜線。
(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/
已知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
第一種文件配置方法,能夠把要重啓的服務器的命令放在/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