我没有编写的较旧的脚本之一是在Perl中,今天已经停止工作了。我试图了解发生了什么,但对perl一无所知。
输出如下:
can't unlock rss: Operation not permitted at /home/ec2-user/news/lib/Utils.pm line 107.
从代码段中
sub unlock {
my $ss = shift || ();
my $feed = shift;
`kill -9 $_` for @$ss;
unlink "/tmp/$feed.lock" or die "can't unlock $feed: $!"; #line 107
1;
}
奇怪的是,错误仅发生在RSS上,当其他提要调用此子时,它们就可以正常工作。有什么建议?
编辑1
其他提要具有相同的chmod,并且工作正常,又被删除
编辑2
从我的收集来看,这是一个特权问题。有问题的文件使用
sub lock
{
my $feed = $_[1];
my $pc = [split '[\r\n]+', `ps aux | grep /$feed.pl | grep -v grep`];
my $ss = [map {/^[-\w]+\s+(\d+).+?\s+Ss\s+/ and $1} @$pc];
unlock(0, $feed) if @$pc < 2 && -f "/tmp/$feed.lock";
unlock($ss, $feed) if @$ss && -f "/tmp/$feed.lock";
die "$feed is already run" if -f "/tmp/$feed.lock";
return `touch /tmp/$feed.lock`;
}
“不允许操作”为EPERM
。取消链接仅在以下情况下应返回此值:
[EPERM]以path命名的文件是目录,并且调用进程没有适当的特权,或者实现禁止在目录上使用unlink()。
[EPERM]或[EACCES]在包含path参数所引用文件的目录上设置了S_ISVTX标志,并且该过程不满足XBD Directory Protection中指定的条件。
可能它不是目录,并且/ tmp启用S_ISVTX标志以确保安全是正常的(虽然以前可能没有)?因此,请阅读那里的目录保护链接,看看可能是问题所在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句