Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Выполнение команд mysql по расписанию. Как?  (Прочитано 4453 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн illia

  • Автор темы
  • Новичок
  • *
  • Сообщений: 43
    • Просмотр профиля
Приветствую! Делаю еженедельный бекап своих баз, сейчас появилась необходимость чистить их перед бекапом, подскажите пожалуйста как выполнить команды по типу USE bdname, ALTER IGNORE TABLE чз крон. Просто вставленные команды с новой строки в скрипте не работают естественно...

Оффлайн satch

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 1561
  • Kubuntu 15.10 amd64
    • Просмотр профиля
Наше желание помочь прямопропорционально вашему желанию решить проблему

Оффлайн drako

  • Старожил
  • *
  • Сообщений: 1422
    • Просмотр профиля
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #2 : 31 Января 2011, 00:19:35 »
mysql -e "набор команд через ;" ну и логин с паролем

Оффлайн goldskif

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • Альтернативные проекты
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #3 : 31 Января 2011, 01:11:59 »
Приветствую! Делаю еженедельный бекап своих баз, сейчас появилась необходимость чистить их перед бекапом, подскажите пожалуйста как выполнить команды по типу USE bdname, ALTER IGNORE TABLE чз крон. Просто вставленные команды с новой строки в скрипте не работают естественно...
Команды  написать в обычный php-скрипт, скрипт положить в корень и запускать кроном..
Ubuntu дружелюбная система, но друзей  она, сцуко, выбирает сама...

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #4 : 31 Января 2011, 07:52:05 »
а сеть тут при чем?

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #5 : 31 Января 2011, 17:42:03 »
а сеть тут при чем?
Вы решили поставить Ubuntu на сервер? ... Тогда этот раздел для вас!
На новом форуме это пофиксят... когда он будет...
Пока вроде не мешают никому такие темы.

Оффлайн goldskif

  • Активист
  • *
  • Сообщений: 525
    • Просмотр профиля
    • Альтернативные проекты
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #6 : 01 Февраля 2011, 01:47:41 »
а при чем здесь сеть.. Советы пригодятся даже тем, кто под убунтой XAMPP ковыряет..
Ubuntu дружелюбная система, но друзей  она, сцуко, выбирает сама...

Оффлайн coddex

  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • coddex.net
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #7 : 01 Февраля 2011, 10:22:47 »
Когда у меня стояла подобная задача - решал с помощью пхп скрипта который выполнялся в кроне, ибо очень легко можно было выводить логи об исполнении.
делаешь
# chmod +x test.php
в самом скрипте самое главное что бы не было лишних пробелов, отступов за пределами <? и ?> и надо указать путь до пхп:
#/usr/bin/php5
<?
.....script....
?>
проверяешь скрипт на запуск:
# php5 test.php
при первом запуске если нет дополнений для пхп, оно руганется и скажет что тебе надо доставить
потом
# crontab -e
пишешь там нечто типа
* */12 * * * php5 /home/user/test.php
все, готово
« Последнее редактирование: 01 Февраля 2011, 10:24:43 от coddex »

Оффлайн drako

  • Старожил
  • *
  • Сообщений: 1422
    • Просмотр профиля
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #8 : 01 Февраля 2011, 10:27:13 »
Когда у меня стояла подобная задача - решал с помощью пхп скрипта который выполнялся в кроне, ибо очень легко можно было выводить логи об исполнении.
делаешь
# chmod +x test.php
в самом скрипте самое главное что бы не было лишних пробелов, отступов за пределами <? и ?> и надо указать путь до пхп:
#/usr/bin/php5
<?
.....script....
?>
проверяешь скрипт на запуск:
# php5 test.php
при первом запуске если нет дополнений для пхп, оно руганется и скажет что тебе надо доставить
потом
# crontab -e
пишешь там нечто типа
* */12 * * * php5 /home/user/test.php
все, готово

Глупый вопрос, зачем вы делаете файл исполняемый, если запускаете его интерпритатором?

Оффлайн coddex

  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • coddex.net
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #9 : 01 Февраля 2011, 10:50:52 »
Если честно, вспомнить не могу, но это у меня пошло с  6 убунты, там какой то глюк был насчет исполняемости или интерпретатора, с тех времен и пошла такая привычка и такой порядок действий, так сказать проверенно то что оно точно будет работать без глюков. а счас просто идет у меня по шаблону. надо проверять что да как работает в 10 и без лишних действий, но - лень :)

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #10 : 01 Февраля 2011, 13:12:27 »
потому что shebang прописывается как
#! /usr/bin/php5

