#1 22.07.09 13:10
[Freebsd] Скрипт не сразу грепуется из top
uname -a
FreeBSD 6.3-STABLE
Стоит сфинкс. Иногда что-то глючит и searchd, процесс сфинкса, падает. Что бы обеспечить маломальски стабильную работу поиска на время поиска "что-то глючит" написал на питоне скриптец
Код: python:
#! /usr/local/bin/python import os, commands is_search = commands.getoutput('top|grep searchd'); if is_search=='': indexer = '/usr/local/bin/indexer --config /home/sphinx/sphinx.conf --all'; searchd = '/usr/local/bin/searchd --config /home/sphinx/sphinx.conf'; os.system(indexer); #запустим идексатор os.system(searchd); #а затем процесс сфинкса else: print 'Sphinx on air!';
И поставил этот скрипт в крон на каждую минуту, но оказалось что после запуска searchd из скрипта он виден в top но top|grep searchd нихрена его не видит сразу, а только примерно после 20-30 секунд, что не критично но интересно от чего так получается. И может быть есть более лучшее решение этой проблемы на питоне?
Исправлено iDrum (22.07.09 13:11)
Offline
#2 22.07.09 13:38
Re: [Freebsd] Скрипт не сразу грепуется из top
Да, задачка как раз для питона. Заменить две строки на шелле целым питоновским скриптом - самое оно.
Чего уж там, надо было тогда сразу на C++ или Java писать.
Use ps instead of top.
Offline
#6 22.07.09 15:13
Re: [Freebsd] Скрипт не сразу грепуется из top
Jaguar написал(а):
pidof
сам такой
Код: python:
#! /usr/local/bin/python import os, commands, re command = 'pgrep searchd | wc -l'; is_search = commands.getoutput(command); digits = re.compile('[0-9]+').findall(is_search); result = digits[0]; if result=='0': indexer = '/usr/local/bin/indexer --config /home/sphinx/sphinx.conf --all'; searchd = '/usr/local/bin/searchd --config /home/sphinx/sphinx.conf'; os.system(indexer); os.system(searchd); else: print 'Sphinx on air!';
лол конешно, регулярки блин, но мляцкий wc -l выводит таб перед цифрой
Исправлено iDrum (22.07.09 15:13)
Offline
#10 23.07.09 09:45
#11 23.07.09 10:46
#12 23.07.09 10:48
#13 23.07.09 10:52
Re: [Freebsd] Скрипт не сразу грепуется из top
Jaguar написал(а):
Диман, я серьезно... pidof - это утила, которая возвращает PID процесса, если тот запущен... это намного удобнее и правильнее, чем пляски с грепом и вц
я почитал о ней, да удобней. но я против, то есть не против, а меня бесит когда в линухе что бы чёто заработало надо стопицот милионов пакетов сначала поставить только потому что разработичку удобней. Допустим этот скрипт можно (но не нужно:) ) выложить и его нужно только скачать и он будет работать "из коробки".
Offline
#14 23.07.09 12:04
#15 23.07.09 14:18
Re: [Freebsd] Скрипт не сразу грепуется из top
Если не ставить pidof, то:
pgrep searchd | wc -l|awk '{print $1}'
или
ps ax|grep searchd|grep -v grep -c
Offline
#16 23.07.09 14:24
Re: [Freebsd] Скрипт не сразу грепуется из top
iDrum написал(а):
меня бесит когда в линухе что бы чёто заработало надо стопицот милионов пакетов сначала поставить только потому что разработичку удобней.
1. у тебя бсд
2. питон тоже по-умолчанию не ставится
iDrum написал(а):
да ёмана, мне на питоне нада, не потому что шел быстрее
ты в любом случае используешь вывод сторонних утилит... сам скрипт у тебя может и на питоне, но основную работу у тебя делает как раз шел :)
Offline
#17 23.07.09 14:29
Re: [Freebsd] Скрипт не сразу грепуется из top
кстати... если хочешь на чистом питоне нечто подобное, тогда работай не с выводом каких-то утилит, а напрямую с виртуальной файлухой procfs... (правда после 5-ой версии она не является обязательной и тебе придется ее смонтировать, а может еще и перекомпилить ядро)
Исправлено Jaguar (23.07.09 14:31)
Offline
#18 23.07.09 14:32
#19 24.07.09 13:44
Re: [Freebsd] Скрипт не сразу грепуется из top
Макс, да я так, смотритель больше.
Редко темы интересные появляются, запал уже не тот.
Offline

