Проблема со скриптом в bash

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Argus
проходил мимо
Сообщения: 1
Зарегистрирован: 2018-01-17 15:47:12

Проблема со скриптом в bash

Непрочитанное сообщение Argus » 2018-01-17 15:50:03

Привет всем.
Есть простенький скрипт на bash:

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

#!/usr/local/bin/bash

list=(`/usr/local/sbin/sasldblistusers2 -f /var/spool/postfix/usr/local/etc/sasldb2 | awk -F\@ '{print $1}'| grep -v -x "admin" | sort `)

rm /tmp/quota_test
touch /tmp/quota_test

rm /tmp/quota_list
touch /tmp/quota_list

for (( i=0; i<${#list[@]}; i++ )) do
Q=`echo "lqm user/"${list[i]} | /usr/local/bin/cyradm -u admin --password PassworD localhost`
echo ${list[i]} >> /tmp/quota_list
echo $Q >> /tmp/quota_test
done
При запуске скрипта вручную - все ОК. Отрабатывает как надо.
Но если запускать этот скрипт через cron - в SDTERR вываливаются 2 ошибки:

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

exec: perl: not found
exec: perl: not found
Могу сказать точно, что не выполняется команда присвоения значения переменной Q:

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

Q=`echo "lqm user/"${list[i]} | /usr/local/bin/cyradm -u admin --password PassworD localhost`
Такое ощущение что при запуске из cron он не может найти путь к perl. Хотя причем здесь Perl?


Причем на другой почти такой же системе все ОК.

Что делать подскажите плиз.

----------------
Система: FreeBSD 11.1-STABLE
Строка запуска из crontab:

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

*/5     *       *       *       *       root    /usr/local/etc/postfix/script/quota_test.sh 2> /tmp/quota_err

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

FiL
ст. лейтенант
Сообщения: 1374
Зарегистрирован: 2010-02-05 0:21:40

Проблема со скриптом в bash

Непрочитанное сообщение FiL » 2018-01-23 0:26:44

perl при том, что его использует cyradm

пропишите PATH в crontab.

Аватара пользователя
QweЯty
лейтенант
Сообщения: 796
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

Проблема со скриптом в bash

Непрочитанное сообщение QweЯty » 2019-04-21 0:18:20

Подскажите, как передать директорию запуска в переменную??

есть N штук однообразных директорий dirs_1 dirs_2 dirs_n-1 dirs_n
в них скрипты тоже имеют однообразное название run.sh
при скрипте, который их попеременно вызывает:

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

#!/usr/local/bin/bash

START='1'
END='37'


for i in $(seq ${START} ${END})
do

/usr/local/bin/bash /dirs_$i/run.sh

done
при запуске этого скрипта, скриптам run.sh передается папка запуска не dirs_n, а откуда запущен общий скрипт... как можно поменять эту переменную? чтобы скрипты отрабатывали корректно относительно своей директории
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение

Аватара пользователя
QweЯty
лейтенант
Сообщения: 796
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

Проблема со скриптом в bash

Непрочитанное сообщение QweЯty » 2019-04-21 17:25:27

изменить\удалить не дает....
решил проблему, просто cd dirs_$i а потом запуск скрипта:

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

for i in $(seq ${START} ${END})
do
cd dirs_$i
/usr/local/bin/bash /dirs_$i/run.sh
cd ..
done
все работает все довольны
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение