Time of Update: 2018-12-05
#!/bin/sh##--------------------------------------------------------####--功能說明:調用SP(只支援SP有0-4個in參數,2個out參數)## 需要完善的地方:參數類型判斷##--輸入參數:##-- $1:資料庫名稱(必須)##-- $2:資料庫使用者名稱(必須) ##-- $3:資料庫使用者密碼(必須) ##-- $4:資料庫SP名稱(必須)##
Time of Update: 2018-12-05
linux指令碼很龐大,也很強大。定義:function 函數名() //function可省略{ 命令}調用:直接在指令碼中使用函數名即可。當然也可帶參數如函數名 參數(用空格隔開) 向函數傳遞參數:像在一般指令碼指令碼中使用參數一樣,使用特殊變數$1 $2 .. $9 函數取得參數後,會將原始參數傳回shell指令碼。可以類似理解為c函數的棧調用 函數的退出:指令碼常用的退出方式有exit 0 (表正常退出)和exit 1 (表示有錯誤退出)而函數
Time of Update: 2018-12-05
1. 基本常識cat /etc/shellchsh /bin/tcshemacs = vi ?pdkshzshB C KPID is 1 not 0HOME variables是存在passwd裡面的,passwd的最後一個entry是sh.ps -ef SVR4ps au for BSD/Linux psecho $statusecho $?EUID //can be changed, like chownEGIDreal uid/gid //from passwd
Time of Update: 2018-12-05
1. date 擷取時間日期DATE=`date +%y-%m-%d-%H`echo ${DATE} 2.cron新增工作計劃#vi /etc/crontab crontab task 格式 * * * * * user task分 時 日 月 周 user task欄位說明1分鐘(0-59)2小時(2-24)3日期(1-31)4月份(1-12;或英文縮寫Jan、Feb等)5周幾(0-6,0為周日;或單詞縮寫Sun、Mon等)6使用者名稱(執行命令時以此使用者的身份)7要執行的命令(路徑)
Time of Update: 2018-12-05
#!/bin/bashif [ -n "$1" ]; theneth_name=$1elseeth_name="eth0"fii=0send_o=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`recv_o=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print
Time of Update: 2018-12-05
為了刪除日誌,需要不斷切換使用者去指定目錄刪除,所以想能否指令碼自動實現。直接su發現不行,所以採用telnet到原生方式。 #!/usr/bin/kshINFILE="file.in"OUTFILE="file.out"rm $INFILErm $OUTFILEmknod $INFILE ptouch $OUTFILE# file description 7 for out and 8 for inexec 7<>$OUTFILE
Time of Update: 2018-12-05
1、使用&& :& &左邊的命令(命令1)返回真(即返回0,成功被執行)後,& &右邊的命令(命令2)才能夠被執行;2、使用|| :如果| |左邊的命令(命令1)未執行成功,那麼就執行| |右邊的命令(命令2);3、用()和{ }將命令結合在一起 : 為了在當前s h e l l中執行一組命令,可以用命令分隔字元隔開每一個命令,並把所有的命令用圓括弧()括起來。如果使用{ }來代替(),那麼相應的命令將在子s h e l l而不是當前s h e
Time of Update: 2018-12-05
實現一個檔案夾同步的shell指令碼演算法: 1.先find /pathname -print >filea #擷取兩個檔案夾裡所有檔案的全名。2.比較檔案,先刪去要同步的檔案夾裡多餘的檔案。接著重新獲得需要同步的檔案夾裡所有檔案的全名。3.比較檔案,把源檔案夾裡增加的檔案CP到要同步的檔案夾中。 這個指令碼是同步/share目錄裡的所有檔案,需要備份到/mnt/d/share #!/bin/bashmount /dev/hda6 /mnt/d 2>/dev/null ;
Time of Update: 2018-12-05
有系統營運的過程中,記錄檔往往非常大,這樣就要求對記錄檔進行分割,在此特用shell指令碼對檔案進行分割 方法一: #!/bin/bash linenum=`wc -l httperr8007.log| awk '{print $1}'` n1=1 file=1 while [ $n1 -lt $linenum ] do n2=`expr $n1 + 99
Time of Update: 2018-12-05
今天寫了個統計某個目錄下原始碼行數的Shell指令碼,如下:# !/bin/bashfind . -name *.java > srcFilesPathNamecount=$(wc -l srcFilesPathName) # 記錄源檔案個數echo "源代檔案個數= $count"while read pathNamedo countAndPath=$(wc -l $pathName) echo $countAndPath >> t1done < sr
Time of Update: 2018-12-05
replace,它是mysql附帶的。 用法(匹配以比較長為準則):replace from to [from to] ... -- 檔案1 檔案2 --後邊的檔案清單也可能改成標準輸入例如:stlxv@stlxvcomputer:~/workspace/DuniyaSystem/gui/vm$ echo "clash" | replace "h" "cc" clascc所以可以很容易寫出這樣的命令,類似DOS中的copy class.*.h
Time of Update: 2018-12-05
在實行一個shell指令碼(調用java程式修改一個excel檔案)時,單獨sh可以得到想要的結果。但是放到crontab定時執行後,卻沒有得到一個新的excel檔案,log也沒有報錯。查看了路徑,檔案許可權都沒有問題,最後在網上查了一下,發現這樣可以解決問題:將crontab執行的語句進行修改: 15 11 * * * /home/loganalysis/dealexcel.sh >> /home/loganalysis/error.log 2>&1 修改為:
Time of Update: 2018-12-05
#!/bin/shd1=20111201 d2=20120625 time=$(($(date +%s -d ''$d2'') - $(date +%s -d ''$d1''))); #日期差t=`expr $time / 86400` #相差天數for ((i=0;i<=$t;i=i+1))do#echo $d1perl xx.pl $d1d1=`date -d ''$d1' UTC 86400 seconds' +"%Y%m%d"` done說明:d1=`date -d ''
Time of Update: 2018-12-05
From:http://bbs.chinaunix.net/viewthread.php?tid=445229QUOTE:$ unset A $ [ -n "$A" ] && [ "$A" -lt 100 ] || echo 'too big!' too big! 為何上面的結果也可得到呢? 做個記號 網中人第十問 10) && 與 || 差在哪?
Time of Update: 2018-12-05
今天遇到個問題,shell指令碼(test.sh)如下:#!/bin/shecho "export monitor=1" >> /etc/profilesource /etc/profile調用後(./test.sh),執行echo $monitor,沒有輸出任何值,但是profile中已經寫進去了手動source /etc/profile後,再次執行echo $monitor,輸出了預期的值可見指令碼中的source
Time of Update: 2018-12-05
上接shell常用編程及執行個體 :http://blog.csdn.net/larrylgq/article/details/7333632 1:ls *|while read fn; do grep -v ',11,1108,1133,110816,110816' $fn > /data1/hadoop/back_up/tmp/${fn}_08171819; done ls
Time of Update: 2018-12-05
MongoDB預設將資料存放區在 /data/db 目錄下ubuntu預設安裝在/usr/lib/mongodb下面啟動服務啟動MongoDB伺服器:$sudo ./mongodb-路徑/bin/mongod啟動shell,它預設串連到localhost:$ sudo ./mongodb-路徑/bin/mongo >命令文法停止服務#!/bin/bashpid=`ps -o pid,command ax | grep mongod | awk '!/awk/ &&
Time of Update: 2018-12-05
sudo addgroup hadoop#添加一個hadoop組sudo usermod -a -G hadoop larry#將目前使用者加入到hadoop組sudo gedit etc/sudoers#將hadoop組加入到sudoer在root ALL=(ALL) ALL後 hadoop ALL=(ALL) ALL修改hadoop目錄的許可權sudo chown -R larry:hadoop /home/larry/hadoop<所有者:組 檔案>sudo chmod -R
Time of Update: 2018-12-05
Overviewwildcard是由shell處理的, 它只會出現在 command的argument 裡——既不用在 command_name裡, 也不用在 options 上。當在argument中碰到Wildcard時,shell會將其當作路徑或檔案名稱去在磁碟上搜尋可能的匹配:若符合要求的匹配存在,則進行代換(路徑擴充);否則就將該wildcard作為一個一般字元傳遞給command,交由command自行處理。總而言之,wildcard 實際上就是一種shell實現的路徑擴充功能。在
Time of Update: 2018-12-05
2.2 引號作用1,雙引號雙引號可以引用除了`(反引號),$,\之外的任一字元2,單引號單引號會忽略任何引用值,換句話說如果屏蔽了其特殊含義,會將引號裡的所有字元,包括引號都作為一個字串3,反引號shell將反引號裡面的內容作為一個命令執行4,\反斜線將特殊字元屏蔽成一般字元& * + ^ ` “ | ?運算子1,位元運算符~op1 反運算子op1<<op2 左移運算子>> 右移運算子& 與比較子^ 異或運算子| 或運算子$[]