1. 程式人生 > >Linux常用shell指令碼

Linux常用shell指令碼

1.批量kill程序號

eth='5668  5673  7733  7738  10512  10517  12453  12458  17134  17139  18075  18080  20340  20345  21120'

for name in $eth
do
	echo "Pid  is $name"
	echo "kill -9 $name"
	kill -9 $name
done
2.通過程序名kill
ps -ef| grep tomcat|awk '{print $2}'|xargs kill -9
3.查詢所有的java進行,然後打印出來
pidlist=`ps -ef|grep java |grep -v "grep" |awk '{print $2}'`
if [ "$pidlist" = "" ]  
then   
  echo "no java process alive"  
else  
  for pid in ${pidlist}  
  {  
    echo "java process is: $pid:"  
  }    
fi  
4./home目錄裡面有data目錄,data目錄裡面有a、b、c、d、e五個目錄,現在要把data目錄裡面除過e目錄之外的所有目錄拷貝到/bak目錄中
方法一:終端命令列下執行以下命令
cp -R `find /home/data -type d -path /home/data/e -prune -o -print | sed 1d ` /bak
########################################################
指令碼實現
指令碼存放路徑/home/osyunwei.sh
vi /home/osyunwei.sh #編輯指令碼,新增下面的程式碼
#!/bin/sh
cp -R `find /home/data -type d -path /home/data/e -prune -o -print | sed 1d ` /bak
chmod +x /home/osyunwei.sh #新增指令碼執行許可權
cd /home #進入指令碼存放目錄
./osyunwei.sh #執行指令碼
########################################################

方法二:使用cp命令複製的時候,只能排除一個目錄不被複制,如果想排除兩個或者多個目錄的話,就需要使用rsync命令來實現了,看下面的例子
如果要排除/home/data目錄下面的a、b、c、三個目錄,同時拷貝其它所有目錄,執行以下命令
yum install rsync #安裝rsync
rsync -av --exclude data/a --exclude data/b --exclude data/c data /bak

注意:--exclude後面的路徑不能為絕對路徑,必須為相對路徑才可以,否則出錯。
----------------------------------------------------------------------------
5.一鍵啟停服務(需要服務結構都一致)
#!/bin/sh

echo "一鍵啟停10.39服務"
command=$1

