Я запускаю игровой сервер на машине Windows 2008 r2, и я пытаюсь настроить скрипт автоматического перезапуска, который будет запускаться каждые 12 часов. До сих пор я использую планировщик задач Windows для загрузки сценария Perl каждые 12 часов, которые подключаются к telnet, чтобы игроки знали, что сервер перезагружается, а затем, когда скрипт завершен, он закрывается, а мой второй планировщик задач запускает .bat, чтобы убивать открытые задачи и перезапускает их. Что я хочу сделать запустите процесс, а затем перезапустите те же процессы, используя только скрипт perl, чтобы байт не понадобился.Программы автоматического перезапуска с использованием perl-скрипта
Таким образом, я был взломан как сумасшедший, и я стал пустым, я очень новичок в использовании Perl, поэтому все, что я нашел в google, основано на том, что я хочу сделать, - все используют PID, чтобы убить запущенную задачу. Я сделал тест с открытием и закрытием сохраненного файла txt, чтобы увидеть, изменяется ли идентификатор процесса каждый раз, когда он открывается, и похоже, что это так. Поэтому использование PID не будет работать, если не будет обходного пути для этого.
Это соединение с Telnet, если кто-то может помочь мне очистить его, а значит, не так много отпечатков и, возможно, вызовет переменные, вместо этого он сделает это немного проще, чем это поможет.
$hostname = "IP_HERE";
use Net::Telnet();
$t = new Net::Telnet (Timeout => 60,
Prompt => '/bash\$ $/');
$t->open(Host => $hostname,
Port => PORT_HERE);
$t->waitfor('/Please enter password/');
$t->print("PASSWORD_HERE");
$t->print("say \"[FF0000]WARNING! [FF0000]SERVER WILL RESTART IN [FF0000]3 MINUTES[FFFFFF] !!!\" ");
sleep(60);
$t->print("say \"[FF0000]WARNING! [FF0000]SERVER WILL RESTART IN [FF0000]2 MINUTES[FFFFFF] !!!\" ");
sleep(60);
$t->print("say \"[FF0000]WARNING! [FF0000]SERVER WILL RESTART IN [FF0000]1 MINUTE[FFFFFF] !!!\" ");
sleep(45);
$t->print("say \"[FF0000]WARNING! [FF0000]SERVER WILL RESTART IN [FF0000]15 SECONDS[FFFFFF] !!!\" ");
sleep(15);
$t->print("say \"[FF0000]WARNING! [FF0000]SERVER WILL RESTART IN [FF0000]5\" ");
sleep(1);
$t->print("say \"[FF0000]WARNING! [FF0000]SERVER WILL RESTART IN [FF0000]4\" ");
sleep(1);
$t->print("say \"[FF0000]WARNING! [FF0000]SERVER WILL RESTART IN [FF0000]3\" ");
sleep(1);
$t->print("say \"[FF0000]WARNING! [FF0000]SERVER WILL RESTART IN [FF0000]2\" ");
sleep(1);
$t->print("say \"[FF0000]WARNING! [FF0000]SERVER WILL RESTART IN [FF0000]1\" ");
sleep(1);
$t->print("sa");
sleep(3);
$t->print("shutdown");
sleep(3);
exit;
Если кто-нибудь может получить меня началась в правильном направлении, это означало бы, много, я проверил систему и несколько других вещей, но независимо от того, что я считаю, это всегда показывает окончание процесса ПИД-регулятора, а не Имя процесса. и ничто не показало мне правильный способ загрузки резервной копии программы на основе ее каталога.