Time of Update: 2017-01-18
shell中可能經常能看到:>/dev/null 2>&1 命令的結果可以通過%>的形式來定義輸出 /dev/null 代表空裝置檔案 > 代表重新導向到哪裡,例如:echo "123" > /home/123.txt 1 表示stdout標準輸出,系統預設值是1,所以">/dev/null"等同於"1>/dev/null" 2 表示stderr標準錯誤 & 表示等同於的意思,2>&1,表示2的輸出重新導向等同於1 那麼本文標題的語句: 1>
Time of Update: 2017-01-18
一、先說一下Shell指令碼語言自身的局限性 作為解釋型的指令碼語言,天生就有效率上邊的缺陷。儘管它調用的其他命令可能效率上是不錯的。 Shell指令碼程式的執行是順序執行,而非並存執行的。這很大程度上浪費了可能能利用上的系統資源。 Shell每執行一個命令就建立一個新的進程,如果指令碼編寫者沒有這方面意識,編寫指令碼不當的話,是非常浪費系統資源的。 二、我們在Shell指令碼語言的局限性上儘可能的通過我們有經驗的編碼來提高指令碼的效率。
Time of Update: 2017-01-18
3.1 尋找文本grep:使用POSIX定義的基本Regex(BRE)。egrep:使用擴充Regex(ERE)。fgrep:快速grep。使用最佳化的演算法,匹配固定字串而非Regex。1992 POSIX標準將這三個改版整合成一個grep程式。$ who | grep -F austen使用-F選項尋找固定字串。事實上,只要匹配的模式裡未含有Regex的meta字元,則grep預設行為模式就等同於使用了-F。3.2.6 在文字檔裡進行替換一般來說,執行文本替換的正確程式應該是sed -
Time of Update: 2017-01-18
在 linux 中,/proc/$PID/status 檔案提供了該進程資源(記憶體,堆棧,訊號量,子父進程)的使用方式,雖然linux提供了不少查看記憶體的命令,但都是看整體的使用方式,無法對單個進程的記憶體使用量情況進行查看。 本文為大家提供的這個指令碼,通過查看status檔案中VmRSS的欄位來查看系統或進程使用的記憶體情況,有需要的朋友不妨參考下。複製代碼 代碼如下:#! /bin/bashecho -n
Time of Update: 2017-01-18
如何計算目前的目錄下的檔案數和目錄數 # ls -l * |grep "^-"|wc -l ---- to count files # ls -l * |grep "^d"|wc -l ----- to count dir 如何只列子目錄? ls -F | grep /$ 或者 alias sub = "ls
Time of Update: 2017-01-18
先來看一段錯誤的代碼。複製代碼 代碼如下:#!/bin/bashfor x in `ls */.*/.*`cat $x|do echo $xwhile read line do c=`echo $line|awk -F'(' '{print $1}'` #echo $c i=$((i+$c)) done echodoneecho
Time of Update: 2017-01-18
我說過了,shell是我的常規武器,目前雖然還不純熟,但是我愛shell這門語言,在Linux下面混,總要寫指令碼。程式員是有基因,對程式設計語言是有偏好的,你讓我寫C代碼,我會覺得很爽,會有困難,會有痛苦的摸索和學習,但是,我願意;學習shell/python,我也很樂意,甚至Lisp這種冷門的語言我也充滿了好奇,雖然現在Go和Erlang我一點也不懂,但是我按耐不住對這兩種語言的興趣,只要我抽出手來,一定會和他們纏綿一番。有愛就會有恨,我痛苦地意識到到自己是個很情緒化的程式員,哪怕我一遍遍地
Time of Update: 2017-01-18
一、接收固定長度的參數複製代碼 代碼如下:[root@svn shell_example]# cat params.sh#!/bin/bash#傳參測試指令碼echo "My name is `basename $0` -I was called as $0"echo "My first parameter is : $1"echo "My second parameter is : $2"空參數執行複製代碼 代碼如下:[root@svn shell_example]# sh
Time of Update: 2017-01-18
變數的定義,只能以字母和底線開始,區分大小寫,可以包含數字 字母底線.詳見官方手冊複製代碼 代碼如下:[root@svn shell_example]# yourname='Linux'[root@svn shell_example]# echo $yournameLinux[root@svn shell_example]# YourName="linux"[root@svn shell_example]# echo "The variable is $YourName"The
Time of Update: 2017-01-18
我很迷戀 Shell,很喜歡看著字元在黑色的 Console 介面中跳躍著,奇怪的是,我居然沒有因此成為一個 Linux/Unix 程式員,而只是個寫 CGI 程式的倒黴蛋。大家都是怎麼稱呼 “PHP 程式員”的?對了——草根~ 嗯,在土裡埋的太久,說不定哪天就爛掉了咯! 可能是被 Windows 慣壞了,實在不想換個 OS,還好有 Cygwin,MinGW … 之類的東西, 適當的時候,可以拿出來裝下 B,自我安慰一下~我總喜歡從 windows.php.net 下載最新的
Time of Update: 2017-01-18
大多數人在使用 Bash 時,都會對其進行改造,因為預設的設定真的好難用~參考以下 ~/.inputrc 設定:複製代碼 代碼如下:# do not show hidden files in the listset match-hidden-files off # auto complete ignoring caseset show-all-if-ambiguous onset completion-ignore-case on"\ep":
Time of Update: 2017-01-18
如果CPU佔用率持續達到80以上則調用列印java線程佔用率堆棧的指令碼,見https://github.com/oldratlee/useful-shells/blob/master/show-busy-java-threads.sh,具體用法見他的github wiki!#!/bin/bash#cpu idle percentcpu_idle=`top -b -d 1 -n 2 | grep Cpu | awk 'NR>1{print $5}' | cut -f 1 -d "."`
Time of Update: 2017-01-18
shell版Nginx日誌蜘蛛爬取查看指令碼用之前改一下nginx日誌的路徑即可如果 更多的蜘蛛 自己在 代碼蜘蛛UA數組裡加即可#!/bin/bash m="$(date +%m)"case $m in "01") m='Jan';; "02") m='Feb';; "03") m='Mar';; "04") m='Apr';; "05") m='May';; "06") m='June';; "07") m='July';; "08") m='Aug';; "09") m=
Time of Update: 2017-01-18
指令碼內容複製代碼 代碼如下:#!/bin/bash for i in "1" "2" "3" "4" "5" "6" "7" "8" "9" do for j in "1" "2" "3" "4" "5" "6" "7" "8" "9"
Time of Update: 2017-01-18
我們在測試或調試的時候,有時候會需要產生某個size的檔案,比如在測試儲存系統時,需要將磁碟剩餘空間減少5G,最簡單的辦法就是拷貝一個5G的檔案過來,但是從哪兒去弄這樣大小的檔案呢,或許你想到隨便找一個檔案,不停的拷貝,最後合并,這也不失為一種辦法,但是有了dd,你會更容易且更靈活的實現。我們來case by case的介紹dd的用法。先看第一個產生一個大小為5G的檔案,內容不做要求命令如下複製代碼 代碼如下:$ dd if=/dev/zero of=tmp.5G bs=1G
Time of Update: 2017-01-18
提取oralce當天的alert log的shell指令碼複製代碼 代碼如下:#/bin/sh#get alert of everyday#then name of file is everyday_alert.shdir="/oracle/admin/bbdz/bdump"num=$(cat -n ${dir}/alert_bbdz.log | grep "`date|cut -c 1-10`"|head -n 1 |awk '{print $1}')tail +${num}
Time of Update: 2017-01-18
一、Shell簡介諸多類Unix作業系統的設計令人驚歎。即便是在數十年後的今天,Unix式的作業系統架構仍是有史以來最佳的設計之一。這種架構最重要的一個特性就是命令列介面或者shell。shell環境使得使用者能與作業系統的核心功能進行互動。術語指令碼更多涉及的便是這種環境。編寫指令碼通常使用某種基於解譯器的程式設計語言。shell指令碼本質上就是一些文字檔,我們可以將一系列需要執行的命令寫入其中,然後通過shell來執行。在這裡我們介紹的是Bash shell(Bourne Again
Time of Update: 2017-01-18
1、檔案類型介紹linux系統中主要包括以下七種檔案類型: d 目錄 - 普通檔案 l 符號連結 s 通訊端檔案 b 塊裝置檔案 c 字元裝置檔案 p 具名管道檔案2、RegexRegex在shell編程中非常重要。從一個檔案或命令輸出中抽取或過濾文本時。可使用Regex(RE),Regex是一些特殊或不很特殊的字串模式的集合。基本的元字元集:^ 只匹配行首。$ 只匹配行尾。* 一個單字元後緊跟*,匹配0個或多個此單字元。[]
Time of Update: 2017-01-18
1. Linux 指令碼編寫基礎1.1 文法基本介紹1.1.1 開頭程式必須以下面的行開始(必須方在檔案的第一行): #!/bin/sh 符號#!用來告訴系統它後面的參數是用來執行該檔案的程式。在這個例子中我們使用/bin/sh來執行程式。 當編輯好指令碼時,如果要執行該指令碼,還必須使其可執行。 要使指令碼可執行:編譯 chmod +x filename 這樣才能用./filename 來運行1.1.2 注釋
Time of Update: 2017-01-18
可以通過iptraf命令查看網卡的即時資料流量,映像非常直觀。今天在測試伺服器上準備看下網路流量複製代碼 代碼如下:[root@localhost ~]# iptraf -d eth0-bash: iptraf: command not found發現營運同事沒有給安裝,只能自己手工安裝了首先安裝需要的包:複製代碼 代碼如下:yum -y install gccyum -y install glibcyum -y install ncurses安裝完畢之後 我們現在開始安裝iptraf複製代碼