На самом деле проблема состояла в том, что это не сетевая файловая система. Операционная система не ожидает, что что-то еще изменит данные в разделе. Это также кэширует маленькие файлы, и это - физическое место на разделе, поэтому кажется, что это не изменяется вообще.
В случае, если размер раздела будет намного больше из размера RAM, и файлы будут достаточно огромны, он может привести, по крайней мере, к системной ошибке и умер точка монтирования или даже к панике ядра.
Таким образом, это все в порядке. Ничто странное. Я был просто немного нетерпелив в своих тестах и сделал поспешное заключение.
Крон, если я не ошибаюсь, значения по умолчанию к /bin/sh
. Проверить /etc/crontab/
для строки SHELL=
. Это, вероятно, установлено на /bin/sh
(dash
). Я полагаю, что можно установить SHELL=/bin/bash
в Вашем собственном пользователе crontab файл (тот, отредактированный crontab -e
). Или можно написать сценарий его.
Да, необходимо использовать sh
синтаксис. Можно найти спецификацию для портативного стандарта sh
синтаксис там.
В этом случае Вы хотите [ "$((i+=1))" -le 29 ]
, или если Ваш sh
основан на более старой версии ash
это еще не поддерживало полный набор стандартных арифметических операторов, использует [ "$i" -le 28 ] ...; i=$(($i + 1))
.
Предупреждение: обработка мирового записываемого каталога как /var/tmp
под кроном похож на открытие банки червя wrt безопасность.
Необходимо рассматривать имена файлов и их тип там как недоверяемые и чрезвычайно грязные.
Ваш $(/bin/ls -r /var/tmp/*)
в особенности является поддельным, поскольку это делает много предположений на том, какие символы имена файлов могут содержать и предполагают, что ни один из них не каталоги или символьные ссылки на каталоги.
[ "$((I+=1))" -le 28 ]
, крон жалуется: /bin/sh: 1: Bad substitution
– Martin Vegter
29.09.2013, 22:41
Для создания этого абсолютно портативным, можно заменить $ () синтаксис с:
I=1; for X in `/bin/ls -r /var/tmp/*`; do [ $I -le 28 ] && echo "lower" || echo "higher"; I=`expr $I + 1`; done
Но остерегайтесь заданий крона и мировых перезаписываемых каталогов.
SHELL=/bin/sh
в моем/etc/crontab
. Есть ли любая причина, почему я должен хотеть использовать/bin/sh
, вместо/bin/bash
? Я нахожусь на Debian, и системная оболочкаbash
. Итак, почему они сохранили быsh
для крона. AFAIK,bash
совместимо сsh
, но не наоборот. – Martin Vegter 30.09.2013, 10:38/bin/sh
AFAIK. Я думаю, что это - просто настройка по умолчанию. – AGHz 30.09.2013, 14:35