- 浏览: 520354 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (422)
- 重要 (12)
- BUG解决备忘录 (32)
- 环境搭建 (17)
- 开源组件 (4)
- 数据库 (16)
- 设计模式 (4)
- 测试 (3)
- javascript (5)
- Android (14)
- jdk相关 (9)
- struts2 (10)
- freemark (3)
- 自定义扩展及工具类 (5)
- jdk5新特性及java基础 (13)
- ssh及其他框架 (15)
- linux (32)
- tcp-ip http协议 (8)
- 服务器集群与负载均衡 (34)
- 项目管理相关 (11)
- 实用小技术 (10)
- 架构相关 (14)
- firefox组件 (11)
- spider (6)
- 产品设计 (11)
- PHP (1)
- ws (4)
- lucene (10)
- 其他 (2)
- BI (1)
- NoSQL (3)
- gzip (1)
- ext (4)
- db (6)
- socket (1)
- 源码阅读 (2)
- NIO (2)
- 图片处理 (1)
- java 环境 (2)
- 项目管理 (4)
- 从程序员到项目经理(一):没有捷径 (1)
- bug (1)
- JAVA BASE (8)
- 技术原理 (0)
- 新框架新技术 (1)
- 量化与python (1)
- 系统编程 (0)
- C语言 (0)
- 汇编 (0)
- 算法 (0)
最新评论
-
hyspace:
别逗了,最后一个算法根本不是最优的,sort(function ...
数组去重——一道前端校招试题 -
washingtin:
楼主能把策略和路由的类代码贴出来吗
Spring + iBatis 的多库横向切分简易解决思路 -
sdyjmc:
初略看了一下,没有闹明白啊,均衡负载使用Nginx,sessi ...
J2EE集群原理 I -
shandeai520:
谢谢大神!请教大神一个问题:假如我有三台服务器,连接池的上限是 ...
集群和数据库负载均衡的研究 -
hekuilove:
给lz推荐一下apache commonsStringUtil ...
request 获取 ip
不看后悔的Linux生产服务器Shell脚本分享
作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来完成工作呢?其实相对于
PHP这些开发语言而言,shell主要用于数据库备份(SVN备份)、计划任务(crontab)、服务状态监控、FTP远程备份等。对于这些任
务,shell的强大是大家都公认的,这也是每一个Linux/unix系统管理员的基本之一。现在在Windows
2008里也出现了PowerShell的身影,十分不错。
下面我会用我的线上服务器的shell脚本举例来让大家了解shell及其用途。
【目录】
MySQL的热备份脚本
用FTP同步服务器
Keepalived的监控切换脚本
SVN的版本库的批量备份
自动监控ADSL并重拔号
Linux批量生成生成帐户(10月11日更新)
测试局域网内主机是否alive(10月11日更新)
点击下方的子页面标题,进入对应的shell脚本页面进行阅读。
一、MySQL的热备份脚本
这是MySQL的备份方式之一,脚本如下:
#!/bin/bash
PATH=/usr/local/sbin:/usr/bin:/bin
# The Directory of Backup
BACKDIR=/usr/mysql_backup
# The Password of MySQL
ROOTPASS=password
# Remake the Directory of Backup
rm -rf $BACKDIR
mkdir -p $BACKDIR
# Get the Name of Database
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
# 偷瞄了下我同事写脚本的方式,发现他直接将DBLIST一个个手动敲上去了
# 数据库少的情况是可以的,如果数据库是成百以上呢,呵呵
# Backup with Database
for dbname in $DBLIST
do
mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
done许多系统管理员喜欢用mysqldump –opt来备份数据库,由于比较简单,我这里就不重复了。
二、用FTP同步服务器
许多系统管理员喜欢用rsync同步二台服务器之间的数据,但我们更喜欢用FTP来实现,其好处是:
FTP比rsync更能耗尽带宽,所以它更适合同步数据库(尤其是几百G的数据)
配置起来相当方便,尤其是用pureftpd
rsync的优势是可以快速海量同步小文件,比如二级目录或三级目录下的批量图片等
基本上FTP和rsync同步各有优势,看系统管理员的取舍了。以下是本部分要介绍的FTP同步的shell脚本方式:
FTPOLDDATE=`date +%Y-%m-%d -d ‘-60 days’`
#在FTP定义60天间的日期变量,是为了在FTP端保存60天的数据,逾期删除。
HOST=192.168.4.199
FTP_USERNAME=db
FTP_PASSWORD=password
cd ${BACKDIR}/${DATE}
ftp -i -n -v << !
open ${HOST}
user ${FTP_USERNAME} ${FTP_PASSWORD}
bin
cd ${FTPOLDDATE}
mdelete *
cd ..
rmdir ${FTPOLDDATE}
mkdir ${DATE}
cd ${DATE}
mput *
bye
!
三、Keepalived的监控切换脚本
实现功能如下:针对Nginx+Keepalived,编写nginx监控脚本nginx_pid.sh,放置在后台一直监控nginx进程;如进 程消失,尝试重启nginx,如是失败则立即停掉本机的keepalived服务,让另一台负载均衡器接手。此脚本详细内容如下:
#!/bin/bash
while :
do
nginxpid=`ps -C nginx –no-header | wc -l`
if [ $nginxpid -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 5
if [ $nginxpid -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
sleep 5
done相关说明可参考我发在组网频道的《企业级WEB的负载均衡高可用之LVS+Keepalived》一文。
四、SVN的版本库的批量备份
实现其功能蛮简单,主要是用了svnadmin hotcopy,这东东功能很强大,我经常用于svn的版本库的转移(顺便说一句,上次不小心误操作将库删光了,很轻松的用svnadmin hotcopy将其恢复过来了)。
for PROJECT in test project svntest
do
cd ${SVNDIR}
${SVNADMIN} hotcopy ${PROJECT} ${BACKDIR}/${DATE}/${PROJECT} –clean-logs
cd ${BACKDIR}/${DATE}
tar zcvf ${PROJECT}_svn_${DATE}.tar.gz ${PROJECT} > /dev/null
rm -rf ${PROJECT}
echo “Repository: ${PROJECT} backup done into ${BACKDIR}/${DATE}/ Successful!” >> ${LogFile} /bin/sleep 2done
五、自动监控ADSL并重拔号的shell脚本
公司办公室的adsl爱掉线,一掉的话网关的gateway就没了。因此编写了下列脚本:
#!/bin/bash
while :
doif route | tail -l | grep “0.0.0.0″then&>/dev/nullelseadsl-stopadsl-startfisleep 10done执行脚本方法: nuhup sh route.sh &
注意前面要用上nohup,这样避免root用户logout时此脚本也退出生效的问题。
六、Linux批量生成生成帐户脚本
此脚本应用于生产环境下生成帐户,也可生成成百上千个密码相同的帐户。脚本代码如下:
#!/bin/bash
for name in tom jerry joe jane
do
useradd $name
echo redhat | passwd — stdin $name
done自己使用的时候,用自己需要的帐户名列表替换掉这个代码范例里的tom jerry joe jane等字段即可。密码都是redhat,可以让用户之后自己更改。
七、测试局域网内主机是否alive的小脚本
此脚本用于检查192.168.1.100到192.168.1.200之间的主机是否alive。脚本如下:
#!/bin/bash
#Checks to see if hosts 192.168.1.100-192.168.1.200 are alive
for n in {100..200}; do
host=192.168.1.$n
ping -c2 $host &>/dev/null
if [ $? = 0 ]; then echo “$host is UP”
else echo “$host is DOWN” fidone
※温馨小提示:注意$?与=之间必须空格。
小结
其它一些自动监控MySQL状态等脚本我感觉比较简单,适合于新手学习,有兴趣的可去抚琴煮酒的百度博客参观学习。如果大家感兴趣,以后也会分批整理出来跟大家分享。希望大家看了诸如此类的shell脚本,能从中学到对自己有所帮助的知识
发表评论
-
JVM Java HeapSpace到达临界值的高CPU问题
2011-11-10 19:27 1106本周有同事反馈,IDC环 ... -
java profile【cpu负载过高】
2011-11-10 17:58 1133问题描述: cpu负载陡增,内存占用情况稳定。(在多cpu ... -
Nginx+keepalived做双机热备加tomcat负载均衡
2011-10-25 16:55 1670环境说明: nginx1: 192.168.2.4 ... -
mongodb查询
2011-09-03 13:42 1055#查询 查询 name = "bruce&qu ... -
Linux网管日记(9):Linux的前世今生
2011-03-13 16:00 8711.Linux的前世 地球人 ... -
网络管理员日记(8)里应外合:Linux下的后门和日志工具
2011-03-13 15:59 1088攻入Linux系统后,很多入侵者往往就开始得意忘形了。这其中还 ... -
Linux网络管理员日记(7)更上一层楼:Linux服务器的安全实践
2011-03-13 15:58 996网络安全实践中,防火 ... -
Linux网络管理员日记(6)Linux邮件服务器的安装和安全
2011-03-13 15:57 1501四、更简单高效:Linux 邮件服务器的安装和安全 在 ... -
Linux管理员日记(5) 更简单高效:Linux邮件服务器的安装和安全
2011-03-13 15:54 1161在网络管理员的日常工作中,邮件服务器扮演着一个非常重要的角色, ... -
Linux管理日记(4)——免费而稳定:Web服务器和FTP服务器的安装
2011-03-13 15:53 1261为什么要采用Linux操作系统作为网络服务器?答案是:稳定性高 ... -
Linux管理员日记连载(3)简单易操作:类似Windows控制面板的Webmin
2011-03-13 15:52 1223安装完Linux操作系统后 ... -
Linux管理员日记连载(2)——Linux系统下的设备和文件配置
2011-03-13 15:51 998新建一个虚拟机后,除 ... -
Linux管理员日记(1)——Linux服务器傻瓜式安装完全手册
2011-03-13 15:50 1995内容简介 从桌面到服务器,从 ... -
Samba服务器的安装配置和应用
2011-03-12 14:34 1140随着计算机网络的发展 ... -
Linux 中 crontab 详解及示例(收藏)
2011-03-10 10:24 792cron是一个linux下的定时执行工具,可以在无需人工干预的 ... -
CentOS下MySql 5.0.x的安装、优化及安全设置
2011-03-07 20:24 772下载页面:http://dev.mysql.com/downl ... -
RPM强制卸载
2011-03-07 12:59 2503强制卸载jdk rpm -e j2sdk1.4.2_04 ... -
CENTOS5.2 下安装MYSQL+TOMCAT6 相关设置,设置自启动
2011-03-07 06:41 1093在SUSE SLES11 下安 ... -
用Linux下的rsync命令实现多服务器镜像同步
2011-03-06 04:08 1075用linux系统中的rsync命令 ... -
CentOS vsftp配置
2011-03-05 21:12 826yum install vsftpd 2.启动/重启/关 ...
相关推荐
linux命令行与shell脚本编程.pdf
《Linux命令行与Shell脚本编程大全》是一本专为Linux初学者编写的经典教材,旨在帮助读者深入理解和掌握Linux操作系统中的基本命令行操作以及Shell脚本编程技术。这本书全面覆盖了从基础到进阶的各种主题,对于想要...
Linux操作系统Shell脚本.zipLinux操作系统Shell脚本.zipLinux操作系统Shell脚本.zip Linux操作系统Shell脚本.zipLinux操作系统Shell脚本.zipLinux操作系统Shell脚本.zip Linux操作系统Shell脚本.zipLinux操作系统...
最实用的Linux 命令行和shell脚本编程宝典,是最常用的参考手册。
Linux 命令行和shell脚本编程宝典(清晰绝对完整版).pdf,绝对完整的版本,清晰度比160多M的还要好一些,有完整书签,在CSDN上花8分下载了4个part,结果解压不了,超级郁闷。辛苦找到的这个真正完整的可以分享给大家...
资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...
在Linux环境下,shell脚本是自动化任务的强大工具,尤其对于数据导出这样的操作,通过编写shell脚本可以方便地实现定期备份或者按需导出。本文将深入讲解如何使用shell脚本来实现数据的导出,并结合Java代码进行调用...
linux脚本+命令总结
1. ssh 远程到主机;...很多时候我们可能需要远程执行服务器上的脚本来修改账号密码,此时就没有办法进行交互了。 此时可以使用如下两种方式修改密码: 方式1: echo password | passwd testuser --stdin > /dev
Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...
在IT行业中,Linux云计算与Shell脚本编程是两个至关重要的技术领域。Linux作为开源操作系统,广泛应用于服务器管理、云计算平台以及自动化任务执行等场景。Shell脚本,作为Linux环境下的命令解释器,允许用户编写一...
linux通讯录的shell脚本,很多linux大作业都需要
Linux命令行与shell脚本编程、Linux C库函数及系统调用编程、Linux内核分析即应用、Debian(Ubuntu、Deepin)操作系统爬坑.zip Linux命令行与shell脚本编程、Linux C库函数及系统调用编程、Linux内核分析即应用、...
Linux防火墙配置shell脚本.docx
Linux命令行与shell脚本编程大全_learn-linuxshell
资深运维工程师亲自实践撰写的Linux服务器安全加固shell脚本,当然安全还要亲历亲为,不可马虎大意!
一本关于Linux命令行与shell脚本编程的全方位教程,主要包括四大部分:Linux命令行,shell脚本编程基础,高级shell脚本编程,如何创建实用的shell脚本。(编写shell实用查询宝典)