Для вступления в общество новичков и профессионалов домен-индустрии, пожалуйста нажмите здесь ...

   
 Купля-продажа и обсуждение доменных имён
        

  
Вернуться   Форум о доменах > Дизайн и развитие проектов > Программирование
Регистрация Реноме Правила форума Справка Пользователи Социальные группы Все разделы прочитаны
Программирование PHP, Perl, HTML, XHTML, CSS, JavaScript, MySQL и другие языки кодирования.

Ответ
 
Опции темы
Сегодня
от 149р за .RU
Аренда сервера
2x Intel Hexa-Core Xeon E5-2420
Всего 79 евро!

с видеокартой GeForce GTX 1080 Ti
всего 99 евро!

от 149р за .РФ Реклама на DomenForum.net
Старый 30.09.2011, 15:24   #1
 
Аватар для solon
 
Регистрация: 18.01.2006
Адрес: Самара
Сообщений: 117
Доменные сделки: 0
Реноме: 116
Одобрения
Спасибо (Отдано): 0
Спасибо (Получено): 11
Отправить сообщение для solon с помощью ICQ
cron linux и нет мыслей

имеем
user под собой запускает .sh скрипт каждые 20 минут.
крон это съедает и работает.

но вот проблема: если этот скрипт не завершится и зависнет то крон запустит его еще раз и еще и т.д пока эти процессы не наплодятся и не начнут валить сервак.

задача с помощью крона завершать его работу и запускать снова.

реально?
куда копнуть в этом направлении?
solon вне форума   Ответить с цитированием
Старый 30.09.2011, 18:05   #2
 
Аватар для Шуранов
 
Регистрация: 07.08.2006
Сообщений: 699
Доменные сделки: 1
Реноме: 5036
Одобрения
Спасибо (Отдано): 18
Спасибо (Получено): 19
Отправить сообщение для Шуранов с помощью ICQ
PID, при старте создавайте PID файл. Если kill 0 PID, то процесс еще работает, не стартуем новый.

добавлено через 1 минуту
Вот вам пример на Perl.

Код:
sub writePID {
    my ($self, $file) = @_;
    return unless defined $self->{PID};
        if(-e $file) {
                my $fh = IO::File->new($file) || return;
                my $pid = <$fh>;
                die "Error: daemon already work\n" if kill 0 => $pid;
                warn "Unlink old PID file\n";
                die "Error: unable to remove file $file\n" unless -w $file && unlink $file;
        }

    my $hFile = IO::File->new($file, O_WRONLY|O_CREAT|O_EXCL,0644) or die "Unable to create $file: $!\n";
    print $hFile $self->{PID};
    $hFile->close;
}

Последний раз редактировалось Шуранов; 30.09.2011 в 18:07. Причина: Добавлено сообщение
Шуранов вне форума   Ответить с цитированием
Старый 30.09.2011, 18:22   #3
Заблокирован
Мультиаккаунт. Нарушение правил форума п. 3.5.
 
Регистрация: 14.09.2009
Адрес: From Ukraine
Сообщений: 282
Доменные сделки: 1
Реноме: 1200
Одобрения
Спасибо (Отдано): 16
Спасибо (Получено): 46
Отправить сообщение для Dэн:) с помощью ICQ
Точно в точку. Шуранов, как всегда, молодец

Добавлю, только, что еще обязательно нужно принудительно удалять процесс, если он не завершился пред следующим запуском скрипта. Т.е. читаем PID с файла или БД и если при запуске скрипта он не завершен - завершаем. Иначе, в случаи зависания, пользователь, как и крон, не смогут вообще запустить скрипт.
Dэн:) вне форума   Ответить с цитированием
Ответ



Реклама

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Закладки Добавить Тема в закладки

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:47. Часовой пояс GMT +4.