我想製作一個腳本,可以在一定的時間內阻止對某些域的請求,並在相同的時間內終止特定的進程。在後臺運行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