天天看點

Linux運維工程師必備(指令)

如何過濾出以下目錄的中的所有一級目錄

[root@xcn ~]# ll

total 16

-rw-r--r-- 1 root root    0 Jul  5 11:43 111

-rw-r--r-- 1 root root    0 Jul  5 11:43 222

-rw-r--r-- 1 root root    0 Jul  5 11:43 333

drwxr-xr-x 2 root root 4096 Jul  5 11:43 aaa

drwxr-xr-x 2 root root 4096 Jul  5 11:43 bbb

drwxr-xr-x 2 root root 4096 Jul  5 11:43 ccc

drwxr-xr-x 2 root root 4096 Jul  5 11:43 ddd

方法1:ls -l結果中以d開頭的就是目錄

<code>通過過濾以長格式輸出的開頭檔案辨別d</code>

<code>[root@xcn ~]</code><code># ls -l |grep ^d         </code>

<code>drwxr-xr-x 2 root root 4096 Jul  5 11:43 aaa</code>

<code>drwxr-xr-x 2 root root 4096 Jul  5 11:43 bbb</code>

<code>drwxr-xr-x 2 root root 4096 Jul  5 11:43 ccc</code>

<code>drwxr-xr-x 2 root root 4096 Jul  5 11:43 ddd</code>

<code>提示:^ :以...開頭</code>

方法2:通過給目錄加辨別,然後通過過濾辨別,過濾出目錄

<code>[root@xcn ~]</code><code># ls -F   #把目錄結尾加上"/",便于區分和過濾出來,ls -p也可以讓目錄帶上斜線</code>

<code>111  222  333  aaa/  bbb/  ccc/  ddd/</code>

<code>[root@xcn ~]</code><code># ls -F|grep /$  #把包含斜線"/"的過濾出來就是目錄</code>

<code>aaa/</code>

<code>bbb/</code>

<code>ccc/</code>

<code>ddd/</code>

方法3:find的應用

<code>[root@xcn ~]</code><code># find . -type d    #.代表目前目錄</code>

<code>.</code><code>/aaa</code>

<code>.</code><code>/ccc</code>

<code>.</code><code>/bbb</code>

<code>.</code><code>/ddd</code>

方法4:tree

<code>[root@xcn ~]</code><code># tree -dl</code>

<code>.</code>

<code>|-- aaa</code>

<code>|-- bbb</code>

<code>|-- ccc</code>