if [ $# -ne 1 ]
then
    echo "usage: $0   stop|start"
    exit
fi

server_list="pluto-ps-server-new pluto-ps-support-server pluto-ps-company-new"
echo "**********$command 服務**********"
for name in $server_list
do
	echo "######$command  $name ######"
	server_name=/data/$name/bin/server.sh
	#echo "/bin/bash $server_name $command"
	/bin/bash $server_name $command
	
	echo "等待3秒"
	sleep 3
	process_number=`ps -ef  | grep /data/$name | grep -v 'grep'| wc -l`
	#echo "$name 程序數:$process_number"
	processId=`ps -ef | grep /data/$name |  grep -v 'grep' | awk '{ print $2 }'`	
	for ID in $processId
	do
		echo "processID:$ID"
	done
	
	if [ $process_number -eq 1  ];then
		echo "$name 服務已啟動"
	elif [ $process_number -eq 0  ];then
                echo "$name 服務已停止"
        else
		echo "$name 已開啟多個程序,請確認服務是否正常"
	fi
done
echo "**********$command 服務結束**********"
6.查詢配置檔案進行替換
#!/bin/bash
if [ $# != 1 ] ; then
        echo "請輸入檔案路徑  eg: 目標路徑"
        exit 1;
fi
project=$1
Filepath=/data/$1/conf/env
WebPath=/data/$1/WEB-INF/classes

echo "配置檔案目錄:$Filepath"
remoting=remoting.properties



if [ -d "$WebPath" ];then
	cd $WebPath
	echo "替換目錄:$WebPath"

	if [ -f  "$remoting" ]; then
        	echo "替換$remoting檔案的配置"
	        find $Filepath -name $remoting | xargs sed -ri 's/rabbit.address=([0-9]{1,3}\.){3}[0-9]{1,3}/rabbit.address=192.168.10.59/g'
	        find $Filepath -name $remoting | xargs sed -i 's/rabbit.username=.*/rabbit.username=it/g'
	        find $Filepath -name $remoting | xargs sed -i 's/rabbit.password=.*/rabbit.password=its123/g'
	        find $Filepath -name $remoting | xargs sed -i 's/virtualhost=.*/virtualhost=\//g'
	        find $Filepath -name $remoting | xargs sed -i 's/virtual=.*/virtual=\//g'
        
        	#檔案伺服器
	        find $Filepath -name $remoting | xargs sed -ri 's/server=([0-9]{1,3}\.){3}[0-9]{1,3}/server=192.168.10.59/g'
	        find $Filepath -name $remoting | xargs sed -i 's/user=.*/user=it/g'
	        find $Filepath -name $remoting | xargs sed -i 's/password=.*/password=its123/g'
	fi
fi 
7.遠端拷貝
將192.168.10.55機器上面/data/pluto-is/lib下面的檔案拷貝到本地/data/pluto-is/lib下面
[[email protected] venus-web-fin]# scp [email protected]:/data/pluto-is/lib/*  /data/pluto-is/lib/
8.Linux shell判斷檔案和資料夾是否存在
myPath="/var/log/httpd/"  
myFile="/var /log/httpd/access.log"  

#這裡的-d 引數判斷$myPath是否存在  
if [ ! -d "$myPath"]; then  
  mkdir "$myPath"  
fi  
  
#這裡的-f引數判斷$myFile是否存在  
if [ ! -f "$myFile" ]; then  
  touch "$myFile"  
fi  

9.通過埠檢視應用程式(例如:查詢6028埠)

ps -ef  | grep  `netstat -anpl | grep 6028 | awk NR==1'{ print $7 }'  | grep -o "[0-9]*[0-9]" `

相關推薦

Linux常用Shell指令碼珍藏

我們在運維中,尤其是linux運維,都知道指令碼的重要性,指令碼會讓我們的 運維事半功倍,所以學會寫指令碼是我們每個linux運維必須學會的一門功課,這裡收藏linux運維常用的指令碼。如何學好指令碼,最關鍵的是就是大量的練習 和實踐。根據以下指令碼我們可以拓展,這樣我們提高

Linux常用shell指令碼

1.批量kill程序號eth='5668 5673 7733 7738 10512 10517 12453 12458 17134 17139 18075 18080 20340 20345 21120' for name in $eth do

linuxshell指令碼常用命令技巧

date :調配時間,可以用date命令完成很多需求,比如日誌資料夾,比如求前幾天等等,其他常用方法百度 date "+%Y%m%d" #輸出年月日 date -d last-day +%Y%m%d #輸出當然日期的前一天 #########################

Linux運維常用shell指令碼之使用者管理例項

1、用shell指令碼批量建立Linux使用者 實現要求:建立使用者student1到student50,指定組為student組!而且每個使用者需要設定一個不同的密碼! #!/bin/bash for i in `seq 1 50` do     useradd -G

Linux常用shell腳本

format echo 用戶名 util iss bin ecif argument pla 在運維中,尤其是linux運維,都知道腳本的重要性,腳本會讓我們的 運維事半功倍,所以學會寫腳本是我們每個linux運維必須學會的一門功課,如何學好腳本,最關鍵的是就是大量的練習

Linux系統——shell指令碼

      shell指令碼程式設計 作用:通過命令列解析的方式,自動執行設定好的程式或命令程式碼。(若將指令碼掛到定時任務中,就會自動在非工作時間裡自動觸發執行程式)   Shell指令碼檔案以“.sh”結尾 規範的Shell指令碼第一行會指出由哪個程式

Linux系統——shell指令碼應用示例

傳入一個網段地址,自動找出本網段記憶體活的IP地址。2,將存活的IP地址當作密碼來建立Linux使用者,使用者名稱格式為:你的名字_數字 3,有幾個存活IP地址,就自動建立幾個使用者   4,最後將建立的使用者名稱和密碼寫入到/tmp目錄下的某檔案裡 (1)找存活的ip (2)將ip去

linuxshell指令碼除錯技術

在使用gcc編譯keepalived原始碼的時候,需要執行configure生成Makefile,然後用make命令編譯。但是在這個過程中,configure檔案卻一直無法掃描到一個已經安裝的三方庫。無奈,只能檢視configure原始碼。configure其實就是一個shell指令碼,為了

[一天幾個linux命令] shell指令碼之正則表示式

shell指令碼之正則表示式 原文連結:Linux–shell指令碼之正則表示式 概念及特點 概念 正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定的字元、及這些特定字元的組合,組成一個"規則字串",這個"規則字串"用來表達對字串的一種過濾邏輯。規定一些特殊語

Linux/Unix shell 指令碼中呼叫SQL RMAN指令碼

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

10 個實戰及面試常用 Shell 指令碼編寫

注意事項 1)開頭加直譯器:#!/bin/bash 2)語法縮排,使用四個空格;多加註釋說明。 3)命名建議規則:變數名大寫、區域性變數小寫,函式名小寫,名字體現出實際作用。 4)預設變數是全域性的,在函式中變數local指定為區域性變數,避免汙染其他作用域。 5)有兩個命令能幫助我除錯指令碼:set -e

10 個面試及實戰常用 Shell 指令碼

注意事項 1)開頭加直譯器:#!/bin/bash 2)語法縮排,使用四個空格;多加註釋說明。 3)命名建議規則:變數名大寫、區域性變數小寫,函式名小寫,名字體現出實際作用。 4)預設變數是全域性的,在函式中變數local指定為區域性變數,避免汙染其他作用域。 5)有兩個命令能幫助我除錯指令碼:se

Linuxshell指令碼報錯 [: test: unexpected operator

最近編譯 ssd的create_list.sh指令碼遇到 [: test: unexpected operator的問題, 後來發現是由於 []等問題引起的,查閱資料發現是 Linux預設sh連結到dash的,和bash不相容, dash應該也是和bash相似的一種shell指令碼

Linux基礎--shell指令碼(1)

shell程式設計:      主要指令碼維護,用於偵聽使用者輸入指令,接受到這些指令,執行相應操作。     指令可以執行,靠的是shell環境變數     設定環境變數  &nbs

LinuxShell指令碼程式設計

Shell概念  一、概念 Shell 是一個用 C 語言編寫的程式,這個應用程式提供了一個介面,使用者通過這個介面訪問作業系統核心 的服務。Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一

Linux基礎--shell指令碼(5)

================================ while 迴圈          init     while [ con ]     do  &n

Linux基礎--shell指令碼(4)

判斷語句     格式五     if [ con1 ]     then         cmd1     elif

Linux基礎--shell指令碼(3)

選擇結構     格式一:         if [ con ]         then      &nb

Linux基礎--shell指令碼(2)

實現shell指令碼     1 建立指令碼檔案         touch file.sh     2 實現指令碼       

LinuxShell指令碼——day5——sed非互動文字編輯

cp  路徑/檔名{,.bak}   ==   cp  路徑/檔名   路徑/檔名.bak   修改配置前做好備份 sed    前置命令 | sed  [選項]  '條件指令'        把前面的命令的輸出結果進行編輯操作     sed  [選項]  '條件指令'