`
jackyneo
  • 浏览: 5724 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

利用crontab完成服务器自动化管理

阅读更多

 

          背景:在这之前,灵宝童鞋曾经写过一个shell脚本,用来部署sit的核心系统服务器,而现在,核心这边又建立了自己的一套独立环境,这套环境是需要我们自己来维护的,每周必须要做的至少有清理日志,更新代码重新编译和部署,那么我们就需要每周手工去运行部署脚本并查看服务器是否部署成功。

          其实这个部署脚本在一定程度上已经简化了我们单个服务器依次去部署的一些工作量了,但是大家都懂的,现在不是流行“自动化”么,于是就在想,有没有什么更“懒”的方法,帮我把运行shell脚本的事情也给做了,并告诉我每台机器日志删除、编译、部署每个步骤的运行结果。有了这个想法,就在网上找了一些相关的内容,真的发现了一个好东西------crontab!

          crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

           crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。

            所以,综上简述,简单理解,crontab就是利用linux或者unix的定时任务(经过测试,每分钟的第一秒执行一次)去定时执行crontab文件里面指定的命令或者shell脚本。知道了这个定时任务,我们只需要把要我们想要在某个时间点执行的shell脚本加入到这个crontab文件中,并设定时间规则就可以了。下面给出实际操作:

            先写出清理日志、编译、部署的shell脚本(这里只给出清理日志的简化部分,编译和部署的shell部分类似,就不在这里贴出了):

#! /bin/sh
#=============================================================================
echo "开始自动部署独立环境啦~~~" >> /home/admin/auto-build/info.log
echo "`date \"+%Y-%m-%d %H:%M:%S\"`" >> /home/admin/auto-build/info.log
echo "=================================================================" >> /home/admin/auto-build/info.log
echo "【step 1】clean the log file~" >> /home/admin/auto-build/info.log
#【1、清理上周日志文件】
cat /home/admin/auto-build/pub_perf.txt | while read line
do
ssh -n ${line}.d44.alipay.net "rm -f /home/admin/logs/$line.d44.alipay.net/*"
echo "`date \"+%Y-%m-%d %H:%M:%S\"`" >> /home/admin/auto-build/info.log
echo "清理 $line 独立服务器日志完成~" >> /home/admin/auto-build/info.log
echo -e "* * * * *\n" >> /home/admin/auto-build/info.log
done

我们把这段shell保存在clean-log.sh脚本中,然后就是新建crontab文件,用crontab -e命令,根据crontab的语法规则,建立定时任务,这里需要说明一下规则,很简单
“* * * * * [执行的命令]”,前面的几个“*”号是时间表达式,用一张图说明:


 
比如,我想在每周四的晚上10点1分清理独立环境的服务器日志,那么命令如下:


 
通过上面简单的步骤,就可以达到每周四晚上10点自动清理日志,重新部署编译的效果了,然后再进一步,我们把编译、部署过程中的一些必要信息输出到一个log文件中,如下:


 
这样我们就可以获得部署过程中的一些信息了,在此基础上,通过查找关键字(比如SUCCESS/FAILED)来获得哪些步骤是否成功的信息,然后再通过自动发送邮件的方式把这些信息发送给相关人员,就大功告成了。这里就不再赘述了~~~
最后附上这些过程中可能遇到的问题和注意点:
1、利用服务器进行自动化部署脚本的时候,一定要把shell脚本的权限放开,否则定时任务虽然可以起,但是没有权限执行就悲剧了,命令:chmod 777 [shell脚本名字];
2、利用服务器执行定时任务的时候涉及到文件的一定要写绝对路径,否则系统的定时任务不知道执行(读取、写入)哪个目录下的文件中;
3、当想写入文件内容并换行的话,只用 echo 命令加上“\n”是不行的,必须要加上echo -e 参数加上“\n”,否则只会打印出来“\n”而不是换行了,原因?官方解释:Turns on the interpretation of backslash-escaped characters,意思是必须要加上-e ,才能解释反斜杠的字符命令,否则只会当成普通的字符串了。
4、如果有童鞋根据这个来做了类似的配置,欢迎把中间遇到的问题和解决方法贴出来哈~
  • 大小: 10.5 KB
  • 大小: 20.7 KB
  • 大小: 52.7 KB
分享到:
评论
2 楼 jackyneo 2011-12-01  
Trinea 写道
lz图都挂了
crontab貌似我们这边也有用的,旺旺提醒功能好像可以加进去

厄。。。真挂了、、、
1 楼 Trinea 2011-12-01  
lz图都挂了
crontab貌似我们这边也有用的,旺旺提醒功能好像可以加进去

