LINUX.ORG.RU
решено ФорумAdmin

Скрипт по cron работает не так, как вручную


0

1

Здравствуйте, лоровцы. Возникло у меня некоторое неудобство при запуске скрипта по cron.

Собственно, есть скрипт, который забирает состояния слейва с реплик и отправляет их куда надо по почте:

#!/bin/bash
tmp=/home/path/to/tmp
mail_f()
        {
        mail -a "MIME-Version: 1.0" -a "Content-Type: text/html" -s "replication status" $1 < $tmp
        }
echo "REPLICA 1" > $tmp
ssh user1@server1 -t "mysql --user=<user> -p<password> -e 'show slave status' base1" >> $tmp
echo "REPLICA 2" >> $tmp
ssh user1@server2 -t "mysql --user=<user> -p<password> -e 'show slave status' base2" >> $tmp
echo "REPLICA 3" >> $tmp
ssh user3@server3 -t "mysql --user=<user> -p<password> -e 'show slave status' base3" >> $tmp
mail_f 1@mail.r
mail_f 2@mail.r

Собственно если запускать скрипт руками то всё хорошо и на почте я вижу вывод вот в таком виде: (фрагмент)

REPLICA 1
+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+
| Last_Errno | Last_Error | Skip_Counter | Exec_Master_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos |
+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+
|          0 |            |            0 |           861746523 |       861746925 | None            |                |             0 |
+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+

Если же тот же скрипт запускать по cron, то вывод несколько преображается, и сработать с ним очень не удобно, и если учесть что полный вывод это огромная простыня, то смещения там адские получаются, выглядит примерно так: (фрагмент)

Last_Error	Skip_Counter	Exec_Master_Log_Pos	Relay_Log_Space	Until_Condition	Until_Log_File	Until_Log_Pos
0	0	468675363	471219125	None	0	No		0

Да, существенное различие между ручным запуском и cron, что у cron отсутствуют переменные окружения, но я их и не использую. Ни кто не сталкивался с подобным? Куда капать?

Ни кто не сталкивался с подобным?

Сталкивался, правда когда получал уведомления от исинги.
Заюзал mutt, всё заработало.

dada ★★★★★
()

Имхается мне, что надо добавить --table в ключи mysql, который «default for interactive use».

// У крона отсутствуют не только переменные окружения.

NightSpamer
()

Запускай под своим юзером, самое простое.

madcore ★★★★★
()

Может ssh и тип терминала, переменная $TERM.

lvi ★★★★
()

cat месиво_из_текста | column -t тебя спасут

zolden ★★★★★
()

благодарю NightSpamer наставил меня на путь истинный.

Проблема была действительно в отсутствии ключа --table. Видимо я не дочитал что по дефолту он только в непакетном режиме.

ZoltonMD
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.