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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430910.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HDU 2042:不容易系列之二

不容易系列之二 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 5 Accepted Submission(s) : 5 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 你活的不容易&#xff0c;我活…

统计建模与r软件_【统计建模与R软件笔记】008 描述统计量(1)

今天我们开始来学习描述统计量吧&#xff01;位置的度量位置的度量就是用来描述定量资料的集中趋势的统计量&#xff0c;常用的有均值、众数、中位数、百分位数等。1.均值 mean( )形式&#xff1a;mean(x, trim 0, na.rm FALSE)x 是对象(如向量、矩阵、数组或数据框)trim 是计…

npm环境安装linux,Node.js环境在linux上的部署教程

我们以centOS为例来说说如何部署node.js环境一 打开centos,然后开始下载node.js包curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -yum -y install nodejs二 安装gcc环境yum install gcc-c make安装完成!三 安装nodejs的npm,这是一个包程序工具,类似于…

Nancy跨平台开发总结(三)发布到Jexus Web服务器

在Centos7上安装Mono yum install yum-utils rpm --import "http://keyserver.ubuntu.com/pks/lookup?opget&search0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" yum-config-manager --add-repo http://download.mono-project.com/repo/centos/ yum install m…

stat函数_数据分析工具入门 掌握这些Excel函数就够了

1.什么是函数可以把函数理解为一个可以控制的黑箱子&#xff0c;输入X到黑箱子中&#xff0c;他就会输出Y&#xff0c;参数就是黑箱子的控制开关&#xff0c;打到不同的档位&#xff0c;黑箱子会输出不同的Y。2.常见函数分类文本清洗函数关联匹配函数逻辑运算函数计算统计函数时…

linux安装nodejs一键脚本,ubuntu16.04部署nodejs+vue框架脚本

#获取和安装nodewget https://nodejs.org/dist/v8.9.2/node-v8.9.2-linux-x64.tar.xzxz -d node-v8.9.2-linux-x64.tar.xztar xf node-v8.9.2-linux-x64.tar -C /usr/local#创建软连接ln -s /usr/local/node-v8.9.2-linux-x64 /usr/local/node#配置环境并生效echo "export…

Linux下jdk配置环境变量

vi /etc/profile在里面添加如下内容JAVA_HOME/usr/local/java/jdk1.6.0_01PATH$JAVA_HOME/bin:$PATHCLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOMEexport PATHexport CLASSPATH变量生效重新登录即可5.进入 /usr/bin/目录cd /usr/binln -s -f /us…

mysql获取当前时间毫秒_MySQL性能指标及计算方法

是新朋友吗?记得先点蓝字关注我哦~ 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 数据分析 人工智能+Python | 人工智能+物联网 来源:小职(z_zhizuobiao) 找我:✅ 解锁高薪工作 ✅ 免费获取干货教程 未 完 待 续 绝大多数MySQL性能指标可以通过以下两种方式获取:…

linux时间戳转换不对,转换为unix时间戳不正确

