Согласно FHS /srv
предназначен для данных конкретного сайта, а не для программных пакетов (и в этом отношении является просто более новой альтернативой /var
)
/srv содержит данные конкретного сайта, которые обслуживаются этой системой
однако если вы запускаете веб-приложение Django с (скажем) Apache, ваш webapp может быть классифицирован как data для него, поэтому он должен идти в /srv/
(точно так же, как вы развернули бы его в /var/www
на более старой системе).
И FHS четко намекает на это:
записываемые данные и скрипты (такие как cgi скрипты) могут быть разумно размещены
Похоже, что ksh делает что-то другое с арифметическим расширением; чтобы обойти это, я бы явно использовал арифметическую подстановку, которая ведет себя должным образом как в AIX 6, так и в AIX 7:
...
if [[ ( $((f_count * sleep_interval % alarm_interval)) -eq 0 ) && $f_count -gt 0 ]]
...
Похоже, вы нашли ошибку в ksh93.
Я могу воспроизвести это (ksh93u +) с помощью:
$ x= ksh -c '[[ 0*1 -eq 5 ]]'
ksh: *1: arithmetic syntax error
Но все в порядке с:
ksh -c '[[ " 0*1" -eq 5 ]]'
. И похоже, что это было исправлено в ksh93v-
(beta), так как я не могу воспроизвести это там.
В любом случае, я бы использовал:
if ((f_count * sleep_interval % alarm_interval == 0 && f_count > 0)); then
Несколько примечаний:
[[...]]
, >
для сравнения строк (где 10
меньше 2 и в зависимости от языкового стандарта -1
может быть больше 0). Используйте -gt
для численного сравнения (хотя лучше использовать ((...))
). избегайте расширения переменных внутри арифметических выражений, например, используйте x
вместо $ x
. Например, сравните:
$ x = -1 ksh -c '((- $ x> 0))'
ksh: --1> 0: для присвоения требуется lvalue
с
$ x = -1 ksh -c '((-x> 0))'
$
Или:
$ x = 1 + 1 ksh - c 'echo "$ (($ x * 2)) $ ((x * 2))"'
3 4