URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 62079
[ Назад ]

Исходное сообщение
"cron, bash непонятки."

Отправлено ZXVF , 23-Ноя-05 17:58 
Есть такой скриптик:

#!/bin/bash
#
DIR=/home/oleh
FILE=mailbox.PAB
cp $DIR/$FILE /etc/skel
chown root.root /etc/skel/$FILE
chmod 0640 /etc/skel/$FILE
for loop in `ls -l /home | awk '{if($4 ~/users/) print $8}' | grep [a-z]`
do
cp -v -f $DIR/$FILE /home/$loop
chown $loop.users /home/$loop/$FILE
chmod 0640 /home/$loop/$FILE
    done
        echo "Address book updated" | mail root

Проблема - из командной строки под root - работает.
Запускаешь через cron отрабатывает всё кроме цикла.

OS  - Slackware 10.2

Помогите плз., где грабли ?


Содержание

Сообщения в этом обсуждении
"cron, bash непонятки."
Отправлено Provokator , 23-Ноя-05 18:11 
#minute hour    mday    month   wday    who     command
#
*/5     *       *       *       *       root    /usr/libexec/atrun


Под рутом его запускай


"cron, bash непонятки."
Отправлено ZXVF , 23-Ноя-05 18:38 
Спасибо за ответ.

Из крона запускал под root.

Попробовал предложенный способ - та же фигня.

>#minute hour    mday    month  
>wday    who     command
>#
>*/5     *      
>*       *    
>   *       root
>   /usr/libexec/atrun
>
>
>Под рутом его запускай



"cron, bash непонятки."
Отправлено allez , 24-Ноя-05 07:23 
>Спасибо за ответ.
>
>Из крона запускал под root.
>
>Попробовал предложенный способ - та же фигня.


Укажите в скрипте полные имена к командам ("/bin/awk" вместо "awk" и т. д.)
или определите в нем переменную PATH. Скрипт, скорее всего, просто не
находит эти самые команды.


"cron, bash непонятки."
Отправлено Дениска , 24-Ноя-05 08:49 
а если попробовать прописать полный путь к прогам, например к awk

"cron, bash непонятки."
Отправлено allez , 24-Ноя-05 09:34 
>а если попробовать прописать полный путь к прогам, например к awk


Дениска, вы просто читаете мои мысли. Только как-то медленно :-D


"cron, bash непонятки."
Отправлено ZXVF , 24-Ноя-05 11:54 
>>а если попробовать прописать полный путь к прогам, например к awk
>
>
>Дениска, вы просто читаете мои мысли. Только как-то медленно :-D


Спасибо всем за ответы.

Сдалал как написано - НЕ работает.

Другие скрипты отрабатывают нормально.


"cron, bash непонятки."
Отправлено allez , 24-Ноя-05 13:16 
>Спасибо всем за ответы.
>
>Сдалал как написано - НЕ работает.
>
>Другие скрипты отрабатывают нормально.


Посмотрите почту root (cron по умолчанию отправляет stdout и stderr
владельцу задания) и логи cron. Можете их и тут показать, глядишь, и
раскумекаем.


"cron, bash непонятки."
Отправлено ZXVF , 24-Ноя-05 14:40 
/var/log/cron - пусто.
/var/log/messages - ничего от Cron
/var/log/syslog  - ничего от Cron

В почте рута (stdout и stderr от Cron) - тоже нечего.


>>Спасибо всем за ответы.
>>
>>Сдалал как написано - НЕ работает.
>>
>>Другие скрипты отрабатывают нормально.
>
>
>Посмотрите почту root (cron по умолчанию отправляет stdout и stderr
>владельцу задания) и логи cron. Можете их и тут показать, глядишь, и
>
>раскумекаем.



"cron, bash непонятки."
Отправлено lynx , 24-Ноя-05 15:02 
#!/bin/bash
#
DIR=/home/oleh
FILE=mailbox.PAB
cp $DIR/$FILE /etc/skel
chown root.root /etc/skel/$FILE
chmod 0640 /etc/skel/$FILE
for loop in `ls -l /home | awk '{if($4 ~/users/) print $8}' | grep [a-z]`
do
cp -v -f $DIR/$FILE /home/$loop
chown $loop.users /home/$loop/$FILE
chmod 0640 /home/$loop/$FILE
    done
        echo "Address book updated" | mail root


попробуйте подебагить :)
например перед
for loop in...
сделать
set>/tmp/debug1
echo `ls -l /home | awk '{if($4 ~/users/) print $8}'`>/tmp/debug2

после
do
и перед
cp -v -f $DIR...
echo "loop=$loop">/tmp/debug3

....


"cron, bash непонятки."
Отправлено lynx , 24-Ноя-05 15:05 
>попробуйте подебагить :)
>например перед
>for loop in...
>сделать
>set>/tmp/debug1
>echo `ls -l /home | awk '{if($4 ~/users/) print $8}'`>/tmp/debug2
>
>после
>do
>и перед
>cp -v -f $DIR...
>echo "loop=$loop">/tmp/debug3
>
>....

пардон,
echo "loop=$loop">/tmp/debug3
аменить на
echo "loop=$loop">>/tmp/debug3

:)))


"cron, bash непонятки."
Отправлено ZXVF , 24-Ноя-05 15:56 
Спасибо за совет !

Проблема разрулилась.

Кому интересно - ответ здесь:

http://www.linux.org.ru/view-message.jsp?msgid=1167473&back=...


>>попробуйте подебагить :)
>>например перед
>>for loop in...
>>сделать
>>set>/tmp/debug1
>>echo `ls -l /home | awk '{if($4 ~/users/) print $8}'`>/tmp/debug2
>>
>>после
>>do
>>и перед
>>cp -v -f $DIR...
>>echo "loop=$loop">/tmp/debug3
>>
>>....
>
>пардон,
>echo "loop=$loop">/tmp/debug3
>аменить на
>echo "loop=$loop">>/tmp/debug3
>
>:)))