标签: perl

我有一个应该无限期运行的 perl 脚本。它正在被杀死……我如何确定是谁或什么杀死了它?

我在屏幕上运行 perl 脚本(我可以登录并检查调试输出)。脚本逻辑中的任何内容都不能杀死它。

我是仅有的两个可以访问服务器的人之一,另一个人发誓不是他(我们都有很多钱可以继续顺利运行)。我没有理由相信某些黑客已经设法获得了一个 shell 或类似的东西。我几乎没有理由怀疑主机操作的管理员(带宽/cpu 方面,这个脚本非常轻量级)。

Screen 继续运行,但在 perl 脚本的输出结束时,我看到“Killed”并且它已回落到提示。我如何去测试什么是该死的东西?

我检查了 crontab,里面没有任何东西可以杀死随机/非随机进程。任何日志文件中都没有任何提示。它将运行 2 到 8 小时,看起来(在我家里的 Mac 上,它可以运行 24 小时以上没有问题)。服务器正在运行 Ubuntu 版本,如果重要的话,我可以查一下。

linux kill perl gnu-screen

4
推荐指数
1
解决办法
3979
查看次数

我可以安全地删除 .cpanm/work 目录吗?

我已经使用 cpanm 在我的系统上安装 cpan perl 模块,但是 .cpanm/work 目录是 100 兆字节,我想删除它。

我可以删除这个目录而不会对我的 cpanm 安装产生不利影响吗?

perl cpan

4
推荐指数
1
解决办法
2461
查看次数

debian升级中断,导致perl问题

所以我塞了一个debian的升级,upgrade和dist-upgrade。我更习惯于 yum 但这不是借口。

现在事情变得愚蠢了。大多数事情都有效,但是,我的 bugzilla 安装失败。在加载 bugzilla 时,我收到 500 错误,并记录在 error.log 中;

[Fri Jun 05 12:34:16 2009] [error] [client 172.20.0.160] Can't locate Email/Address.pm in @INC (@INC contains: . /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl) at Bugzilla/Mailer.pm line 48.
[Fri Jun 05 12:34:16 2009] [error] [client 172.20.0.160] BEGIN failed--compilation aborted at Bugzilla/Mailer.pm line 48.
[Fri Jun 05 12:34:16 2009] [error] [client 172.20.0.160] Compilation failed in require at Bugzilla/Token.pm line 35.
[Fri Jun 05 12:34:16 2009] [error] [client 172.20.0.160] BEGIN …
Run Code Online (Sandbox Code Playgroud)

debian bugzilla aptitude perl apt

3
推荐指数
1
解决办法
2603
查看次数

编译 Perl 5.12.1 (RHEL 5.5) 时出错

我正在尝试在 Red Hat Enterprise Linux 5.5 上的主目录中编译 Perl 5.12.1。但是,当我尝试制作时,最终收到以下错误:

    Making IO (all)
make[1]: Entering directory `/users/rmi1/build/perl-5.12.0/dist/IO'
make[1]: Leaving directory `/users/rmi1/build/perl-5.12.0/dist/IO'
Making all in dist/IO
 make all PERL_CORE=1 LIBPERL_A=libperl.a LINKTYPE=dynamic
