对cron作业使用bash脚本有什么好处?

根据我的理解,你可以通过编辑来编写你的cron

crontab -e 

我发现了几个来源,而不是在cron作业中引用bash脚本,而不是为行写作业线。

唯一的好处是你可以使用bash脚本将许多任务合并到一个cron作业中?


另外一个新手问题:编辑crontab -e是指一个文件是否正确? 我注意到,如果我打开crontab -e并closures而不进行编辑,当我再次打开文件时,有一个不同的数字扩展名,例如:

 "/tmp/crontab.XXXXk1DEaM" 0L, 0C 

我虽然crontab存储在/ var / spool / cron或/ etc / crontab?

为什么它将cron存储在tmp文件夹中?

这取决于你在做什么。

cron不会给你一个真正的脚本环境,所以,如果你正在做一些比简单地调用一些命令更复杂的东西,你可能想用cron来调用一个脚本。 你也可以处理脚本中的variables扩展,这在cron的环境中可能很难做到。

您在运行crontab -e时看到的临时文件就是这样的:临时文件在退出编辑器会话后将被清除。 您通过此方法编辑的实际crontabs在/ var / spool / cron中。

实际上,因为这些是相对基本的特定于unix的问题,所以unix.stackexchange.com方面可能更有帮助。

好的,对于第一个问题:有一些原因可以为你的cronjob使用bash脚本:

正如您所提到的,您可以将许多命令合并到一个bash脚本中。 这比一个庞大的crontab生产线更可读,尤其是因为逻辑stream程更加明显。 比较:

 command1 >/tmp/foo && command2 || command3 

 if command1 >/tmp/foo then command2 else command3 fi 

另一个在你的crontab中调用脚本的原因是你可以调用bash以外的东西。 例如,你可以调用一个perl脚本甚至一个php脚本。

另外,假设你有一些你想在cron之外调用的逻辑。 然后,把这个逻辑放在你的服务器上安装一个单独的脚本也是有意义的。 您可以根据需要在命令行上运行该脚本,也可以从crontab中调用该脚本。

最后,请注意crontabs中的引用真的很奇怪。 规范的例子是crontabs吃百分号。 如果你把一个'%'放在一个crontab行中,你实际上必须把它加倍('%%'),否则cron会吃掉百分号,把jebebus混淆在外。

基本上,在脚本中包装cronjob是更安全(更标准的引用/转义),更灵活。 任何超过一个或两个命令的cronjob都应该被移到一个单独的脚本中。

第二个问题非常简单:编辑crontab时,不要直接在/ var / spool下编辑文件。 相反, crontab -e命令会将您的crontab文件复制到/ tmp中的临时文件中。 tempfile名称的一部分是一个随机string,旨在减less两次调用crontab -e试图编辑/ tmp中相同文件的机会。

出于各种原因编辑临时文件比较安全。 一个是,如果编辑过程崩溃,原始文件保持不变,可用。 另一个是它允许系统在更换旧的crontab之前检查新的crontab的语法错误。

另外,如果我只是一次性地input整个条目而不说玉米卷,我会感到惊讶。