Здравствуйте, лоровцы. Возникло у меня некоторое неудобство при запуске скрипта по 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 отсутствуют переменные окружения, но я их и не использую. Ни кто не сталкивался с подобным? Куда капать?