<code>`-- ddd</code>

過濾空行及#開頭的行

<code>[root@xcn ~]</code><code># grep -Ev "^#|^$" /etc/init.d/sshd </code>

<code>[root@xcn ~]</code><code># egrep -v "^#|^$" /etc/init.d/sshd </code>

<code>注釋:</code>

<code>-E  </code><code>#egrep</code>

<code>-</code><code>v</code>  <code>#過濾</code>

<code>^</code><code>#  #井号開頭</code>

<code>^$  </code><code>#空行</code>

方法5:sed

<code>[root@xcn ~]</code><code># ls -l|sed -n /^d/p</code>

<code>-n </code><code>#拒絕預設輸出</code>

<code>p  </code><code>#列印</code>

方法6:awk

<code>[root@xcn ~]</code><code>#ls -l|awk '/^d/ {print $0}'</code>

2.假如目前目錄是

<code>[root@xcn ~]</code><code># pwd   #這是列印目前目錄</code>

<code>/root</code>

現在因為需要進入到了/tmp目錄下進行操作,執行的指令如下:

<code>[root@xcn ~]</code><code># pwd</code>

<code>[root@xcn ~]</code><code># cd /tmp/</code>

<code>[root@xcn tmp]</code><code># cd -</code>

<code>[root@xcn ~]</code><code>#</code>

原理:

<code>[root@xcn ~]</code><code>#  env|grep -i oldpwd   #是這個變量記錄着上一次的目錄</code>

<code>OLDPWD=</code><code>/tmp</code>

3.一個目錄中有很多檔案(ls檢視時好多屏),想最快速度檢視到最近更行的檔案。如果看?

解答:

<code>[root@xcn etc]</code><code># ls -lrt   #執行這個指令後最新的檔案會在最下面</code>

<code>#以長格式按照修改時間倒序檔案和目錄,這樣最近建立或修改的檔案或目錄</code>

<code>-t    </code><code>#按修改時間</code>

<code>-r    </code><code>#翻轉</code>

4.在配置apache時,執行了./confiure --prefix=/application/apache2.2.17 來編譯apache在make installl完成後,希望使用者的通路路徑更簡單,需要給/application/apache2.2.17目錄做一個軟連結/application/apache,使得内部開發或管理人員通過/application/apache就可以通路到/apache的安裝目錄/application/apache2.2.17下的内容,請你給出實作的指令(提示:apache為一個http web服務)

<code>[root@xcn ~]</code><code># ln -s /application/apache2.2.17 /application/apache   #-s 參數表示為建立軟連結</code>

5.已知apache服務的通路日志按天記錄在伺服器本地目錄/data/logs下,由于磁盤空間緊張,現在要求隻能保留最近7天通路日志!請問如何解決?請給出解決辦法或配置或處理指令。

<code>-rw-r--r-- 1 root root   0 Jun 28 00:00 2017-06-29_00-00.backstage_access.log</code>

<code>-rw-r--r-- 1 root root   0 Jun 28 00:00 2017-06-29_00-00.backstage_error.log</code>

<code>-rw-r--r-- 1 root root   0 Jun 29 00:00 2017-06-30_00-00.backstage_access.log</code>

<code>-rw-r--r-- 1 root root   0 Jun 29 00:00 2017-06-30_00-00.backstage_error.log</code>

<code>-rw-r--r-- 1 root root   0 Jun 30 00:00 2017-07-01_00-00.backstage_access.log</code>

<code>-rw-r--r-- 1 root root   0 Jun 30 00:00 2017-07-01_00-00.backstage_error.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  1 00:00 2017-07-02_00-00.backstage_access.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  1 00:00 2017-07-02_00-00.backstage_error.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  2 00:00 2017-07-03_00-00.backstage_access.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  2 00:00 2017-07-03_00-00.backstage_error.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  3 00:00 2017-07-04_00-00.backstage_access.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  3 00:00 2017-07-04_00-00.backstage_error.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  4 00:00 2017-07-05_00-00.backstage_access.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  4 00:00 2017-07-05_00-00.backstage_error.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  5 00:00 2017-07-06_00-00.backstage_access.log</code>

<code>-rw-r--r-- 1 root root   0 Jul  5 00:00 2017-07-06_00-00.backstage_error.log</code>

<code>[root@guaji01 ~]</code><code># find ./ -type f -name "*.log" -mtime +7|xarge rm -f    #删除7天</code>

find 查找與時間有關參數:

-atime  n   #n為數字,意義為在n天之前的【一天之内】被access過的檔案;

-ctime n  #n為數字,意義為在n天之前的【一天之内】内change過狀态的檔案

-mtime n #n 為數字,意思為在n天之前的【一天之内】被modification過的檔案

-newer file #file  為一個存在的檔案,意思是說,隻要檔案比file還要新,就會被列出來

<code>find</code> <code>./ </code><code>type</code> <code>f -name </code><code>"*.log"</code> <code>-mtime +7|</code><code>xargs</code> <code>rm</code> <code>-f</code>

6.調試系統服務時,希望能實時檢視系統日志/var/log/messages的更新,如何做?

法一:

<code>[root@xcn ~]</code><code># tail -f /var/log/messages    </code>

<code>Jul  6 14:51:40 localhost yum[29341]: Installed: gnome-vfs2-devel-2.24.2-8.el6.x86_64</code>

<code>Jul  6 14:51:41 localhost yum[29341]: Installed: dmz-cursor-themes-0.4-4.el6.noarch</code>

<code>Jul  6 14:51:41 localhost yum[29341]: Installed: system-gnome-theme-60.0.2-1.el6.noarch</code>

<code>Jul  6 14:51:41 localhost yum[29341]: Installed: libgnome-2.28.0-11.el6.x86_64</code>

<code>Jul  6 14:51:41 localhost yum[29341]: Installed: libgnome-devel-2.28.0-11.el6.x86_64</code>

<code>Jul  6 14:51:41 localhost yum[29341]: Installed: libbonoboui-2.24.2-3.el6.x86_64</code>

<code>Jul  6 14:51:42 localhost yum[29341]: Installed: libbonoboui-devel-2.24.2-3.el6.x86_64</code>

<code>Jul  6 14:51:42 localhost yum[29341]: Installed: libgnomeui-2.24.1-4.el6.x86_64</code>

<code>Jul  6 14:51:42 localhost yum[29341]: Installed: libgnomeui-devel-2.24.1-4.el6.x86_64</code>

<code>Jul  6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i686</code>

法二:

<code>[root@xcn ~]</code><code># tail -F /var/log/messages  </code>

<code>Jul  6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i68</code>

法三:

<code>[root@xcn ~]</code><code># tailf /var/log/messages </code>

7.列印配置檔案nginx.conf内容的行号及内容,該如何做?

法1:

<code>[root@guaji01 conf]</code><code># nl nginx.conf</code>

<code>     </code><code>1  user  nginx;</code>

<code>     </code><code>2  worker_processes 4;</code>

<code>     </code><code>3</code>

<code>     </code><code>4  </code><code>#pid /var/run/nginx.pid;</code>

<code>     </code><code>5</code>

<code>     </code><code>6  events {</code>

<code>     </code><code>7      worker_connections  5000;</code>

<code>     </code><code>8      </code><code>#use epoll;</code>

<code>     </code><code>9  }</code>

<code>....................</code>

法2:

<code>[root@guaji01 conf]</code><code># cat -n nginx.conf</code>

<code>    </code><code>10</code>

<code>........................</code>

法3:

<code>[root@guaji01 conf]</code><code># less -N nginx.conf</code>

<code>      </code><code>1 user  nginx;</code>

<code>      </code><code>2 worker_processes 4;</code>

<code>      </code><code>3 </code>

<code>      </code><code>4 </code><code>#pid /var/run/nginx.pid;</code>

<code>      </code><code>5 </code>

<code>      </code><code>6 events {</code>

<code>      </code><code>7     worker_connections  5000;</code>

<code>      </code><code>8     </code><code>#use epoll;</code>

<code>      </code><code>9 }</code>

<code>     </code><code>10 </code>

<code>     </code><code>11 http {</code>

<code>     </code><code>12     include       mime.types;</code>

<code>     </code><code>13     default_type  application</code><code>/octet-stream</code><code>;</code>

<code>     </code><code>14</code>

法4:vi 檔案 然後執行:set nu,  :set nonu 為取消行号

8.裝完系統後,希望讓網絡檔案共享服務NFS,僅在3級别上開機自啟動,該如何做?

方法1:全部關掉然後開啟需要的級别的服務

<code>[root@xcn ~]</code><code># chkconfig nfs off</code>

<code>#預設2,3,4,5級别都是開啟狀态,所有需要先都關了。當然也可以chkconfig --level 245 nfs off</code>

<code>[root@xcn ~]</code><code># chkconfig --list nfs</code>

<code>nfs             0:關閉  1:關閉  2:關閉  3:關閉  4:關閉  5:關閉  6:關閉</code>

<code>[root@xcn ~]</code><code># chkconfig --level 3 nfs on</code>

<code>nfs             0:關閉  1:關閉  2:關閉  3:啟用  4:關閉  5:關閉  6:關閉</code>

方法2:關閉不需要的級别的服務

<code>nfs             0:關閉  1:關閉  2:啟用  3:啟用  4:啟用  5:啟用  6:關閉</code>

<code>[root@xcn ~]</code><code># chkconfig --level 245 nfs off</code>

12./etc/目錄為Linux系統的預設的配置檔案及服務啟動指令的目錄

請用tar打包/etc整個目錄(打包及壓縮)

請用tar打包/etc整個目錄(打包及壓縮,但需要排除/etc/services檔案)

請把a點指令的壓縮包,解壓到/tmp指定目錄下(最好隻用tar 指令實作)

a:

<code>[root@xcn /]</code><code># tar zcvf etc.tar.gz  ./etc/</code>

<code>-rw-r--r--    1 root root 9948783 9月  24 04:12 etc.</code><code>tar</code><code>.gz</code>

<code>z:壓縮</code>

<code>c:建立</code>

<code>v</code><code>:顯示輸出</code>

<code>f:檔案ch</code>

<code>[root@xcn /]</code><code># tar tf etc.tar.gz  #檢視壓縮包裡的内容</code>

<code>etc/</code>

<code>etc</code><code>/sysctl</code><code>.conf</code>

<code>etc</code><code>/modprobe</code><code>.d/</code>

<code>etc</code><code>/modprobe</code><code>.d</code><code>/blacklist</code><code>.conf</code>

<code>etc</code><code>/modprobe</code><code>.d</code><code>/dist</code><code>.conf</code>

<code>etc</code><code>/modprobe</code><code>.d</code><code>/anaconda</code><code>.conf</code>

<code>etc</code><code>/modprobe</code><code>.d</code><code>/openfwwf</code><code>.conf</code>

<code>etc</code><code>/modprobe</code><code>.d</code><code>/dist-oss</code><code>.conf</code>

<code>etc</code><code>/modprobe</code><code>.d</code><code>/dist-alsa</code><code>.conf</code>

<code>etc</code><code>/gnupg/</code>

<code>etc</code><code>/oddjobd</code><code>.conf.d/</code>

<code>etc</code><code>/oddjobd</code><code>.conf.d</code><code>/oddjobd-introspection</code><code>.conf</code>

<code>etc</code><code>/oddjobd</code><code>.conf.d</code><code>/oddjobd-mkhomedir</code><code>.conf</code>

<code>etc</code><code>/updatedb</code><code>.conf</code>

<code>etc</code><code>/sudo</code><code>.conf</code>

<code>etc</code><code>/mailcap</code>

<code>etc</code><code>/nanorc</code>

<code>etc</code><code>/fprintd</code><code>.conf</code>

<code>etc</code><code>/printcap</code>

<code>etc</code><code>/rwtab</code>

13.已知如下指令結果:

<code>[root@xcn ~]</code><code># echo "I am xcn mysql is 995345781" &gt;&gt; xcn</code>

<code>[root@xcn ~]</code><code># cat xcn </code>

<code>I am xcn mysql is 995345781</code>

現在需要從檔案中過濾出"xcn"和"995345781"字元串,請給出指令

方法1:

<code>[root@xcn ~]</code><code># awk '{print $3 $6}' xcn </code>

<code>xcn995345781</code>

<code>[root@xcn ~]</code><code># awk '{print $3 " " $6}' xcn </code>

<code>xcn 995345781</code>

方法2:

<code>[root@xcn ~]</code><code># cut -d" " -f3,6 xcn </code>

<code>-d:指定分隔符</code>

<code>[root@xcn ~]</code><code># cut -c 6-8 xcn </code>

<code>xcn</code>

14.如何檢視/etc/services檔案的有多少行?

方法一:

<code>[root@xcn ~]</code><code># wc -l /etc/services </code>

<code>10774 </code><code>/etc/services</code>

方法二:

<code>[root@xcn ~]</code><code># cat -n /etc/services |tail -1</code>

<code> </code><code>10774  iqobject        48619</code><code>/udp</code>               <code># iqobje</code>

方法三:

<code>[root@xcn ~]</code><code># sed -n '$=' /etc/services </code>

<code>10774</code>

方法四:

<code>[root@xcn ~]</code><code># awk '{print NR}' /etc/services|tail -1</code>

方法五:

<code>[root@xcn ~]</code><code># grep -n $ /etc/services|tail -1</code>

<code>10774:iqobject        48619</code><code>/udp</code>               <code># iqobject</code>

15.請執行指令取出Linux中eth1的IP位址

<code>[root@xcn ~]</code><code># ifconfig eth1|grep "inet addr"|cut -d ":" -f 2|cut -d " " -f 1</code>

<code>172.16.1.2</code>

<code>[root@xcn ~]</code><code># ifconfig eth1|grep "inet addr:"|awk -F ":" '{print $2}'|awk '{print $1}'</code>

<code>[root@xcn ~]</code><code># ifconfig eth1|grep "inet addr"|awk -F "[: ]" '{print $13}'</code>

法4:

<code>[root@xcn ~]</code><code># ifconfig eth1|sed -n '/inet addr/p'|sed 's#^.*addr:##g'|sed 's#Bc.*$##g'</code>

思路:

比對需要的目标(擷取的字元串如上文的ip)前的字元串一般用以..開頭(^.*)來比對開頭,比對的結尾寫上實際的字元,如:"^.*addr:"表達式就比對"   inet addr:",而處理需要的目标後的内容一般在比對的開頭寫上實際的字元,而結尾是用以...結尾(.*$)來比對。如:Bcast:.*$部分表示比對“Bcast:10.0.0.255 Mask:255.255.255.0”.

法5:

<code>[root@xcn ~]</code><code># ifconfig eth1|sed -n 's#^.*addr:\(.*\)  Bcast.*$#\1#gp'</code>

sed小括号()分組功能

sed 's/■/▲/标簽'    #斜線可以被其他字元替換

■部分可以用正則,▲的部分不能用正則

()分組(group)再■部分使用()括起來的内容,再▲的位置可以用使用\1調用前面括号内容

如果有多個括号,那麼一次\2,\3調用第二個第三個括号,以此類推

16.如何取得xcn檔案的權限對于的數字内容,如-rw-r--r--為644,要求使用指令取得644或0644這樣的數字

r  read   w write   -沒有x執行

r  4

w 2

x  1

-  0

<code>[root@xcn ~]</code><code># stat xcn|sed -n '4p'|awk -F "[/(]" '{print $2}'</code>

<code>0644</code>

<code>[root@xcn ~]</code><code># stat xcn|head -4|tail -1|awk -F "[/(]" '{print $2}'</code>

<code>[root@xcn ~]</code><code># stat xcn|sed -n 's#^.*s: (\([0-9].*\)/-r.*$#\1#gp'</code>

本文轉自 baishuchao 51CTO部落格,原文連結:http://blog.51cto.com/baishuchao/1945114