Проверил, согласен. В момент исполнения shell-скриптов по cron'у установлены лишь переменные, указанные в crontab. Проверял так:
1. Создаю файлик:
Code:
$ cat /tmp/harddisk/getenvvars.sh
#!/bin/sh
set > /tmp/harddisk/env.txt
2. Создаю соответствующее задание в crontab:
Code:
$ cat /opt/etc/crontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
#min hr dayOfM month dayOfW command
*/1 * * * * root /tmp/harddisk/getenvvars.sh
...
3. Перегружаю роутер для того, чтобы cron стартовал от /sbin/init, а не из моей shell-среды. Смотрю в syslog:
Code:
Apr 17 21:55:01 cron[769]: (root) CMD (/opt/etc/cron.1min/getenvvars.sh^I)
4. Вижу, что переменные среды в момент исполнения скрипта были следующие:
Code:
$ cat /tmp/harddisk/env.txt
HOME='/'
IFS='
'
LOGNAME='root'
MAILTO=''
PATH='/sbin:/bin:/usr/sbin:/usr/bin:/opt/bin:/opt/sbin'
PPID='773'
PS1='\w \$ '
PS2='> '
PS4='+ '
PWD='/'
RUNDIR='/tmp/harddisk/*'
SHELL='/bin/sh'
USER='root'
i='/tmp/harddisk/getenvvars.sh'
Я хотел отметить следующий момент. Выше приведён вариант отработки скрипта средствами cron из optware. Если попытаться использовать crond из прошивки, то при отработке скрипта в логе появляется строка:
Code:
Apr 17 21:47:01 crond[554]: crond: USER root pid 782 cmd god /tmp/harddisk/getenvvars.sh
но скрипт не выполняется, причём в процессах намертво повисает
Code:
$ ps afx
PID TTY STAT TIME COMMAND
...
554 ? Ss 0:00 crond -b -S -c /var/spool/cron/crontabs
766 ? Z 0:00 \_ [sh] <defunct>
765 ? Z 0:00 \_ [sh] <defunct>
Ч.д?