Страница 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
и всё же, если запускать кроном, то переменная пустая, если из консоли руками пустить - то всё как надо..
плз, подскажите как пофиксить :bn:

чойта я не догоню куда переменная деётся из под 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, тоже - руками все гут..
ну и первая строчка то не для красоты же:

Код: Выделить всё

#!/bin/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

Код: Выделить всё

/bin/echo "vmpid $pid"
попробуй так

чойта я не догоню куда переменная деётся из под 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
воткни перед ифом

Код: Выделить всё

/bin/echo "FLAG: ${FLAG}" >> ~/test.log
ну и так, мелочные правки, на будущее:

Код: Выделить всё

$ 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
это поможет избавиться в будущем от необходимости в скриптах указывать полный путь до бинарника :)

ну и возвращаясь к нашим баранам:
если флаг таки присваивается верно, то попробуй само условие в ифе поменять:

Код: Выделить всё

if [ ${FLAG} -eq 1 ];then
    ...
fi

чойта я не догоню куда переменная деётся из под 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, спасибо
короче, заработал костыль :)
вся беда была в.. волшебном баше, которому как оказалось, пофиг на всякие закрывающие скобки..