Модераторы: 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   Вверх
Usya
Дата 25.2.2006, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Есть и более простые способы.
Например, просто выключить питание и всеееееее!!!

Есть какие-нибудь дельные советы smile
--------------------
Я не волшебник, я только учусь...
PM MAIL   Вверх
nitr
Дата 25.2.2006, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

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



Думаю можно с помощью "сигналов" сделать... читай perlsec


--------------------
PM   Вверх
zedik38
Дата 1.4.2012, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



хочу получить pid запущенного процесса, на bash получается так:
Код

ps afx | awk '/myprog/ {print $1}'


при использовании
Код

$pid=`ps afx | awk '/myprog/ {print $1}'`; 

пишет всю строку,а не только pid процесса.
помогите результат данного фрагмента закинуть в переменную на perl ?

Это сообщение отредактировал(а) zedik38 - 1.4.2012, 20:41
PM MAIL WWW   Вверх
arto
Дата 2.4.2012, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



\$1
PM MAIL ICQ   Вверх
FishHunter
Дата 4.4.2012, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



блин ... некроманты smile


Это сообщение отредактировал(а) FishHunter - 4.4.2012, 20:39
PM MAIL   Вверх
od0201
Дата 5.4.2012, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



если у вас нет прав, то и "вечно" он не сможет,  мне хостер 30 сек дает
отвечу, как понял вопрос , если веб

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

print qq~<script language='Javascript'> setTimeout("location.href='index.cgi'",2000);<\/script>~;


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

Остановить, 4 варианта
- кнопочка "стоп в браузере" (мой выбор)
- ориентируемся на 0 или 1 в переменной, и решаем продолжать или нет
- ориентируемся на 0 или 1 в файле флаг.тхт, и решаем продолжать или нет
- ориентируемся на 0 или 1 в куках и решаем продолжать или нет (глупо, но реализовать можно)
0 или 1 выставляем кнопочкой в форме запуская при этом этот же скрипт (в З.Ы. описана проблема проблема прорисовки кнопочки)

для отображения статистики/хода работы
Код

print "<div id='proc'>run.....</div>    <script> function Run(i)  {document.getElementById('proc').innerHTML = i;    }    </SCRIPT>    
for $i(0..$#урл){
  print "<script> Run('performed ". int ((100/($#урл+1))*($i+1)) ." \% - ".$урл[$i]."')</SCRIPT> ";
 # код по данному урлу
}


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


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

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


 




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


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

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