日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux中常用的shell脚本,Linux常用shell脚本

發布時間:2023/12/10 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux中常用的shell脚本,Linux常用shell脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 設置ssh、scp命令的認證

運行一次腳本后,以后再使用ssh或scp命令登錄遠程機器時不再提示輸入密碼

-----------------setkey.sh開始-------------------------

OLDDIR=`pwd`

if [ -z "$1" ]; then

echo Need user@host info;

exit;

fi;

cd $HOME;

if [ -e "./.ssh/id_rsa.pub" ]; then

cat ./.ssh/id_rsa.pub | ssh $1 'mkdir -p .ssh;cat >> .ssh/authorized_keys';

else

ssh-keygen -t rsa;

cat ./.ssh/id_rsa.pub | ssh $1 'mkdir -p .ssh;cat >> .ssh/authorized_keys';

fi;

cd $OLDDIR

-----------------setkey.sh結束-------------------------

用法:setkey.sh [用戶名]@[要登錄的目標機IP地址]

2. 進程監控程序

定時檢查進程,發現進程掛掉時重啟進程

-----------------loopcheck.sh開始-------------------------

#!/bin/sh

predir=`pwd`

filedir=`dirname $0`

cd "${filedir}"

curdir=`pwd`

logfilename=./loopcheck.log

#-----------------------------------

# 函數: CheckProcess

# 功能: 檢查一個進程是否存在

# 參數: $1 --- 要檢查的進程名稱

# 返回: 如果存在返回0, 否則返回1.

#---------------------------------------

checkprocess()

{

if [ "$1" = "" ]; then

return 1

fi

# $PROCESS_NUM獲取指定進程名的數目,為1返回0,表示正常,不為1返回1,表示有錯誤,需要重新啟動

process_num=`ps -ef |grep "$1" |grep -v "grep" |wc -l`

if [ $process_num -eq 1 ]; then

return 0

else

return 1

fi

}

# 啟動C++進程

startBinProcessByName()

{

/bin/$1 ?> "log.${1}.txt" &

echo "`date` [startBinProcessByName]restart $1 ok" >> ${logfilename}

}

# 主邏輯

while [ 1 ]; do

# 對C++進程進行檢查

tblBins=("gamesvr.bin" "dbsvr.bin")

for tblBin in "${tblBins[@]}";do

checkprocess "${tblBin} server${serverNo}"

check_result=$?

if [ $check_result -eq 1 ]; then

echo "`date` error ${tblBin}" >> ${logfilename}

startBinProcessByName "${tblBin}"

fi

done

# 每隔10秒執行一次

sleep 60

echo "`date` check ok" >> ${logfilename}

done

cd ${predir}

-----------------loopcheck.sh結束-------------------------

3. mysql數據庫表自動修復腳本

-----------------checkdbtable.sh開始-------------------------

#!/bin/sh

mysql_host=localhost

mysql_user=star

mysql_pass=star

database=starcraft27

tables=$(mysql -h$mysql_host -u$mysql_user -p$mysql_pass $database -A -Bse "show tables")

for arg in $tables; do

check_status=$(mysql -h$mysql_host -u$mysql_user -p$mysql_pass $database -A -Bse "check table $arg" ?| awk '{ print $4 }')

if [ "$check_status" = "OK" ]

then

echo "$arg is ok"

else

echo $(mysql -h$mysql_host -u$mysql_user -p$mysql_pass $database -A -Bse "repair table $arg")

fi

# echo $(mysql -h$mysql_host -u$mysql_user -p$mysql_pass $database -A -Bse "optimize table $arg")

done

-----------------checkdbtable.sh結束-------------------------

4. mysql數據庫備份腳本

-----------------backupdb.sh開始-------------------------

#!/bin/bash

predir=`pwd`

dir=`dirname $0`

cd "${dir}"

DB_DATABASE=databasename

DB_USR=username

DB_PWD=userpassword

BACKDIR=../backup/db

LOG_PATH=../backup/log

DATE=`date +%Y.%m.%d.%H.%M.%S`

targetFile=$BACKDIR/db.$DATE.tar.gz

if [ $# = 1 ];then

targetFile=$1

fi

mkdir -p $LOG_PATH

echo "backupdb begin">>${LOG_PATH}/dailyMaintenace.log

mkdir -p $BACKDIR

mysqldump -u"${DB_USR}" -p"${DB_PWD}" $DB_DATABASE >$DB_DATABASE.$DATE.sql

tar -zcf $targetFile $DB_DATABASE.$DATE.sql

rm -rf $DB_DATABASE.$DATE.sql

echo "backupdb done">>${LOG_PATH}/dailyMaintenace.log

cd "${predir}"

-----------------backupdb.sh結束-------------------------

5. mysql數據庫備份恢復腳本

-----------------recoverdb.sh開始-------------------------

#!/bin/bash

predir=`pwd`

dir=`dirname $0`

cd "${dir}"

if [ $# = 0 ];then

echo please specified the source sql file for recover

exit 0

fi

if [ ! -e $1 ];then

echo "there isn't the file $1"

exit 0

fi

DB_DATABASE=databasename

DB_USR=username

DB_PWD=userpassword

RECOVERDIRTEMP=../backup/db/recovertmp

echo recovering...

mkdir -p $RECOVERDIRTEMP

rm -rf $RECOVERDIRTEMP/*

tar -xzf $1 -C $RECOVERDIRTEMP/

if [ $# = 2 ];then

mysql ?-u"${DB_USR}" -p"${DB_PWD}" ?-e "drop database ?if exists ${DB_DATABASE};create database ${DB_DATABASE};"

fi

mysql -u"${DB_USR}" -p"${DB_PWD}" $DB_DATABASE < $RECOVERDIRTEMP/*.sql

rm -f $RECOVERDIRTEMP/*.sql

echo done

cd "${predir}"

-----------------recoverdb.sh結束-------------------------

6. mysql數據庫結果分析輸出csv文件腳本

-----------------export_userinfo.sh開始-------------------------

#!/bin/bash

rm -rf export_out.csv

var=0

records=()

map=""

date

while read line

do

key=`echo $line | awk -F ' ' '{print $1}'`

#echo $key

result=(`mysql rxsg2_$1 --skip-column-names -e"select p.passport, u.name, u.level, o.total_online, u.vip from mem_passport p left join (mem_user u left join mem_user_online o on o.uid=u.uid) on u.uid=p.uid where p.passport='$key'"`)

len=${#result[@]}

if [ $len -ne 5 ]; then

records[$var]="$key"

else

records[$var]="${result[0]},${result[1]},${result[2]},${result[3]},${result[4]}"

fi

#echo ${records[$var]};

var=`expr $var + 1`

#if [ $var -eq 5 ]; then

#break;

#fi

done < export_in.txt

outstr="";

echo "over";

#echo ${records[*]} > export_result.txt

for ((i=0;i

do

echo ${records[$i]} >> export_out.csv

#outstr=$outstr`echo ${map[$i]}``echo "\n"`

done

#echo $outstr > export_result.txt

date

-----------------export_userinfo.sh結束-------------------------

【參考】

http://www.cnblogs.com/end/archive/2011/07/20/2111888.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的linux中常用的shell脚本,Linux常用shell脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。