Страница 1 из 1
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-11 15:40:12
dekloper
есть такой трабл, который обычно, как правило, правится указанием полного путя..
Код: Выделить всё
pid=`/usr/bin/ssh -q -t root@srv "/bin/ps -U vbox | /usr/bin/grep 2k3" | /usr/bin/awk '{print $1}'`
/bin/echo vmpid $pid >> /root/vmpid.log
и всё же, если запускать кроном, то переменная пустая, если из консоли руками пустить - то всё как надо..
плз, подскажите как пофиксить

чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-11 15:44:29
f_andrey
Руками то поди csh, а то и bash какой нибудь, а шел sh? (как рабочая идея)
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-11 15:48:52
Neus
/bin/ps -Uww vbox
?
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-11 16:05:59
dekloper
f_andrey писал(а): Руками то поди csh, а то и bash какой нибудь, а шел sh? (как рабочая идея)
не, баша нету никакого - csh
чистым sh, тоже - руками все гут..
ну и первая строчка то не для красоты же:
Neus писал(а): /bin/ps -Uww vbox
а зачем оно мне, там и так как надо фильтруется всё..
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-15 21:49:28
Alex Keda
Код: Выделить всё
s01# crontab -l -u toor
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
# added by lissyara
@hourly /root/scripts/work/start.all.run.every.hour.sh
@daily /root/scripts/work/start.all.run.every.day.sh
*/2 * * * * /root/scripts/work/start.all.run.every.2.minutes.sh
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-15 22:48:15
dekloper
непонял..? дык у меня те строчки так же из скрипта в кронтабе запускаются, а в лог тока эхо без пида валится..
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-31 11:42:27
FenX
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-31 14:04:36
dekloper
FenX, ну, вобщем - да, в ковычках из крона заработало:
Код: Выделить всё
#!/bin/sh -
pid=`ssh -q -t root@srv "ps -wwU vbox | grep bsd64" | awk '{print $1}'`
/bin/echo "vmpid $pid" >> ~/scripts_tst/pid.log
а если ту же строчку добавить в скрипт с условием, то не хотит, по-прежнему..
Код: Выделить всё
#!/bin/sh -
#pid=`ssh -q -t root@srv "ps -U vbox | grep bsd64" | awk '{print $1}'`
pid=`/usr/bin/ssh -q -t root@srv "/bin/ps -U vbox | /usr/bin/grep bsd64" | /usr/bin/awk '{print $1}'`
FLAG=0
/sbin/ping -qc 1 192.168.2.95 > /dev/null 2>&1 || FLAG=1
if test ${FLAG} -eq 1 ; then
/bin/echo "vmpid $pid" >> ~/scripts/pid.log
/usr/bin/ssh root@srv "kill -9 ${pid}"
/bin/sleep 1
/usr/bin/ssh -n root@srv "/usr/bin/su -m vbox -c '/usr/local/bin/VBoxManage startvm bsd64 --type headless'" > /dev/null 2>&1
/bin/echo "vmpid $pid" | mail -s "Link error VM" odmin@odmin.ru
else
/bin/echo "vmpid $pid" >> ~/scripts/pid.log
fi
в чом разница то..?
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-31 14:16:38
FenX
тупанул маленько, вопрос: у тебя только на эхе затупы?
все остальное внутри ифа отрабатывает?
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-31 14:45:19
dekloper
остальное (kill) тоже неработает, ибо отсутствует предмет для убивания..
проверил мысль про разбивание строки: тот же результат..
Код: Выделить всё
#pid=`ssh -q -t root@vira "ps -U vbox | grep bsd64" | awk '{print $1}'`
#pid=`/usr/bin/ssh -q -t root@vira "/bin/ps -U vbox | /usr/bin/grep bsd64" | /usr/bin/awk '{print $1}'`
_bsd64=`/usr/bin/ssh -q -t root@vira "/bin/ps -U vbox | /usr/bin/grep bsd64"`
pid=`echo "${_bsd64}" | /usr/bin/awk '{print $1}'`
Отправлено спустя 2 минуты 55 секунд:
эхо - просто понять че происходит..
я думаю, if как то не так из-под крона отрабатывает..
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-03-31 16:49:36
FenX
воткни перед ифом
ну и так, мелочные правки, на будущее:
Код: Выделить всё
$ crontab -l
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/etc
HOME=/root
#min hour mday month wday command
10 00 * * * /usr/local/etc/host.d/zfs-snapshots.sh
01 01 * * * /usr/sbin/portsnap fetch update
это поможет избавиться в будущем от необходимости в скриптах указывать полный путь до бинарника
ну и возвращаясь к нашим баранам:
если флаг таки присваивается верно, то попробуй само условие в ифе поменять:
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-04-01 8:49:07
dekloper
FenX, с флагом все хорошо
воткнул эхо перед ифом, в ветке лживой, и в ветке истинной..
скобку тоже добавил..
результат в различных состояниях машины:
Код: Выделить всё
root@titan:~/scripts # cat pid.log
FLAG: 1
FLAG true: 1
vmpid
FLAG: 0
FLAG false: 0
vmpid

чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-04-01 10:58:19
FenX
опять же:
Код: Выделить всё
pid=`ssh -q -t root@srv "ps -U vbox | grep bsd64" | awk '{print $1}'`
echo "PID: ${FLAG}" >> ~/test.log
чойта я не догоню куда переменная деётся из под cron-а
Добавлено: 2015-04-01 13:10:07
dekloper
FenX, спасибо
короче, заработал костыль

вся беда была в.. волшебном баше, которому как оказалось, пофиг на всякие закрывающие скобки..