脚本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总结在本文中,我们了解了如何在无人参与的脚本中运行命令、捕获输出和监视脚本中不同命令的执行.
可以通过很多方式对信息进行记录(例如,按命令记录或全盘记录),并检查和报告进度.

企鹅小屋6折年付240元起,美国CN2 GIA VPS促销,独享CPU,三网回程CN2 GIA

企鹅小屋怎么样?企鹅小屋最近针对自己的美国cn2 gia套餐推出了2个优惠码:月付7折和年付6折,独享CPU,100%性能,三网回程CN2 GIA网络,100Mbps峰值带宽,用完优惠码1G内存套餐是年付240元,线路方面三网回程CN2 GIA。如果新购IP不能正常使用,请在开通时间60分钟内工单VPS技术部门更换正常IP;特价主机不支持退款。点击进入:企鹅小屋官网地址企鹅小屋优惠码:年付6折优惠...

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

美国云服务器 1核 1G 100M 10G防御 39元/月 物语云计算

物语云计算(MonogatariCloud)是一家成立于2016年的老牌国人商家,主营国内游戏高防独服业务,拥有多家机房资源,产品质量过硬,颇有一定口碑。本次带来的是美国圣何塞 Equinix 机房的高性能I9-10980XE大带宽VPS,去程CN2GIA回程AS9929,美国原生IP,支持解锁奈飞等应用,支持免费安装Windows系统。值得注意的是,物语云采用的虚拟化技术为Hyper-V,资源全...

crontab用法为你推荐
免费虚拟空间免费的虚拟主机空间哪个好?域名注册网有没有免费的网站域名注册?域名代理怎样通过卖域名赚钱?网站服务器租用公司想建个网站,请问租服务器按年收费是多少钱免费域名空间免费空间和免费域名免费网站空间免费个人网站 空间免费网站空间申请如何申请到免费的网站空间北京虚拟主机北京服务好的虚拟主机代理商介绍几个?论坛虚拟主机论坛虚拟主机的IP地址在后台的那个地方呀淘宝虚拟主机淘宝买虚拟主机空间好吗?
域名注册使用godaddy 北京服务器租用 香港服务器租用99idc 网易域名邮箱 香港新世界电讯 hinet google台湾 域名与空间 我的世界服务器ip 锐速 免费获得q币 web服务器 美国vpn服务器 木马检测 tko 海尔t68驱动 xendesktop 免费论坛空间 web服务器硬件配置 tftp服务器是什么 更多