Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужно убить все процессы, нажатием одной кнопки 
:(
    Опции темы
Igоr
Дата 4.1.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.12.2005

Репутация: нет
Всего: нет



привет.
есть скрипт, который будет работать в бесконечном цикле, но нужен способ как-нибудь его остановить по требованию. Как сделать?

Спасибо
PM MAIL   Вверх
sharq
Дата 4.1.2006, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Igоr можно написать обработчик на нажатие Ctrl-C или другие клавишы, при нажатие на кот. срабатывавет last в цикле.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Igоr
Дата 4.1.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.12.2005

Репутация: нет
Всего: нет



Извините если туплю, но я так понял, что метод, который вы предлагаете применим при запуске скрипта из консоли?
В моей ситуации скрипт запускается из веба.

Это сообщение отредактировал(а) Igоr - 4.1.2006, 20:02
PM MAIL   Вверх
sharq
Дата 5.1.2006, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Igоr
Цитата(Igоr @ 4.1.2006, 21:01 Найти цитируемый пост)

метод, который вы предлагаете применим при запуске скрипта из консоли

да. smile

Цитата(Igоr @ 4.1.2006, 21:01 Найти цитируемый пост)

В моей ситуации скрипт запускается из веба.

Тогда подробнее опиши ситуацию.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
Igоr
Дата 5.1.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 7.12.2005

Репутация: нет
Всего: нет



Ситуация следующая, есть скрипт, который получает массив урлов и гетит их, после того как пройдет весь список по одному разу нужно возобновить цикл и так далее... но не до бесконечности конечно smile, при этом в веб выдает результаты запроса, ну вот мне нужно какую-нить кнопку нажать и убить этот цикл smile
Доступа к консоли нет.
PM MAIL   Вверх
korob2001
Дата 5.1.2006, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

Ситуация следующая, есть скрипт, который получает массив урлов и гетит их, после того как пройдет весь список по одному разу нужно возобновить цикл и так далее... 

Идея у тебя хорошая, но у тебя врядле что-то получится. Попробуй, напиши программу с цикло, не обязательно бесконечным и зупусти её в браузере.
Цитата

ну вот мне нужно какую-нить кнопку нажать и убить этот цикл.
Доступа к консоли нет.

smile Как так? Доступа к консоли нет, но ты же пишешь программу на Perl, откуда ты можешь дать практически любую системную команду. С кнопочкой наверное ничего не получится, а если и получится, то это будет не CGI програма. Тебе нужно писать приложение "клиет-сервер", где клиент прогрмма которая будет находиться у тебя на машине, если нужна кнопочка, то пишешь на Tk под неё GUI. Она будет связываться с сервером, который будет слушать определённый порт, работать такой сервер (демон), должен в фоновом режиме. Потому как, сколько будет рабоать этот цикл известно одному богу и тебе. smile


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
sharq
Дата 6.1.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Igоr можно сделать так, конечно, не самый простой способ. smile
Написать отдельно скрипт, который при нажатие на кнопочку, т.е. при посылке ему опрделенного запроса, делал бы следующее - искал бы в процессах запущенный твой скрипт и удалял его при помощи команды kill.

На самом деле, можно сделать запуск твоего скрипта по расписанию через cron и тогда не требуется его обрывать, пусть работает как часы.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
popkorn
Дата 4.2.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.12.2005

Репутация: нет
Всего: нет



при посылке скрипту определенного параметра, выполняется :

@info = `ps aux`;
foreach $a(@info){
if ($a =~ /название_скрипта/ ){
@ar=split(/ /,$a);
`kill -9 "@ar[1]"`;
};
}
PM MAIL   Вверх
Usya
Дата 22.2.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



Небольшой вопрос вдогонку.

Как убить зависший процесс и быть уверенным, что он точно убит?
Либо, практически то же самое, - как определить PID зависшего (текущих) процессов?

smile
Заранее благодарен.

Это сообщение отредактировал(а) Usya - 22.2.2006, 08:07
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
chaos
Дата 22.2.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



smile smile smile
Код

system('reboot');
#или
system('poweroff');

PM WWW   Вверх
tishaishii
Дата 22.2.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



Код
`kill -9 $pid` until undef

Добавлено @ 16:47
smile
PM MAIL ICQ Skype   Вверх
Usya
Дата 23.2.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



chaos, tishaishii
Спасибо за ответы, но мне не надо убивать абсолютно все процессы, тем более перезагружать систему. Да и правов у меня таких нет. Попробую перефразировать вопрос:

Как определить PID процесса (если более конкретно, то cgi-скрипта), чтобы при необходимости можно было его убить?
При этом определить PID нужно из внешней проги.
Или, в крайнем случае, необходимо определить PID-ы всех процессов (cgi-скриптов), а какой из них убить, там уже сам решу smile


Это сообщение отредактировал(а) sharq - 23.2.2006, 12:39
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
tishaishii
Дата 23.2.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: 4
Всего: 8



Код
use Win32::OLE;
use Win32::OLE::Enum;

$loc=Win32::OLE->new('WbemScripting.SWbemLocator');
$serv=$loc->ConnectServer('.','root\\cimv2');
$procs=$serv->ExecQuery(<<'.');
    SELECT
        *

    FROM
        Win32_Process

    WHERE
        (Name='perl.exe')
.

@ps=Win32::OLE::Enum->new($procs)->All;
$count=scalar @ps;

($VirtualSize, $ThreadCount, $KernelModeTime, $UserModeTime)=(0, 0, 0, 0);

%count=(
    HandleCount=>0,
    KernelModeTime=>0,
    OtherOperationCount=>0,
    OtherTransferCount=>0,
    PageFaults=>0,
    PageFileUsage=>0,
    PeakPageFileUsage=>0,
    PeakWorkingSetSize=>0,
    PrivatePageCount=>0,
    QuotaNonPagedPoolUsage=>0,
    QuotaPeakNonPagedPoolUsage=>0,
    QuotaPeakPagedPoolUsage=>0,
    ReadOperationCount=>0,
    ReadTransferCount=>0,
    UserModeTime=>0,
    ThreadCount=>0,
    VirtualSize=>0,
    WorkingSetSize=>0,
    WriteOperationCount=>0,
    WriteTransferCount=>0
);

@keys=split /[\r\n]+/os, <<'.';
CreationDate
Handle
HandleCount
KernelModeTime
MaximumWorkingSetSize
MinimumWorkingSetSize
OtherOperationCount
OtherTransferCount
PageFaults
PageFileUsage
ParentProcessId
PeakPageFileUsage
PeakVirtualSize
PeakWorkingSetSize
Priority
PrivatePageCount
ProcessId
QuotaNonPagedPoolUsage
QuotaPagedPoolUsage
QuotaPeakNonPagedPoolUsage
QuotaPeakPagedPoolUsage
ReadOperationCount
ReadTransferCount
ThreadCount
UserModeTime
VirtualSize
WindowsVersion
WorkingSetSize
WriteOperationCount
WriteTransferCount
.
ну и так далее...
Перечислены не все свойства. Все свойства процессов можно узнать здесь:
Код

            <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_process.asp" target="$http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_process.asp">Документация</a>

PM MAIL ICQ Skype   Вверх
Usya
Дата 24.2.2006, 05:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



tishaishii, все конечно хорошо.
С предложенным щас постараюсь разобраться, но есть ли что-либо универсальное, не зависящее от операционки?
Я имею ввиду винду и линухи/юнихи.
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
korob2001
Дата 24.2.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата(chaos @ 22.2.2006, 07:47 Найти цитируемый пост)

Код
   
system('reboot');
#или
system('poweroff');


Цитата(tishaishii @ 22.2.2006, 13:46 Найти цитируемый пост)

Код

`kill -9 $pid` until undef


smile Я плакал. ;)))

Это сообщение отредактировал(а) korob2001 - 24.2.2006, 10:13


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1062 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.