有一个伙伴添加产品的新版本的目录.
列表看起来像这样
$ ls path-to-dir/
01
02
03
04
$
Run Code Online (Sandbox Code Playgroud)
列出的数字不是文件,而是包含构建的目录的名称.
我必须每次手动去检查是否有新的版本.我正在寻找一种自动化方法,以便程序可以在path-to-dir/更新时向某些人(包括我)发送电子邮件.
我们是否有一个已经存在的实用程序或Perl库来执行此操作?
inotify.h做了类似的事情,但我的内核不支持它(2.6.9).
我认为在Perl中可以有一个简单的方法.
我有这个Perl脚本用于监视Linux中的文件夹.
为了不断检查目录的任何更新,我有一个在连续循环之间休眠5分钟的while循环:
while(1) {
...
sleep 300;
}
Run Code Online (Sandbox Code Playgroud)
在我的其他问题上没有人建议使用cron调度而不是for循环.
while与使用crontab提交cronjob相比,这个没有任何中断的构造看起来很难看:
0 */5 * * * ./myscript > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)
另外,我正在使用2.6.9内核版本.
我的Perl脚本用于监视Unix上的目录,它存储在更新监视目录时向其发送通知邮件的用户列表.
这是使用的构造
dirmon.pl
my $subject = '...';
my $msg = '...';
my $sendto = 'a@server.com b@server.com c@server.com';
my $owner = 'me@server.com';
...
open my $fh, "|-", "mail", "-s", $subject, $owner, "-c", $sendto
or die "$0: could not start mail: $!";
print $fh $msg or warn "$0: print: $!";
close $fh;
Run Code Online (Sandbox Code Playgroud)
所以,现在,对于我想要发送通知邮件的每个新用户,我需要转到代码并将其添加到$sendto.这对我来说很好,但我想稍后将该实用程序分发给用户,并且不希望他们手动将地址添加到列表中,至少不直接编辑Perl代码.
我能想到两种选择
维护具有收件人列表的外部文件.我可以添加一个标志,以便当用户说dirmon.pl -a d@server.com,电子邮件地址被附加到文件,下次发送邮件时,邮件也会转到此收件人(dirmon.pl -r d@server.com从列表中删除用户).唯一的问题是我需要在脚本中再添加一个外部文件,我试图将其最小化.
我可以在"Perl脚本可以修改自己吗?"的行上自我修改Perl代码..我不确定这是不是一个好主意.
第一种方式是最好的方式吗?有没有更好的方法来维护收件人列表?