make[1]: Entering directory `/users/rmi1/build/perl-5.12.0/dist/IO'
cc -c   -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2   -DVERSION=\"1.25_02\" -DXS_VERSION=\"1.25_02\" -fPIC "-I../.."   IO.c
IO.xs: In function ‘XS_IO__Poll__poll’:
IO.xs:249: error: invalid application of ‘sizeof’ to incomplete type ‘struct pollfd’ 
IO.xs:253: error: invalid use of undefined type ‘struct pollfd’
IO.xs:253: error: dereferencing pointer to incomplete type
IO.xs:255: error: …
Run Code Online (Sandbox Code Playgroud)

redhat perl

3
推荐指数
1
解决办法
2886
查看次数

在 debian + Others 上安装 LWP Perl 模块

我只是想知道是否有人可以告诉我如何在 debiab 上安装以下 perl 模块:

install LWP
install DBI
install DBD::mysql
install GD
Run Code Online (Sandbox Code Playgroud)

我尝试使用 CPAN 虽然当我跑步时

perl -MCPAN -e shell
install LWP
Run Code Online (Sandbox Code Playgroud)

它告诉我我缺少目标文件操作数。

任何的想法?

linux debian perl

3
推荐指数
1
解决办法
9066
查看次数

Bugzilla install-module.pl 找不到“make”,但它已安装并在我的路径中

我正在一台新的 Ubuntu 服务器上安装 Bugzilla,并且 ./checksetup.pl 找到了另一个我需要安装的库。

所以它告诉我运行这个命令:

/usr/bin/perl install-module.pl Math::Random::Secure
Run Code Online (Sandbox Code Playgroud)

当我运行它时,出现以下错误:

ERROR: Using install-module.pl requires that you install "make".
Run Code Online (Sandbox Code Playgroud)

Make 已安装(apt-get install make),我知道它在我的 $PATH(在 /usr/bin/ 中)中,但我仍然从 install-module.pl 中得到该错误。

我是否必须做一些特殊的事情来确保它有正确的路径,还是应该使用我的 shell 中的路径?“make”是指我安装的 make 还是可以指代某个 perl 模块?

谢谢!

bugzilla installation make perl

3
推荐指数
1
解决办法
5574
查看次数

两台服务器之间的文件传输,无FTP,无网络

我希望自动将给定目录中的文件从一台服务器传输到另一台服务器。他们都在同一个网络上,可以互相ping通,甚至可以从一个到另一个ssh。

目前我的方法是 SSH 到服务器 A,将文件拉下来,SSH 到服务器 B 并上传它们......

我已经在这里看到了一篇文章,但我想问你们什么是从服务器到服务器传输文件、嵌入到 cron-job 或自动化的最佳方式。

这是我的限制:

  • 两个服务器都不能有任何公共 Web 服务(没有端口 80,没有 apache,没有任何悲伤的脸

  • 两个服务器都不能使用任何类型的 FTP 连接(尽管我们可以 ssh)

预先感谢大家的帮助

php bash ftp perl

3
推荐指数
2
解决办法
2362
查看次数

Debian Wheezy 和 SUID Perl

我刚刚将 Debian Lenny box 升级到 Wheezy,发现 suidperl 不见了。谷歌搜索显示上游维护者删除了它;

需要suidperl 来运行我们的邮件安装,Open Webmail。

我没有时间做这个。

谷歌搜索没有发现简单的解决方法。

这里有人知道如何在 wheezy 上获得 suidperl 吗?简单地?谢谢。

perl debian-wheezy

3
推荐指数
1
解决办法
1707
查看次数

增加从 postfix 启动的脚本的日志文件的文件大小

每当消息发送到特定地址时,我都会使用 Postfix 运行脚本。该脚本是一个 Perl 脚本,它使用Log4perl将日志写入文件。Log4perl 每天轮换日志文件。

除了一个小角落之外,它运行良好。当日志文件大小超过 50MB 时,脚本无法写入日志文件。

对 Postfix 进行一些研究后,看来这可能是 Postfix 设置的限制。postconf这是可能相关的部分输出。

$ postconf | grep size
berkeley_db_create_buffer_size = 16777216
berkeley_db_read_buffer_size = 131072
body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
mailbox_size_limit = 51200000
message_size_limit = 10240000
tcp_windowsize = 0

$ postconf | grep virtual_mailbox_limit
virtual_mailbox_limit = 51200000
Run Code Online (Sandbox Code Playgroud)

是否有任何选项可以更改以消除从脚本创建的日志文件的文件大小 50MB 限制?

以下是 Log4perl 设置的完整性。

$ cat /some/path/to/my/log4perlsettings.cfg
log4perl.logger.mylog = DEBUG,LOGGER
log4perl.appender.LOGGER = Log::Dispatch::FileRotate
log4perl.appender.LOGGER.TZ=PST
log4perl.appender.LOGGER.DatePattern=yyyy-MM-dd
log4perl.appender.LOGGER.filename = /some/path/to/my/logs/logfile.log
log4perl.appender.LOGGER.mode = append
log4perl.appender.LOGGER.max …
Run Code Online (Sandbox Code Playgroud)

postfix perl

3
推荐指数
1
解决办法
774
查看次数

Windows 10 - Perl 与 dsadd/dsquery

几个月前,我创建了一个用于将用户添加到 Active Directory 的 perl 脚本。在 Windows 7 上它运行良好。在 Windows 10 上,perl 无法运行“dsquery”或“dsadd”,但我真的无法理解这一点。

当我从同一命令行运行“dsquery”时,它可以工作。尝试使用 perl 脚本...不会!

Der Befehl "C:\Windows\System32\dsquery.exe" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Run Code Online (Sandbox Code Playgroud)

(= 无法找到命令 dsquery...)

perl 脚本中的一些代码片段:

$datetime = strftime("%d.%m.%Y %H:%M:%S", localtime);
&GetOptions     ("-v=s"    => \$fname,
             "-n=s"    => \$sname,
             "-u=s"    => \$uname,
             "-p=s"    => \$pwd,
             "-noshare" =>\$noshare,
             "-test"   =>\$test,
             "-noquota"   =>\$noquota,
             "-sshpw=s"   =>\$sshpw );

unless ($fname) {                
print "Vorname: ";
$fname = <STDIN>;
chomp $fname;}

unless ($sname) {
print "Nachname: ";
$sname = <STDIN>; …
Run Code Online (Sandbox Code Playgroud)

windows active-directory perl windows-10

3
推荐指数
1
解决办法
1540
查看次数