脚本crontab格式

crontab格式  时间:2021-01-16  阅读:()

版权所有IBM公司2007商标系统管理工具包:构建无人参与的智能脚本第1页,共11系统管理工具包:构建无人参与的智能脚本MartinCBrown自由撰稿人和顾问MCslp2007年8月30日通过本文了解如何创建脚本来记录其输出、跟踪和标识错误及从错误和问题恢复,从而使其要么正确运行,要么失败并提供合适的错误消息和报告供分析.
构建脚本并自动运行是每个好的管理员必须进行的工作,但如何处理错误输出并就脚本应该如何处理这些错误做出明智决策呢本文将帮助您解决这些问题.
查看本系列更多内容关于本系列典型的UNIX管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍和系统.
存在各种用于简化不同过程的关键实用工具、命令行链和脚本.
其中一些工具来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员工作压力的要求.
本系列文章主要专注于最大限度地利用各种UNIX环境中可用的工具,包括简化异构环境中的管理任务的方法.
无人参与脚本的问题有很多关于无人参与脚本的问题,所谓无人参与脚本是指通过cron之类的服务或at命令自动运行的脚本.
例如,cron和at命令的默认模式是捕获脚本输出,然后将其通过电子邮件发送到运行脚本的用户.

您可能会不希望用户总是收到cron缺省发送的电子邮件(特别在一切都正常的情况下)——有时候运行脚本的用户和实际负责监视输出的不是同一个人.
因此,您需要更好的方法来跟踪和标识脚本中的错误,需要更好的方法来沟通问题,此外,还需要更好的方法来将结果告知适当的人员.
正确设置脚本非常重要;您需要确保脚本得到恰当配置,能够方便地进行维护,而且能够有效地运行.
还需要能够跟着错误和程序输出,并需要能够确保脚本的执行环境的安全性和有效性.
继续往下阅读,以了解如何进行所有这些工作.
设置环境在使用无人参与的脚本之前,需要确保恰当地设置了环境.
作为脚本的一部分,需要对各种元素进行显式配置,花时间进行此工作不仅能够确保脚本正确运行,而且还能够让脚本更易维护.

developerWorksibm.
com/developerWorks/cn/系统管理工具包:构建无人参与的智能脚本第2页,共11您可能需要考虑的事项包括:应用程序的搜索路径库的搜索路径目录位置创建目录或路径公用文件有些元素非常易于组织.
例如,可以在大部分兼容Bourne的外壳程序(sh、Bash、ksh和zsh)中使用以下命令设置路径:PATH=/usr/bin:/bin:/usr/sbin对于命令和文件位置,请直接在脚本的起始处设置一个对应的变量.
然后就可以在要使用文件名的地方使用此变量.
例如,当写入到日志文件时,可以使用清单1.
清单1.
写入日志文件LOGFILE=/tmp/output.
logdo_something>>$LOGFILEdo_another>>$LOGFILE通过设置一次名称,然后使用相应的变量,可以确保不会用错文件名,如果需要更改文件名,也只需要更改一次即可.
使用单个文件名和变量还非常便于创建复杂的文件名.
例如,通过使用date命令并提供格式规范可更方便地将日期添加到日志文件名中:DATE='date+%Y%m%d.
%H%M'上面的命令将以YYYYMMDD.
HHMM格式创建包含日期的字符串,例如,20070524.
2359.
可以将该日期变量插入文件名中,从而根据日志文件创建的日期对其进行标记.
如果未在日志文件名中使用日期/时间唯一标识符,则最好在两个脚本同时运行的情况下插入其他唯一标识符.
如果您的脚本从两个不同的进程写入相同文件,最后可能导致信息会被破坏,或丢失信息.
所有外壳程序都支持唯一外壳程序ID(基于外壳程序进程ID),可以通过特殊的$$变量名进行访问.
通过使用全局日志变量,可以方便地创建用于进行日志记录的唯一文件:LOGFILE=/tmp/$$.
err还可以将相同的全局变量原则应用于目录:LOGDIR=/var/log/my_app为了确保创建目录,请为mkdir使用-p选项,以创建希望使用的目录的完整路径:mkdir-p$LOGDIRibm.
com/developerWorks/cn/developerWorks系统管理工具包:构建无人参与的智能脚本第3页,共11幸运的是,如果目录已经存在,则此格式不会有任何问题,因而非常适合在无人参与的脚本中运行.
最后,通常最好在无人参与的脚本中使用完整路径名而不是相对路径,从而能将前面的原则与之结合使用.
清单2.
在无人参与的脚本中使用完整路径名DATE='date+%Y%m%d.
%H%M'LOGDIR=/usr/local/mcslp/logs/rsynclogmkdir-p$LOGDIRLOGNAME=$LOGDIR/$DATE.
log现在已经设置了环境,接下来让我们看看可以如何使用这些原则来帮助处理通用的无人参与脚本.

