глюки крона в slackware

Автор sunjob, 22 ноября 2014, 19:45:34

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

sunjob

наблюдается "несоответствие" переменных окружения, по порядку

по идее, переменные оеружения (PATH,SHELL,TERM,MAILTO,HOME etc...) должны определятся в след. порядке:

- из окружения пользователя
- из окружения крона пользователя  (если определены в кроне)
- из окружения запущенного скрипта (если определены в скрипте)


во всяком случае при настройке крона в дебиане я не замечал какого либо "неудобства" или "несоответствия данным правилам"

данные правила "не где то вычитанные - а эмпирически выстраданные" :о)

в слакваре постоянно натыкаюсь на грабли

для отладки данной задачи - из крона запускаю скрипт "cron_test.sh", который выводит переменные в файл "cron_test.log"

ниже рассмотрены 3и случая и соотв. содержимое лог-файла


// крон   - переменные закоментированы
// скрипт - переменные закоментированы
SHELL  = /bin/sh
PATH   = /root/bin:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin
TERM   = xterm
MAILTO =.
HOME   = /home/usr



// крон   - переменные разкоментированы
// скрипт - переменные закоментированы
SHELL  = /bin/sh
PATH   = /root/bin:/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin
TERM   = xterm
MAILTO =.
HOME   = /home/usr



// крон   - разкоментированы
// скрипт - разкоментированы
SHELL  = /bash_user
PATH   = /PATH_USER
TERM   = term_user
MAILTO = mailto_user
HOME   = /home_user


итого :


первые два случая - "идентичные результаты" (косячные)
третий случай     - "самый правильный"

если переменные не определены ни в кроне ни в скрипте:
  PATH - root-овый

если переменные определены в кроне:
  переменные вообще не соот. определенным в кроне:

если переменные опеделены в скрипте:
  переменные "правильные"


т.е. "самый главные" - первые два случаю - косячные

(натыкался на это постоянно, когда хотел в крон-файле использовать команду_имя_скрипта, без полного пути, расчитывая на адекватное определение PATH)

проверено

- Sklackware 12.2 / 14.1 (глюки присутствуют)
- Debian 5.0.10 / 7.0.5  (правильное поведение)


выслушаю комментарии, можно ссылки, мысли, кто как с этим борется
я, конечно, понимаю, что форум дебиановский, но все же, возможно, кто то сталкивался с этим, как никак "одной яблони арбузы" ...
спасибо


...

содержимое файлов (крон и скрипт)


//
// /var/spool/cron/crontabs/usr
//

PATH=/PATH_CRON
SHELL=/bash_cron
TERM=term_cron
MAILTO=mailto_cron
HOME=/home_cron

<далее идут команды крона>



//
// cron_test.sh
//

#!/bin/sh

PATH=/PATH_USER
SHELL=/bash_user
TERM=term_user
MAILTO=mailto_user
HOME=/home_user

LOG=/home/usr/var/log/cron_test.log
echo "
SHELL  = ${SHELL}
PATH   = ${PATH}
TERM   = ${TERM}
MAILTO = ${MAILTO}
HOME   = ${HOME}
" >> $LOG


UPDATE 2014.11.23

согласно ману крон устанавливает 4е переменные окружения

USER, LOGNAME, HOME, and SHELL


на деле они берутся из пользовательского окружения
(в топике рассмотены только две из них, но и при детальном рассмотрении видно что они так же - берутся из пользовательского окружения и не из крона)

по сути, вообще ни одна переменная не устанавливается кроном,
переопределить переменные окружения можно ТОЛЬКО В СКРИПТЕ

проверить это можно так же добавить в кронтаб и скрипт эти переменные (что и было сделано) - и провести "тестовый замер"

...

если у вас все отлично работает, то, пожалуйста, выложите ваши скрипты, логи, подробне описание системы-осн.библиотек, патчей итд

...

по поводу

>> во всяком случае при настройке крона в дебиане я не замечал какого либо "неудобства" или "несоответствия данным правилам"
>> данные правила "не где то вычитанные - а эмпирически выстраданные" :о)

дебиан был указан как самый распространенный и естественно пользуемый (настраиваемый) в своем кругу
а правило поведение - обычное UNIX поведение крона, проверено на большом количестве дистрибьютивов, наверное более 15, и в частности, за последнее время проверено на след. настраиваемых системах:


linux-mint-16
altlinux-6.0.0
kali-linux 1.0.1
open suse 12.3
pclinux-2011.08
ubuntu-10.04
fedore-19


и ни где не было какого либо отклонения от правила, поэтому у меня не было даже намека на мысль что в !!! СЛАКЕ !!! будет сделано как то иначе (уж где-где, но не в слаке)

...

итого:
- глюк еще раз подтвердился
- если я что то неправильно понимаю, поправьте

...

UPDATE
тема исчерпана, спасибо!
спасибо