|
Программирование PHP, Perl, HTML, XHTML, CSS, JavaScript, MySQL и другие языки кодирования. |
|
Опции темы |
Сегодня | |||||
|
30.09.2011, 15:24 | #1 | |||
Реноме:
116
|
cron linux и нет мыслей
имеем
user под собой запускает .sh скрипт каждые 20 минут. крон это съедает и работает. но вот проблема: если этот скрипт не завершится и зависнет то крон запустит его еще раз и еще и т.д пока эти процессы не наплодятся и не начнут валить сервак. задача с помощью крона завершать его работу и запускать снова. реально? куда копнуть в этом направлении? |
|||
30.09.2011, 18:05 | #2 | |||
Реноме:
5037
|
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. Реноме:
1201
|
Точно в точку. Шуранов, как всегда, молодец
Добавлю, только, что еще обязательно нужно принудительно удалять процесс, если он не завершился пред следующим запуском скрипта. Т.е. читаем PID с файла или БД и если при запуске скрипта он не завершен - завершаем. Иначе, в случаи зависания, пользователь, как и крон, не смогут вообще запустить скрипт. |
|||
Реклама | |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | |
|
|