写入日志文件可能对脚本最简单的改进就是将脚本的输出写入日志文件.
您可能认为没有这个必要,但cron的缺省操作是保存所执行的脚本或命令的输出,然后将其通过电子邮件发送到拥有crontab或负责相关工作的人.
由于多方面的原因,这个方法并不完美.
首先,所配置的可能运行脚本的用户可能和需要处理输出的实际人员不是同一个人.
您可能会作为root运行脚本,不过运行时脚本或命令的输出要送到其他人那里.
如果希望将不同命令的输出发送到不同的用户,设置通用筛选器或重定向的方法并不会起作用.
第二个原因是更具有根本意义.
除非出现错误,否则就没有必要接收脚本的输出.
cron守护程序将发送stdout和stderr的输出,这意味着即使脚本成功执行,也会得到一个输出副本.
最后的原因是关于生成的信息和输出的管理和组织.
电子邮件并非总能够有效地记录和跟踪自动运行的脚本的输出.
您可能会只想保存成功的日志文件的存档,或在出现问题时将错误日志的副本以电子邮件方式发送出去.
可以采取多种方式进行写入日志文件的工作.
最简单的方式是将每个命令的输出重定向到文件中(请参见清单3).
清单3.
将输出重定向到文件cd/sharedrsync--delete--recursive.
/backups/shared>$LOGFILE如果希望将错误或标准输出组合为单个文件,请使用编号重定向(请参见清单4).
清单4.
将错误和标准输出组合到单个文件中cd/sharedrsync--delete--recursive.
/backups/shared>$LOGFILE2>&1清单4将信息写入到同一个日志文件中.
您还可能会希望将信息写入到不同的文件中(请参见清单5).
developerWorksibm.
com/developerWorks/cn/系统管理工具包:构建无人参与的智能脚本第4页,共11清单5.
将信息写入不同的文件中cd/sharedrsync--delete--recursive.
/backups/shared>$LOGFILE2>$ERRFILE对于多个命令的情况下,重定向可能会变得很复杂,而且可能会重复出现.
例如,您必须确保是将信息追加(而不是覆盖)到日志文件中(请参见清单6).
清单6.
将信息追加到日志文件cd/etcrsync--delete--recursive.
/backups/etc>>$LOGFILE>>$ERRFILE更为简单的方法(如果支持的话)是为一组命令使用内联块,然后作为整体重定向这个块的输出.

