Time of Update: 2017-01-13
工作中有時需要對比檔案是否一致,通過以下指令碼可以實現(比較簡單):分享出來,希望能協助到有同樣需求的朋友~ 代碼如下複製代碼 #!/bin/bash#對比伺服器上檔案是否一樣# Richard shen 2012/07/08LC_ALL='en_US.UTF-8'basedir=`dirname $0`HOST=$basedir/host.txtPASSWD="abcd"
Time of Update: 2017-01-13
一:建立指令檔vim cut_nginx_log.sh#!/bin/bash#nginx access log segmentation shell script#www.webyang.net#日誌目錄log_dir="/usr/local/nginx/logs/"cd $log_dirtime=`date +%Y%m%d --date="-1 day"`#nginx啟動目錄nginx_dir="/etc/init.d/nginx"#
Time of Update: 2017-01-13
nginx的日誌access.log沒有分割,訪問的記錄一直都記錄在此檔案中,長期下去對於日誌查詢和檔案系統都不好,所以需要進行分割。vim /data/scripts/cut_nginx_log.sh #!/bin/bash# auto-run this script at 00:00LOGS_PATH=/data/app/nginx/logsYESTERDAY=$(date -d "yesterday" +%Y-%m-%d)mv
Time of Update: 2017-01-13
預設情況下,Nginx 的訪問日誌儲存在一個檔案裡。時間久了日誌內容變得異常龐大。不利於記錄檔的歸檔備份及分析。可以通過每天定時執行指令碼來達到自動切割日誌的目的,達到每天的訪問日誌儲存在一個單獨檔案內。 為了切割日誌,首先需要將已存在的日誌重新命名(預設訪問日誌為 access.log ,重新命名為當天的日期),然後向 Nginx 的 master 進程發送 USR1 訊號來使進程重新開啟所有記錄檔並設定記錄檔的屬主為 work 進程啟動並執行使用者,(此時由於 access.log
Time of Update: 2017-01-13
Centos批量替換檔案內容這兩天使用火車頭採集了一些資料,由於產生了很多SQL檔案。我想將每個SQL檔案中的固定內容替換為另外的內容.手工一個個改檔案配置有點不太實際,所以google了一下,找到批量替換檔案內容的好方法。命令結構如下:find -name '要尋找的檔案名稱' | xargs perl -pi -e 's|被替換的字串|替換後的字串|g'下面這個例子將目前的目錄及所有子目錄下的所有sql檔案中的“戀香緣”替換為“http://www.111
Time of Update: 2017-01-13
在Shell中(我這裡是Bash),其實沒有傳統意義上的“資料類型”,把任何變數中存的值都是作為字元組成的“字串”。當然,通過declare可以聲明某個變數是整型、數組等類型。其中,數組就是本文要專門講的了。在Bash中,僅支援一維數組,當然通過關聯陣列(associative array)的形式可以類比多維陣列。1. 數組的聲明用 declare -a array 聲明array是一個數組,用declare -A a_array
Time of Update: 2017-01-13
之前寫過一個這樣的博文,但因為Ecvps倒閉跑路了,所以我丟失了兩個月的資料,那篇文章也就丟失了,但是我也更新了這個指令碼的方法,將有內容產生密鑰鏈條和無內容自動隨機產生密鑰鏈條兩種,控制方法是A和B兩種.A是隨機# !/bin/bashrandom() { index=0 str="" t=`grep '((?=[\x21-\x7e]+)[^A-Za-z0-9])'` for i in {a..z}; do
Time of Update: 2017-01-13
1. #注釋作用, #! 除外此外, 在參數替換 echo ${PATH#*:} 這裡不表示注釋, 數制轉換, 不表示注釋 echo $((2#101011))2. ;命令列分隔字元, 可以在一行中寫多個命令. echo hello; echo there3. ;;終止 case 選項複製代碼 代碼如下:case “$variable” inabc) echo “\$variable = abc”;;xyz) echo “\$variable = xyz”;;esac4.
Time of Update: 2017-01-13
awk統計ip訪問次數 現在有一個檔案,資料量大概在200多萬條記錄,想用shell的awk做統計,檔案的格式如下#關鍵字#URL#IP地址#test|123|1test|123|1test|123|2test2|12|1test2|123|1test2|123|2現在想要統計的結果是:查看同一個關鍵字和URL總的訪問的次數,以及多少個不同的IP,輸出到一個檔案中SQL的實現就很簡單 select keyword ,url ,count(1),count(distinct IP) group
Time of Update: 2017-01-13
shell指令碼太強大了,接觸到的始終是冰山的冰山一角。shell 遞迴遍曆目錄 #!/bin/bashecho "please input the directory:"read cdirfor dir in $(find $cdir -type d); do echo change to $dir cd $dir ls
Time of Update: 2017-01-13
條件運算式("CONDITIONAL EXPRESSIONS")條件運算式用於 [[ 複合命令以及內建命令 test 和 [ 中,用來測試檔案屬性,進行字串和算術比較。運算式使用下面的單目或二進位操作構造。如果某操作的任何 file 參數的形式是檔案符號:在info bash裡的第“6.4 Bash Conditional Expressions”節裡開頭有一句話說明了shell條件判斷的二個機制:Conditional expressions
Time of Update: 2017-01-13
數組賦值:a=(1 2 3 4 5)a[1]=1數組長度:echo ${#a[@]}或者 echo ${#a[*]}讀取數組:echo ${a[@]}或者 echo ${a[*]}echo
Time of Update: 2017-01-13
shell if判斷中常用的也就是綠色部分,尾部部分越看越不懂。從百度文庫轉載。[ -a FILE ] 如果 FILE 存在則為真。[ -b FILE ] 如果 FILE 存在且是一個塊特殊檔案則為真。[ -c FILE ] 如果 FILE 存在且是一個字特殊檔案則為真。[ -d FILE ] 如果 FILE 存在且是一個目錄則為真。[ -e FILE ] 如果 FILE 存在則為真。[ -f FILE ] 如果 FILE 存在且是一個普通檔案則為真。[ -g FILE ] 如果 FILE
Time of Update: 2017-01-13
前幾天發現網站打不開,提示資料庫連接錯誤,我登入linux 發現mysqld服務不知道什麼時候停止了。幸好我即使發現。於是決定寫一個shell指令碼每分鐘自動檢測mysqld服務,如果探索服務沒起來就自動啟動mysqld服務也就是:通過cron定時任務執行檢測指令碼編寫檢測指令碼 /root/bin/check 代碼如下複製代碼 #!/bin/bash check=`pgrep mysql` if [ -n "$check" ];
Time of Update: 2017-01-13
代碼如下複製代碼 baseDirForScriptSelf=$(cd "$(dirname "$0")"; pwd)echo "full path to currently executed script is : ${baseDirForScriptSelf}"或者FULLPATH=$(cd "$(dirname "$0")"; pwd)echo "full
Time of Update: 2017-01-13
具體的指令碼內容如下: 代碼如下複製代碼 $ vim /home/rainbow/sbin/block_attack_ips.sh#!/bin/bashlogfile=/webserver/blog/logs/rainbow_access.logfunction check_root(){ if [ $EUID -ne 0 ]; then echo "This script must be run as
Time of Update: 2017-01-13
系統:centos 5.x指令碼內容: 代碼如下複製代碼 #!/bin/bashif [ ! -f .count ];then iptables -L -n|md5sum|awk '{print $1}' > ~/.count exit 1else iptables -L -n|md5sum|awk '{print $1}' >~/1.txt difffile=`diff ~/.count ~/1.txt|wc
Time of Update: 2017-01-13
系統:centos 5.x指令碼內容:cat kingate.sh 代碼如下複製代碼 #!/bin/bashkingate=`ps -C kingate --no-header|wc -l`file=`find /usr/local/kingate/var/kingate.pid |wc -l`if [ "$kingate" = "1" ];thenecho "kingate is
Time of Update: 2017-01-13
指令碼 first (測試樣本1) 代碼如下複製代碼 #!/bin/bashecho 'your are in first file' 問)在當前指令檔中調用另外一個指令檔?方法一: 使用 source指令碼 second (測試樣本2) 代碼如下複製代碼 #!/bin/bashecho 'your are in second file'source first 方法二: 使用 . 代碼如下複製代碼 指令碼
Time of Update: 2017-01-13
單個修改: 代碼如下複製代碼 echo test:23456 | chpasswd 批量修改:先在一個文字檔中(假設名叫users.txt)準備帳號資訊,格式是“帳號:密碼”,每行一個,然後執行命令: 代碼如下複製代碼 chpasswd < users.txt執行成功後,記得刪除這個users.txt。 批量修改的方法稍稍麻煩一點,不過安全度更高一點點。因為,在shell中出現純文字密碼不是好習慣。