我想制作一个脚本,可以在一定的时间内阻止对某些域的请求,并在相同的时间内终止特定的进程。在后台运行Perl脚本并向其发送命令
我想有一个像守护进程,我可以发送命令。 例如,要看到多少时间留给与some_script timeleft
, 开始这将通过类似some_script start
, 或添加一个新的域/工艺制造的守护进程等
我什么卡住on是:
如何创建一个守护进程?我见过this
我不知道如何从一个命令行
我希望我已经在我的解释不够清楚命令发送到后台程序。
我想制作一个脚本,可以在一定的时间内阻止对某些域的请求,并在相同的时间内终止特定的进程。在后台运行Perl脚本并向其发送命令
我想有一个像守护进程,我可以发送命令。 例如,要看到多少时间留给与some_script timeleft
, 开始这将通过类似some_script start
, 或添加一个新的域/工艺制造的守护进程等
我什么卡住on是:
如何创建一个守护进程?我见过this
我不知道如何从一个命令行
我希望我已经在我的解释不够清楚命令发送到后台程序。
我可能会使用你参考答案的骨头,但增加:
为SIGHUP
其处理程序重新读取IP地址的配置文件压制,并
SIGUSR1
的处理程序报告剩余的时间。
因此,它看起来像这样大致是:
#!/usr/bin/perl
use strict;
use warnings;
use Proc::Daemon;
Proc::Daemon::Init;
my $continue = 1;
################################################################################
# Exit on SIGTERM
################################################################################
$SIG{TERM} = sub { $continue = 0 };
################################################################################
# Re-read config file on SIGHUP
################################################################################
$SIG{HUP} = sub {
# Re-read some config file - probably using same sub that we used at startup
open(my $fh, '>', '/tmp/status.txt');
print $fh "Re-read config file\n";
close $fh;
};
################################################################################
# Report remaining time on SIGUSR1
################################################################################
$SIG{USR1} = sub {
# Subtract something from something and report difference
open(my $fh, '>', '/tmp/status.txt');
print $fh "Time remaining = 42\n";
close $fh;
};
################################################################################
# Main loop
################################################################################
while ($continue) {
sleep 1;
}
你会再发送与HUP信号或USR1信号:
pkill -HUP daemon.pl
或
pkill -USR1 daemon.pl
并在/tmp/status.txt
看看从守护进程中放入。上述命令假定您将Perl脚本存储为daemon.pl
- 如果您使用了不同的名称,请进行调整。
或者您可以让守护进程在启动时将自己的pid
写入文件,并使用-F
选项至pkill
。
它的确比Sockets更容易,更全面。非常感谢 :) ! – cocosushi
为什么不让它基于HTTP,所以你不必创造一个全新的服务器(这远远超出你的技能)? – ikegami
@cocosushiTS:你可以从头编写自己的服务器,或者你可以使用现有的模块来创建HTTP服务器。 – Borodin
@cocosushiTS:你可以使用你选择的任何进程间通信来创建你自己的服务器。套接字是一种方式,但它们的工作水平很低,您将不得不设计一个简单的协议。由于有很多现成的软件来实现一个HTTP服务器,所以写一些能够响应HTTP请求的东西是很有意义的,这个HTTP请求大多是明文 – Borodin