如何使用cron调度Perl脚本
Cron是一个在类UNIX平台上可用的作业调度程序。大多数系统命令都可以被调度,包括执行Perl程序。一旦设置了一个作业,cron就会按照计划执行它,即使用户未登录,这可以是一个自动化系统管理任务或重复性工作的好方法。本文介绍了如何使用cron运行Perl脚本。
Perl脚本技巧
当准备由cron运行的脚本时,有一些事情需要注意。你可能在脚本的末尾添加一个shebang行来指定要执行的Perl二进制文件。例如
#!/usr/local/bin/perl
如果你计划在不同的平台上运行脚本,可以省略shebang行,因为Perl二进制文件的位置可能因平台而异(关于这一点后面会详细介绍)。
此外,请确保脚本中使用的任何路径都是绝对路径(例如,用于打开文件句柄、数据库连接字符串和外部程序路径)。
设置crontab
要使用cron调度作业,需要将作业添加到用户的crontab中。为此,打开终端并输入以下内容
crontab -e
这将打开crontab以文本编辑器。要添加作业,必须以以下格式添加一行
* * * * * command to be executed
| | | | |
| | | | |
| | | | +----- day of week (0 - 6, Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
An asterisk (*) means all.
以下是一些示例crontab条目
# execute every minute
* * * * * perl /path/to/Beacon.pl
# execute every 5 minutes
*/5 * * * * perl /path/to/Beacon.pl
# execute every hour at 0 minutes past the hour
0 * * * * perl /path/to/Beacon.pl
# execute every 12 hours at half past the hour
30 */12 * * * perl /path/to/Beacon.pl
如果你的脚本不包含shebang行,请在crontab中提供Perl二进制文件的绝对路径。例如
30 */12 * * * /usr/local/bin/perl /path/to/Beacon.pl
保存crontab并退出文本编辑器。要检查作业是否已调度,可以从终端使用以下命令检查你的crontab
crontab -l
这将打印你的当前crontab到终端。
解决cron问题
使用cron通常很简单,但如果你在运行Perl脚本时遇到困难,请检查以下内容
- 检查cron日志以确认cron是否正在按预期运行作业。通常位于这里:/var/log/cron
- 请确保你提供了正确的Perl二进制文件的绝对路径。要么在脚本内部的shebang行中,要么在crontab中(如果你不确定这是什么,请在终端中键入“which perl”)。
- 确保脚本权限允许执行(例如,“chmod +x /path/to/file”)
- 如果你在Perl脚本中运行其他程序,请考虑将它们的二进制路径添加到crontab中,因为cron的PATH与用户不同。
- 如果你需要以root身份运行脚本,只需使用sudo创建root的crontab:“sudo crontab -e”
有关cron的一般技巧的好列表可以在这里找到。
本文最初发布于PerlTricks.com。
标签
反馈
这篇文章有什么问题吗?通过在GitHub上打开一个问题或拉取请求来帮助我们。
- More commenting... maybe?
github.polettix.it - Perl Weekly Challenge 121: Invert Bit
blogs.perl.org - Web nostalgia: MojoX::Mechanize
github.polettix.it - On the eve of CPAN Testers
blogs.perl.org - PWC121 - The Travelling Salesman
github.polettix.it - PWC121 - Invert Bit
github.polettix.it - Floyd-Warshall algorithm implementations
github.polettix.it - Perl Weekly Challenge 120: Swap Odd/Even Bits and Clock Angle
blogs.perl.org - How I Uploaded a CPAN Module
blogs.perl.org - App::Easer released on CPAN
github.polettix.it