Time of Update: 2017-01-18
前言大家都知道使用ls命令列出檔案清單時,不同的檔案類型會用不同的顏色顯示。那麼如何?這樣帶顏色的文本輸出呢?答案並不複雜,不管是用shell還是C語言。一、shell下的實現方法先來講在shell下,如何?。用echo命令就可以實現,參看以下例子: echo -e "33[32mHello,
Time of Update: 2017-01-18
前言現在每次分析網站日誌的時候都需要判斷百度蜘蛛是不是真實的蜘蛛,nslookup之後需要判斷結果中是否包含“baidu”字串以下給出一些shell中判斷字串包含的方法,來來源程式員問答網站 stackoverflow 以及segmentfault。方法一:利用grep尋找strA="long string"strB="string"result=$(echo $strA | grep "${strB}")if [[ "$result" != "" ]]then echo "包含"else
Time of Update: 2017-01-18
自己的小網站跑在阿里雲的ECS上面,偶爾也去分析分析自己網站伺服器日誌,看看網站的訪問量。看看有沒有黑闊搞破壞!於是收集,整理一些伺服器日誌分析命令,大家可以試試!1、查看有多少個IP訪問: awk '{print $1}' log_file|sort|uniq|wc -lPS: wc -l 看看有多少行2、查看某一個頁面被訪問的次數:grep "/index.php" log_file | wc -l3、查看每一個IP訪問了多少個頁面:awk '{++S[$1]} END {for
Time of Update: 2017-01-18
linux下執行shell命令有兩種方法 在當前shell中執行shell命令
Time of Update: 2017-01-18
1、例子:每隔100行插入一條記錄,並且此條記錄的第一列包含行號,其他列與第一行相同#!/bin/shvar="00001" # 變數cat a.txt|awk 'NR==1'|while read line # 擷取檔案第一行do #echo "$line" result=`echo "$line"|cut -f2-` # 預設以tab分割,擷取第二列至最後一列 cat a.txt|awk 'NR%100==0{printf("%04d\n",
Time of Update: 2017-01-18
從網路上下載到的源碼包, 最常見的是 .tar.gz 包, 還有一部分是 .tar.bz2包要解壓很簡單 :.tar.gz 格式解壓命令為 tar -zxvpf xx.tar.gz.tar.bz2 格式解壓命令為
Time of Update: 2017-01-18
前言在Linux營運過程中或者日常Linux系統操作過程中會同時執行多條命令,這樣的話需要通過我們的多重命令方式進行處理。多命令執行包括';'和'&&'命令,這樣shell就可以一次執行多個命令,每個命令之間可用';'和'&&'隔開。 那麼這兩者之間有什麼區別,下面來一起看看吧。1、';'用';'
Time of Update: 2017-01-18
已知三個時間變數:time1="Fri Aug 23 11:35:21"time2="Mon Sep 2 16:18:09"time3="Tue Sep 3 16:06:33"已知這三個時間可以確定是發生在2011-2013年,如何快速確定是哪一年呢?希望輸出:time1="2013/8/23 11:35:21"time2="2013/9/2 16:18:09"time3="2013/9/3 16:06:33"#!/bin/bashtime1="Fri Aug 23 11:35:21"time2
Time of Update: 2017-01-18
核心代碼當你遇到一個date命令不給力的系統時,可以試試這幾個小函數。#日期轉天數function date2days { echo "$*" | awk '{ z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3; j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633; print j }'}date2days `echo "2010-08-18 18:59:
Time of Update: 2017-01-18
sh 不像 bash 和 ksh 那樣可以非常方便的定義和使用數組,但是可以通過其它方式來類比數組。【方法1】通過 set 命令和位置參數來類比數組# 定義數組set 'word 1' word2 word3# 輸出數組的第一個元素echo $1# 輸出數組的第二個元素echo $2# 輸出數組的第三個元素echo $3# 輸出數組的所有元素echo $*echo $@# 向數組中增加一個元素set -- "$@" word4echo $4# 查看數組元素的個數echo $##
Time of Update: 2017-01-18
前段時間和幾位同事討論過一個問題:Shell指令碼裡面怎樣把一個數組傳遞到awk內部進行處理?當時沒有找到方法。前兩天在QQ群裡討論awk的時候,無意間又聊起這個話題。機緣巧合之下找到一個思路,特此分享。測試環境:[root]# head -1 /etc/redhat-releaseRed Hat Enterprise Linux Server release 6.5 (Santiago)[root]# awk --version | head -1GNU Awk
Time of Update: 2017-01-18
#!/bin/basha=(張三 李四 王五 趙六)for i in {0..3}doif ping -c 1 192.168.1. $((${i}+1)) >dev/null 2>&1;thenecho $((${i}+1))"號"${a[${i}]}"線上"elseecho $((${i}+1))"號"${a[${i}]}"離線"fidone這串shell代碼實現了ping 某個IP地址所對應的那個IP所使用的人名是否線上這裡面主要涉及到的知識點有 變數、數組、迴圈 、if判斷、
Time of Update: 2017-01-18
Linux下的命令有很多,其中有一個命令,我一直使用都存在問題,那就是cp命令了。每次使用該命令,都提示cp:omitting directiory錯誤。最後百度了一下才明白,原來cp命令複製目錄的時候需要帶命令參數的。難怪我一使用cp命令就報錯。下面說一下該命令的一些提示:1. cp命令文法cp [options] <source file or directory> <target file or directory> 或 cp [options] source1
Time of Update: 2017-01-18
Linux 進程許可權分析在linux下,關於檔案許可權,大部分人接觸比較多,也比較熟悉瞭解.但是對進程許可權一般知之甚少。本文總結一下linux系統下進程許可權問題和現象。需要強調的是,本文是linux系統下討論,因為linux和unix有很多不同的地方,並且各個不同的unix系統也有很多不同。先開門見山的列出本文討論對象:ruid(實際使用者id: real userid)、euid(有效使用者使用者:effective userid), suid(儲存使用者id:saved userid)
Time of Update: 2017-01-18
Shell函數傳回值,一般有3種方式:return,argv,echo1) return 語句shell函數的傳回值,可以和其他語言的傳回值一樣,通過return語句返回。樣本:#!/bin/bash -function mytest(){ echo "arg1 = $1" if [ $1 = "1" ] ;then return 1 else return 0 fi}echo echo "mytest 1"mytest 1echo $? # print
Time of Update: 2017-01-18
一 Regex與萬用字元1 Regex是用在檔案中匹配合格字串,正則是包含匹配,grep,awk,sed等命令可以支援Regex2 萬用字元是用來匹配合格檔案名稱,萬用字元是完全符合,ls,find,cp這些命令不支援Regex,所以只能用Shell自己的萬用字元來進行匹配了。二 基礎Regex這裡引用兄弟連的測試文本 1 * 前一個字元匹配0次或任意多次grep “a*” test_rule.txt匹配所有內容,包括空白行(由於*可以匹配0次)grep “aa*”
Time of Update: 2017-01-18
鑒於在調試logback和log4j的檔案切割一直無法成功,隨性用shell寫個指令碼用來切割tomcat下的記錄檔(大家如果有在logback或log4j使用檔案切割成功的話,可以留下使用方式,先謝謝了)1:廢話少說,直接貼上指令碼:#!/bin/shlog_dir=/var/log/tomcatmonitor_file=$1 #tomcat目錄下的catalina.out檔案的絕對路徑file_size=`du $monitor_file | awk '{print $1}'`if [
Time of Update: 2017-01-18
Linux上安裝和卸載rpm軟體包的方法如下所示:1.如何安裝rpm軟體包rmp軟體包的安裝可以使用程式rpm來完成。執行下面的命令rpm -i your-package.rpm其中your-package.rpm是你要安裝的rpm包的檔案名稱,一般置於目前的目錄下。安裝過程中可能出現下面的警告或者提示:... conflict with ... 可能是要安裝的包裡有一些檔案可能會覆蓋現有的檔案,預設時這樣的情況下是無法正確安裝的可以用rpm --force -i 強制安裝即可... is
Time of Update: 2017-01-18
[root@wang /]# rpm -qa // 查看安裝所有包[root@wang /]# rpm -qa |grep vim // 查詢所安裝的包 +包名[root@wang /]# rpm -qi libattr-devel //查詢包的安裝資訊Name : libattr-devel Relocations: (not relocatable)Version : 2.4.44 Vendor: CentOSRelease : 7.el6 Build Date: 2011年09月24日
Time of Update: 2017-01-18
一、建立測試檔案test.sh#!/bin/sh. /etc/profile# 參數:# args[0] ,資料日期,日期格式yyyy-MM-dd# 取30天以前的日期function get_date_30daysbefore(){ sec=`date -d $1 +%s` sec_30daysbefore=$((sec - 86400*30)) days_before=`date -d @$sec_30daysbefore +%F` echo $days_before}if [ $# ==