Time of Update: 2017-01-18
需要對字串尋找其中某個字元最後出現的位置,這個在PHP (strrpos)或者Perl (rindex)裡面都有現成函數可用的功能,在Shell裡面居然一時想不出個道道來。在論壇上發貼也沒人解答(不知道是問題太簡單還是真的很高深...)。因為事情緊急等不得,於是求救大學同學。Pacman不愧是箇中高手,三兩下點醒夢中人:rindex.sh代碼:複製代碼 代碼如下:#!/bin/bashstrToCheck=$1;charToSearch=$2;let pos=`echo
Time of Update: 2017-01-18
很多用cron定時執行的shell指令碼可能會由於各種原因執行很久,會有必要在啟動並執行時候先檢查一下自身是否還在運行。本文提供的linux shell指令碼用以檢查以命令sh ...來執行的shell指令碼。要對其他東西進行唯一性檢查,可以稍微修改一下原始碼。複製代碼 代碼如下:# 檢查通過sh命令執行的shell指令碼是不是還在執行當中,避免重複執行. # 把這段代碼放在需要保證唯一性的程式頭部即可# 注意,如果直接把此指令碼放到cron裡面執行的話,必須再grep -v " -c sh "
Time of Update: 2017-01-18
這裡簡單介紹一個自己寫的檢測某個進程是否存在的bash小指令碼。直接上代碼。複製代碼 代碼如下:#!/bin/bashps_out=`ps -ef | grep $1 | grep -v 'grep' | grep -v $0`result=$(echo $ps_out | grep "$1")if [[ "$result" != "" ]];then echo "Running"else echo "Not
Time of Update: 2017-01-18
前幾天寫的七牛的參賽demo,用bash寫了一個便捷安裝的指令碼,涉及到了路徑相關的判斷,從stackoverflow,加上自己的實踐整理一下。簡單版下面是一個最簡單的實現,可以解決大多數問題,缺陷是對於軟連結顯示的是軟連結所在的目錄lineos:false複製代碼 代碼如下:#!/bin/bashDIR="$( cd "$( dirname "$0" )" && pwd )"完善版這個版本解決了使用ln -s target
Time of Update: 2017-01-18
此指令碼是在張宴的緩衝清理指令碼上做了修改的,主要是增加if選項,並根據$1參數類型來選擇性的列出快取檔案所在地址(因為$1並不固定,有時是特定的jpg類型,有時是網域名稱)目前在自己的Squid快取服務器上應用,感覺採集緩衝網址基本上沒什麼誤差了,歡迎大家試用,爭取將此指令碼做到更加完美(此指令碼在Centos5.4 x86_64,Squid2.7下通過)指令碼內容如下:複製代碼
Time of Update: 2017-01-18
工作目錄下面有mydoc1.txt,mydoc2.txt...mydoc41.txt,本來想用sed排列依次取值排序,然後用cat來合并這些檔案,發現達不到預期效果,合并令如下所示:複製代碼 代碼如下:ls -lF *.txt | sed -n '/mydoc1/,/mydoc41/p' | xargs -i cat {}>
Time of Update: 2017-01-18
最近在調試伺服器的iptables,自己做了個定時關iptables,但晚上回家很少開電腦,所以就沒法去啟動iptables,當然你可能會說,為什麼不取消定時關閉iptables,我只能說個人的環境不一樣,需求也就不一樣.指令碼內容:vi iptables-reset.sh複製代碼 代碼如下:#!/bin/bash#Powered by blog.slogra.comport=`iptables -vL|grep ssh|awk '{split($NF,a,":");print
Time of Update: 2017-01-18
今天有台伺服器a要把網站程式全部傳輸到另外一台伺服器b上去,但離下班時間就只有1個小時了,為了準時下班,簡單寫了個shell指令碼來監控是否有傳輸完,我先在伺服器a上看了下網站程式總大小為12G,用du -sm查看也就是11517,伺服器也不會有人再傳東西上去了,所以我可以放心容量不會再變大了。系統:centos 5.x需要的軟體:rsync指令碼內容:複製代碼 代碼如下:#!/bin/bashfile=`du -sm /var/www/vhosts/|awk '{print $1}'`ps=`
Time of Update: 2017-01-18
自己在vps做的kingate服務端,估計最近佔用流量太大了,老是被服務商把我vps重啟,但kingate這個東西是一旦被強制結束掉,是無法開機啟動的,因為要把kingate.pid這個檔案刪除了才能啟動,好吧,對於我們這樣的懶人來說,當然不能自己去登入伺服器去手動刪除並啟動kingate,就寫了個簡單的shell指令碼來替我完成這些。系統:centos 5.x指令碼內容:cat kingate.sh複製代碼 代碼如下:#!/bin/bashkingate=`ps -C kingate
Time of Update: 2017-01-18
最近看了一篇通過nagios實現MD5即時監控iptables狀態的文章,就想是否可以用shell也做到監控iptables規則改變,經過實驗,就有了下面這個指令碼.系統:centos 5.x指令碼內容:cat check_iptables.sh複製代碼 代碼如下:#!/bin/bashif [ ! -f .count ];then iptables -L -n|md5sum|awk '{print $1}' > ~/.count exit 1else
Time of Update: 2017-01-18
今天公司同事要在一台伺服器上對另外兩台同機房的伺服器進行檔案傳輸,兩台伺服器的檔案存放地址一致,密碼和key也一致(我們公司在安全上做得有點變態的),為了效率寫了下面這個指令碼.1.單台傳輸指令碼cat /root/soft_shell/allscp.sh複製代碼 代碼如下:#!/usr/bin/expectif {$argc < 2} { send_user "usage: $argv0
Time of Update: 2017-01-18
今天給公司新部署伺服器進行最佳化,發現了tty終端居然有6個,為了節省點記憶體,決定只留一個tty終端,其他的都關閉掉,但centos6跟centos5的終端關閉方法完全變了,而且我也比較懶,不想一台一台的設定,寫了下面這個指令碼來節省時間.系統:centos 6關閉tty終端指令碼:cat pkill.sh複製代碼 代碼如下:#!/bin/bashsed -i 's/\/dev\/tty\[1-6\]/\/dev\/tty\[1-1\]/g'
Time of Update: 2017-01-18
今天公司同事來找到我說要在伺服器上用另外一個使用者執行python指令碼,但設定到crontab裡卻老是root使用者來執行,為了省事我就想了一個偷懶的辦法,就是用shell指令碼切換到那個使用者,然後去執行那個python指令碼.好了,這篇文章我只示範怎麼用shell指令碼切換到其他使用者執行命令.系統:centos 5.x指令碼內容:cat test.sh複製代碼 代碼如下:#!/bin/bashsu - test
Time of Update: 2017-01-18
最近本地虛擬機器的空間老是被備份給佔滿,為了偷懶不想自己天天登入上去清除,才寫了這個自動清理指令碼.系統:centos 5.x指令碼內容:cat make_room.sh複製代碼 代碼如下:#!/bin/bash#size=`df -hP|grep /dev/mapper/VolGroup00-LogVol00|awk '{print $4}'|cut -f 1 -d "G"`size=`df -mP|grep /dev/mapper/VolGroup00-LogVol00|awk
Time of Update: 2017-01-18
今天同事發現內部伺服器的硬碟空間不夠了,上面有很多備份,我又不能刪除,重新找了個320g的硬碟掛載了上,想以後shell指令碼下的備份都轉移到新硬碟上,給老硬碟騰出空間來,原備份路徑是/data/onlinesqlbak/,新備份路徑是/disk2/onlinesqlbak/,我find了下備份shell指令碼,這一找嚇死個人,最少都有10-20個備份shell要改,誰叫我是懶人想一下搞定完,好了來看我的解決辦法吧.系統:centos 5.x1.先確認有那些指令碼要改複製代碼
Time of Update: 2017-01-18
公司同事今天找我幫忙修改檔案名稱,我一看,好嘛,幾百個檔案要改名,檔案名稱格式是_01.png _02.png這樣依次類推,同事要求把前面的"_"給去掉,還好要求算簡單,沒有讓我再改成其他名字。一條命令搞定:複製代碼 代碼如下:for i in `ls _*.png`; do mv "$i" `echo "$i" |awk -F '_0' '{print $1 "0" $2}'`; done如果要連_0都去掉的話,就這樣寫:複製代碼 代碼如下:for i in `ls _*.png`; do
Time of Update: 2017-01-18
tr(translate縮寫)主要用於刪除檔案中的控制字元,或進行字元轉換。文法:tr [–c/d/s/t] [SET1] [SET2] #SET1: 字元集1;SET2:字元集2 -c:complement,用SET2替換除SET1以外的字元。
Time of Update: 2017-01-18
工作中有時需要對比檔案是否一致,通過以下指令碼可以實現(比較簡單):分享出來,希望能協助到有同樣需求的朋友~複製代碼 代碼如下:#!/bin/bash#對比伺服器上檔案是否一樣# Richard shen 2012/07/08LC_ALL='en_US.UTF-8'basedir=`dirname $0`HOST=$basedir/host.txtPASSWD="abcd" #密碼FILE=$basedir/file.txt
Time of Update: 2017-01-18
複製代碼 代碼如下:#!/bin/bash#Description: delete files#=====定義當前年份,月份以及檔案所在目錄=====#currentYear=`date
Time of Update: 2017-01-18
作為一名Linux SA,日常營運中很多地方都會用到指令碼,而伺服器的ip一般採用靜態ip或者MAC綁定,當然後者比較操作起來相對繁瑣,而前者我們可以設定主機名稱、ip資訊、網關等配置。修改成特定的主機名稱在維護和管理方面也比較方便。如下指令碼用途為:修改ip和主機名稱等相關資訊,可以根據實際需求修改,舉一反三!複製代碼 代碼如下:#!/bin/sh #auto Change ip netmask gateway scripts #wugk