相关推荐

    利用rsync+crontab实现Linux服务器间的定时增量备份精品文档5页.docx

    在Linux环境中,rsync和crontab是两种非常重要的工具,它们可以协同工作,实现高效、自动化的服务器间增量备份。rsync是一款强大的数据同步工具,而crontab则是Linux下的定时任务调度器。 rsync的主要特点包括: 1...

    crontab离线包.zip

    通过熟练掌握`crontab`的使用,你可以创建复杂的定时任务计划,提升服务器维护效率,实现自动化运维。记住,合理的任务调度可以避免在非工作时间打扰到服务器的正常运行,同时确保关键任务能够按计划进行。因此,...

    利用Crontab实现对Oracle数据库的定时备份.rar

    Crontab是Linux系统中的任务调度工具,能帮助我们自动化执行包括数据库备份在内的各种任务。本教程将详细阐述如何利用Crontab来实现Oracle数据库的定时备份。 首先,我们需要理解Oracle数据库的备份类型。Oracle...

    利用rsync+crontab实现Linux的定时增量备份

    【rsync介绍】 rsync是一款强大的文件同步工具,它基于著名的...而与crontab的结合使用,进一步提升了备份的自动化程度,降低了管理和维护成本。因此,理解并掌握rsync及其配置是每个Linux系统管理员必备的技能之一。

    OS + linux crontab / top / ntpdate / nmon

    `crontab` 负责自动化任务,`top` 实时监控系统状态,`ntpdate` 确保时间准确性,而 `nmon` 则提供深入的系统性能分析。熟悉并熟练使用这些工具,对于提升 Linux 系统管理效率和解决系统问题具有极大的帮助。

    远程控制主机的SHELL自动化管理 案例

    在IT行业中,自动化管理是提升效率、减少人为错误的关键手段之一。SHELL脚本作为Linux/Unix系统中的强大工具,可以实现对远程主机的自动化控制,尤其在处理定时任务和远程执行命令时尤为便捷。本案例将探讨如何利用...

    linux-运用crontab检测程序是否在运行可通过检测进程或检测端口

    总结来说,利用`crontab`结合进程或端口检查,我们可以构建自动化监控程序运行状态的机制,确保关键服务始终可用,并在必要时采取恢复措施。这对于服务器管理和运维工作至关重要,可以显著提高系统的稳定性和可靠性...

    thinkphp 5.1 定时任务,Crontab 计划任务-think-cron.zip

    总结,ThinkPHP 5.1的定时任务功能结合Crontab,让开发者能轻松实现后台任务自动化,极大地提升了工作效率。正确配置和使用Crontab,可以确保任务按预期执行,同时保持系统的稳定运行。通过理解和实践上述步骤,你将...

    在弹层中选择选项可组合成crontab表达式

    【标题】:“在弹层中选择选项可...综上,这个项目展示了如何利用Vue.js构建一个用户友好的前端应用,帮助用户理解和创建crontab表达式,并实时验证其效果,这对于需要管理定时任务的IT专业人士来说是一个实用的工具。

    crontabs离线安装包

    在Linux系统中,`crontab`是一个非常重要的任务调度工具,它允许用户或系统管理员定义周期性...通过理解`cron`、`anacron`和`crontab`命令的工作原理,用户可以充分利用这个工具来自动化日常维护任务,提高工作效率。

    利用MRGT监控DNS服务器的负载.pdf

    可以在`mdcc.conf`或`named.conf`中指定目录,让DNS服务器自动在指定位置生成这个文件。为了保持状态文件的更新,可以使用`cron`任务定期执行删除旧状态文件并生成新文件的操作。例如,创建一个名为`delstats.sh`的...

    linux如何利用crontab添加定时任务详解

    `crontab`是Linux系统中不可或缺的一部分,它使得自动化重复性的日常任务变得简单。通过理解`crontab`的格式和选项,用户可以有效地管理和维护自己的定时任务,提高工作效率。记住,正确配置和使用`crontab`可以极大...

    MySQL定时备份方案(利用Linux crontab)

    本文将详细介绍如何利用Linux的crontab功能来实现MySQL数据库的自动化备份。首先,我们需要了解几个核心技术要点: 1. **数据库备份dump命令**:MySQL提供了一个名为`mysqldump`的命令,用于将数据库的数据和结构...

    crontab-manager:分布式crontab管理器

    在IT行业中,系统自动化是不可或缺的一部分,而crontab作为Linux系统中的一个强大工具,用于设置周期性被执行的任务,它允许用户在特定时间执行脚本或者命令,实现定时任务的自动化。然而,随着业务的发展和服务器的...

    crontab.rar_Shell编程_DOS_

    【标题】"crontab.rar" 是一...用户通过编辑.ini配置文件设置FTP连接参数和备份路径,然后利用"crontab.bat"脚本来自动化执行备份任务,确保数据安全。这样的工具对于系统管理员或需要定期备份远程数据的用户非常实用。

    服务器的时间配置.docx

    本文档主要讲述了如何通过`crontab`定时任务来实现服务器时间的自动化同步。 首先,以172.16.68.144服务器为例,管理员将`crontab`文件备份到`/tmp`目录,并命名为`crontab.Sh`。在`crontab`的配置文件中,有一行...

    Linux Web服务器配置.rar

    9. **自动化运维**:使用工具如`systemd`服务单元文件自动化启动和管理进程,利用`crontab`进行定时任务。 10. **监控与备份**:部署监控系统(如Nagios、Zabbix)监控服务器状态,定期备份数据以防意外丢失。 在...

    Linux(Centos)全自动异地备份数据(WEB+Mysql).pdf

    3. 自动化备份:自动化的备份过程能够减少人工操作错误和管理成本,提高备份效率。在这个文件中,将讨论如何设置一个自动化备份方案来备份WEB和MySQL数据。 4. FTP服务:文件传输协议(FTP)是用于在网络上进行文件...

    swoole-crontab-master.基于swoole的定时器程序,支持秒级处理

    在IT行业中,定时任务是许多系统不可或缺的一部分,用于执行周期性的、计划性的操作,例如数据备份、清理过期记录、发送通知等。...在实际开发中,可以根据项目需求进行定制和扩展,提升系统的自动化水平和效率。

    linux自动备份文件 并上传到远程服务器 脚本实现

    在Linux环境下进行自动化操作可以极大地提高工作效率,特别是对于数据备份及远程传输这样的重复性任务。本文将详细介绍如何利用Shell脚本在Linux系统上实现MySQL数据库的定时自动备份,并通过FTP协议上传至远程...

Global site tag (gtag.js) - Google Analytics