но ни как не
#/usr/bin/php5 - это тупо комментарий в большинстве случаев.
« Последнее редактирование: 01 Февраля 2011, 13:14:27 от censor »

Оффлайн coddex

  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • coddex.net
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #11 : 01 Февраля 2011, 22:09:54 »
т.е. именно там пробел надо поставить?
или же пробел необязателен?

p.s.: а я кажется, на сколько помню, делал без пробела, сейчас глянуть ничего не могу - все скрипты на работе

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #12 : 01 Февраля 2011, 22:16:41 »
как раз таки пробел менее критичен чем то чего Вы не заметили.

Оффлайн coddex

  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • coddex.net
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #13 : 04 Февраля 2011, 16:12:46 »
кажется вспомнил, почему запускаю с помощью интерпретатора:
я не смог победить проблему с помощью редактора nano, когда скрипт пытаюсь выполнить сам по себе, выдает такую ошибку:
/usr/bin/php5^M: bad interpreter: No such file or directoryт.е. лишний символ там в конце строки получается, когда редактируешь с помощью nano...

Оффлайн coddex

  • Любитель
  • *
  • Сообщений: 77
    • Просмотр профиля
    • coddex.net
Re: Выполнение команд mysql по расписанию. Как?
« Ответ #14 : 07 Февраля 2011, 15:20:47 »
в очередной раз задался этим вопросом ... нашел решение....
в убунте, если файл сразу с нуля создаешь с помощью nano, то все ок, а если файл был закачан через фтп в виде текста - то тут уже происходит косяк, так как он закачивается в формате ascii, что криво обрабатывается..
нашел где то если в бинарном виде закачивать, то все будет нормально, но я это не проверял.

взято с http://phpclub.ru/talk/threads/%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-cron.30139/
Цитировать
Есть два пути запуска пхпшного файла через cron:
1) В кроне нужно указывать полный путь к php интерпретатору (по умолчанию это /usr/local/bin/php или это зависит от операционной системы и как сконфигурирован php в ней) + имя запускаемого файла + вывод в файл (необязательно). Пример:
* 1 * * * /usr/local/bin/php /www/mysite/www/htdocs/tet/test.php >> /www/mysite/www/htdocs/tet/cron.log

2) Можно в кроне указать только файл:
* 1 * * * /www/mysite/www/htdocs/tet/test.php >> /www/mysite/www/htdocs/tet/cron.log
Но тогда накладываются такие ограничения, файл test.php должен быть исполняемым (+x) и в начале этого файла должен быть путь к интерпретатору, в нашем случае это /usr/local/bin/php, т.е.
полная строка такая "#!/usr/local/bin/php"
как написал Anton. Обрати внимание, что если в конце будет стоять виндовый перевод строки, выдастся ошибка:
"file not found" или если запустить его вручную: "bad interpreter: No such file or directory"

Конечено же предварительно надо запустить файл вручную (из командной строки), чтобы проверить а работает ли он вообще.
Тестовый пример мог и не работать при неправильной настройке php или проблемы с почтовым сервисом в ОС, как показал опыт, функция mail даже при неудачной попытке отправки почты возвращает TRUE

Самый простой пример, сделай скрипт с выводом echo("Cron started " . date("Y/m/d H:i:s") . "\n")
а в крон запиши как я указал выше.
После запуска cron, cron.log будет каждый раз пополняться, кстати права на запись в папку tet должны стоять у того пользователя, под которым создан cron

Иногда бывает заблуждение у многих пользователей, если apache запущен под пользователем www, то и все что делается в php над файловой системой, также с правами www,
крон же обычно запускается под другим пользователем (допустим ваша учетная запись у провайдера)

Иногда это приводит к некоторым конфликтам на доступ к файлу, когда скрипт одновременно испльзуется и через Web и через Cron


« Последнее редактирование: 07 Февраля 2011, 15:35:30 от coddex »

 

Страница сгенерирована за 0.031 секунд. Запросов: 25.