我有我写了一个函数(如果有一个很好的标准替代&#xff0c;请让我知道...)转换为unix时间戳不正确time_t get_unix_time(string time_str) {time_t loctime;time(&loctime);struct tm *given_time;time_str time_str.substr(0, time_str.find_first_of(.));replace(time_s…

什么是REST API?

REST指一组架构约束条件和原则&#xff0c;满足约束条件和原则的应用程序设计。架构&#xff0c;软件体系结构分为三部分&#xff1a;构建&#xff0c;用于描述计算机&#xff1b;连接器&#xff0c;用于描述构建的链接部分&#xff1b;配置将构建和连接器组成有机整体。web基本…

python socket send_python socket 连续send,出现粘包问题

使用网上socket代码实现ssh功能&#xff0c;如下&#xff1a;server.py#服务端Linux系统下&#xff1a;处理命令并返回import socketimport os#声明类型&#xff0c;生成socket链接对象server socket.socket()#监听接收端口元组(本地&#xff0c;端口)&#xff0c;绑定要监听的…

linux系统安装佳能打印机驱动,在ubuntu16.04 64-bit上安装佳能打印机驱动Linux_UFRII_PrinterDriver_V320_us_EN...

在ubuntu16.04 64-bit上安装佳能打印机驱动Linux_UFRII_PrinterDriver_V320_us_EN发布时间&#xff1a;2018-04-06 21:46,浏览次数&#xff1a;631, 标签&#xff1a;ubuntubitLinuxUFRIIPrinterDriverusEN1. 安装一些依赖项 (不确定它们是否都需要):sudo apt install libc6-i3…

python重复输入上面指令_stdin stdout python:如何重复使用同一输入文...

我对Python很陌生,对stdin stdout方法甚至更新.不过,我需要使我的脚本可用于UNIX命令,以便例如使用我的脚本一次处理2个输入文件.该脚本与命令行参数完美配合&#xff1a;newlist []def f1()....def f2(input_file):vol_id sys.argv[3]for line in input_file:if ... :line …

linux条件变量cond,Linux 条件变量 pthread_cond_signal及pthread_cond_wait

#include#include#include#includepthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER;/*静态初始化*/pthread_cond_t cond PTHREAD_COND_INITIALIZER; //init condvoid *thread1(void*);void *thread2(void*);int i 1; //globalint main(int argc,char* argv[]){pthread_…

哈希查找

哈希查找之前&#xff0c;我们要弄清楚哈希技术&#xff0c;哈希技术是在记录的存储位置和记录的关键字之间建立一个确定的对应关系f&#xff0c;使得每个关键字key对应一个存储位置f(key)。查找时&#xff0c;根据这个确定的对应关系找到给定值的映射f(key),若查找集合中存在这…

python两人一碰_python运用pygame库实现双人弹球小游戏

使用python pygame库实现一个双人弹球小游戏&#xff0c;两人分别控制一个左右移动的挡板用来拦截小球&#xff0c;小球会在两板间不停弹跳&#xff0c;拦截失败的一方输掉游戏&#xff0c;规则类似于简化版的乒乓球。因为是第一次用pygame写python小游戏并且只用了两三个小时&…

fedora 安装Linux源码,如何在 Fedora 29/30 上安装 VS Code

Visual Studio Code 简称 VS Code 是微软开发的一款跨平台的源代码编辑器。 它具有内置的调试支持&#xff0c;嵌入式 Git 控件&#xff0c;语法突出显示&#xff0c;代码完成&#xff0c;代码重构和代码片段。Visual Studio Marketplace 提供了许多插件和扩展来扩展VS代码的功…

2016-1-31

按照我之前的计划&#xff0c;应该是今天晚上才到家呢&#xff0c;可是21号就已经来到了&#xff0c;在家已经整整10天了&#xff0c;22号放纵了一天&#xff0c;有一天和CY出去溜了&#xff0c;所以应该是整整8天的时间是可以利用的&#xff0c;然而&#xff0c;我发现效果并不…

三菱伺服驱动器说明书_张家港市HG-KN13J-S100三菱伺服控制器

张家港市HG-KN13J-S100三菱伺服控制器MR-J2S1该产品还有RS-232和RS-422串行通讯功能&#xff0c;通过安装有伺服设置软件的个人计算机就能进行参数设定&#xff0c;试运行&#xff0c;状态显示和增益调整等操作。2与MR-J2S系列配套的伺服电机编码器采用了分辨率为131072脉冲/转…

linux中shell编写数组排序,linux bash shell实现对数组快速排序(升序)

2011年12月19日&#xff0c;参考网上用C语言实现的快速排序&#xff0c;经过一番修改后&#xff0c;用shell(我的测试环境为centos5的bash-v3.x)实现了相同功能&#xff1a;对数组进行升序排序。注&#xff1a;如果代码框里的代码复制出来后显示异常&#xff0c;就麻烦下载附件…