Здравствуйте. Подскажите пожалуста. Как при помощи cgi-скрипта:
1 -> проверить запущен ли mysqld (т.е. работает ли команда mysqld start) если нет то запустить
2 -> проверить существует ли лог файл БД журналов. Если нет, то выполнить команду mysqld --log=file.log
3 -> возможно ли заставить perl чтоб он выполнил php-скрипт.
Если нет как узнать информацию при помощи perl о изменениях файла. (дата изменения, размер)
Смысл в следующем. Нужно получить журнал событий Базы данных. Хорошобы получить журнал событий конкретной БД. При этом cgi-скрипт должен произвести поиск нахождения файлов.
Я вот что нашел: Для запуска командной строки придется использовать функцию system() при этом нужно написать полный путь к файлу. Так как сервер не мой, я его не знаю.
И еще не надо писать что то типа обратись к провайдеру, он даст тебе лог.
Я прекрасно понимаю что это будет опасный скрипт. Поэтому обязательно создам контроль над его исполнением.
1. victor - 12 Октября, 2008 - 23:51:45 - перейти к сообщению
2. Furax - 13 Октября, 2008 - 01:57:02 - перейти к сообщению
По третьему вопросу глянь здесь.
3. Леголегс - 13 Октября, 2008 - 07:00:17 - перейти к сообщению
1.
Возвращает 0 если сервис запущен. Команда /sbin/service есть в ОС, произошедших от Red Hat Linux и отсутствует, ЕМНИП, в Debian и во FreeBSD. Можешь также попробовать
Если данные команды не воспринимают параметр "status" или вообще недоступны для твоего пользователя, то можно ковыряться в таблице процессов:
Опять же, возвращаемый 0 означает, то мускул работает.
Не понятно, как без прав root ты собираешься запускать сервер, но тебе поможет
2. Не поняло чём идёт речь. У mysqld вроде нет параметра --log, только --log-error
3. Можно.
CODE:
/sbin/service mysqld status
Возвращает 0 если сервис запущен. Команда /sbin/service есть в ОС, произошедших от Red Hat Linux и отсутствует, ЕМНИП, в Debian и во FreeBSD. Можешь также попробовать
CODE:
/etc/init.d/mysqld status
/etc/rc.d/init.d/mysqld status
/etc/rc.d/init.d/mysqld status
Если данные команды не воспринимают параметр "status" или вообще недоступны для твоего пользователя, то можно ковыряться в таблице процессов:
CODE:
ps -A | grep mysqld
Опять же, возвращаемый 0 означает, то мускул работает.
Не понятно, как без прав root ты собираешься запускать сервер, но тебе поможет
CODE:
и производные (см выше)./sbin/service mysqld start
2. Не поняло чём идёт речь. У mysqld вроде нет параметра --log, только --log-error
3. Можно.
CODE:
system("php file.php")
Цитата:
locate и find тебе в помощь. Надеюсь, тебя есть шелл на этом сервере? Если нет, придётся пускать команды через system().
нужно написать полный путь к файлу. Так как сервер не мой, я его не знаю.нужно написать полный путь к файлу. Так как сервер не мой, я его не знаю.
4. victor - 13 Октября, 2008 - 08:26:22 - перейти к сообщению
Спасибо за коды, попробую.
Леголегс команда --log-error собирает журнал ошибок БД
А команда --log собирает все что происходит в БД Тоесть полный журнал событий.
Также есть возможность собирать только изменения для этого запускают команду --log update кажется. И еще один есть параметр для лог.
И еще тогда один вопрос который я не предусмотрел. Если mysqld запущен, то нужно проверить существует ли файл log. Если да, то получить к нему путь.
Леголегс команда --log-error собирает журнал ошибок БД
А команда --log собирает все что происходит в БД Тоесть полный журнал событий.
Также есть возможность собирать только изменения для этого запускают команду --log update кажется. И еще один есть параметр для лог.
И еще тогда один вопрос который я не предусмотрел. Если mysqld запущен, то нужно проверить существует ли файл log. Если да, то получить к нему путь.
5. Леголегс - 13 Октября, 2008 - 10:16:43 - перейти к сообщению
Команда
(обратные кавычки и знак равенства в конце не являются опечатками)
напечатает тебе командную строку, которой был запущен mysqld. Как выцепить имя файла лога - думай сам. Советую регэкспы.
CODE:
ps -p `/sbin/pidof mysqld` -o cmd=
(обратные кавычки и знак равенства в конце не являются опечатками)
напечатает тебе командную строку, которой был запущен mysqld. Как выцепить имя файла лога - думай сам. Советую регэкспы.
6. victor - 20 Октября, 2008 - 07:15:28 - перейти к сообщению
Леголегс , я попробовал запустить на исполнение команды
system("php file.php"
ПЕРЛ мне выдал ошибку, что ПХП не является внутренней или внешней командой и т.д.
Тоесть он незапустил данный скрипт на исполнение.
Скрипт для проверки я сделал простой. команда print.
Может еще надо какуюто команду выполнить при этом?
system("php file.php"
ПЕРЛ мне выдал ошибку, что ПХП не является внутренней или внешней командой и т.д.
Тоесть он незапустил данный скрипт на исполнение.
Скрипт для проверки я сделал простой. команда print.
Может еще надо какуюто команду выполнить при этом?
7. Леголегс - 22 Октября, 2008 - 04:35:08 - перейти к сообщению
victor пишет:
Опять сервер на винде. Эпидемия прямо. Телепат я вам чтоли, угадывать операционки? Под досом ещё поднимите хостинг...ПЕРЛ мне выдал ошибку, что ПХП не является внутренней или внешней командой и т.д.
Раз windows, то все приведённые мной команды работать не будут, и аналоги будет не просто найти.
А для запуска php в виндоуз надо полностью указывать путь. цэ програм файлз и так далее до экзешника.