因此,可以使用清单8中的结构覆盖清单7中的行.
清单7.
冗繁的日志记录代码cd/sharedrsync--delete--recursive.
/backups/shared>$LOGFILE2>$ERRFILEcd/etcrsync--delete--recursive.
/backups/etc>>$LOGFILE2>>$ERRFILE清单8显示了分组命令的内联块.
清单8.
使用块进行日志记录{cd/sharedrsync--delete--recursive.
/backups/sharedcd/etcrsync--delete--recursive.
/backups/etc}>$LOGFILE2>$ERRFILE配对括号意味着子外壳,因此块中的所有命令将作为独立进程的一部分执行(尽管没有必要创建外壳,但所包含的块被作为不同逻辑环境对待).
通过使用子外壳,可以对整个块(而不是单个命令)的标准和错误输出进行集体重定向.
跟踪错误并报告子外壳的一个主要优势是,可以对脚本的主要内容进行包装,重定向错误然后发送包含脚本执行状态的具有特定格式的电子邮件.
例如,清单9显示了复杂的脚本,将在其中设置环境,执行实际命令和进程的大部分内容,跟踪输出,然后发送包含输出和错误信息的电子邮件.
清单9.
使用子外壳以电子邮件形式发送更为有用的日志LOGFILE=/tmp/$$.
logERRFILE=/tmp/$$.
errERRORFMT=/tmp/$$.
fmt{set-eibm.
com/developerWorks/cn/developerWorks系统管理工具包:构建无人参与的智能脚本第5页,共11cd/sharedrsync--delete--recursive.
/backups/sharedcd/etcrsync--delete--recursive.
/backups/etc}>$LOGFILE2>$ERRFILE{echo"Reportedoutput"echocat/tmp/$$.
logecho"Erroroutput"echocat/tmp/$$.
err}>$ERRORFMT2>&1mailx-s'Logoutputforbackup'root>$ERRLOGif[$-ne0]thenmailx-s"Scriptfailedwhenmakingdirectory"adminmailerror.
log如果没有其他错误,mailerror.
log文件将为空,并将发送包含错误信息的电子邮件.
developerWorksibm.
com/developerWorks/cn/系统管理工具包:构建无人参与的智能脚本第8页,共11总结在本文中,我们了解了如何在无人参与的脚本中运行命令、捕获输出和监视脚本中不同命令的执行.
可以通过很多方式对信息进行记录(例如,按命令记录或全盘记录),并检查和报告进度.

819云互联 香港 日本 美国 2核4G 18元 8核8G 39元 免费空间 免费CDN 香港 E3 16G 20M 230元/月

819云互联是海外领先的互联网业务平台服务提供商。专注为用户提供低价高性能云计算产品,致力于云计算应用的易用性开发,并引导云计算在国内普及。目前平台研发以及运营云服务基础设施服务平台(IaaS),面向全球客户提供基于云计算的IT解决方案与客户服务,拥有丰富的海外资源、香港,日本,美国等各国优质的IDC资源。官方网站:https://www.819yun.com香港特价物理服务器:地区CPU内存带宽...

特网云57元,香港云主机 1核 1G 10M宽带1G(防御)

特网云官網特网云服务器在硬件级别上实现云主机之间的完全隔离;采用高端服务器进行部署,同时采用集中的管理与监控,确保业务稳定可靠,搭建纯SSD架构的高性能企业级云服务器,同时采用Intel Haswell CPU、高频DDR4内存、高速Sas3 SSD闪存作为底层硬件配置,分钟级响应速度,特网云采用自带硬防节点,部分节点享免费20G防御,可实现300G防御峰值,有效防御DDoS、CC等恶意攻击,保障...

RackNerd新上圣何塞、芝加哥、达拉斯、亚特兰大INTEL系列,$9.49/年

racknerd怎么样?racknerd商家最近促销三款美国便宜vps,最低只需要9.49美元,可以选择美国圣何塞、西雅图、纽约和芝加哥机房。RackNerd是一家成立于2019年的美国高性价比服务器商家,主要从事美国和荷兰数据中心的便宜vps、独立服务器销售!支持中文工单、支持支付宝和微信以及PayPal付款购买!点击直达:racknerd官方网站INTEL系列可选机房:加利福尼亚州圣何塞、芝加...

crontab格式为你推荐
美国免费主机免费主机可以建几个站?虚拟主机代理谁给推荐个好的虚拟主机无限级代理vps试用免费vps申请哪里有,免费vps试用的也可以?台湾主机台湾的第一台电脑虚拟空间哪个好虚拟主机哪家的最好?虚拟主机管理系统推荐几个适合windows的免费虚拟主机管理系统下载虚拟主机虚拟机怎么使用和下载最好的虚拟主机哪家的虚拟主机比较好?华众虚拟主机管理系统华众虚拟主机管理系统请问。华众 虚拟主机管理系统 这个问题 怎么解决 。就是后台可以开通虚拟主机 没有问题,但是 删除虚拟主机 后台显示删除成功的,但是实际在服务器上 文件夹 ftp iis站点 都没有被删除 是什么问题域名解析域名解析怎么弄?
a2hosting winhost info域名 绍兴高防 100x100头像 阿里云浏览器 工信部icp备案号 南通服务器 爱奇艺vip免费试用7天 德隆中文网 万网注册 攻击服务器 阿里云邮箱申请 hostease 服务器托管价格 亿库 reboot 超低价 饭桶 报警主机 更多