Если у вас есть bc
, то вы можете заменить строку 13 на
if [ $(echo "$highest<$fourth" | bc) = 1 ];then
Не рекомендуется увеличивать глобальный лимит файловых дескрипторов, так как это может привести к сбою 32-битных программ, если они не знают, как использовать файловые дескрипторы > 255, см.:enable_extended_FILE_stdio(3C)
.
Поэтому может быть лучше просто вызвать базу данных оракула через сценарий оболочки, который сначала выполняет необходимые ulimit
вызовы для установки ограничений, а затем вызывает базу данных.
Позвольте мне показать типичный предельный набор Solaris, который можно получить с помощью Bourne Shell (, как в моем примере ). Обратите внимание, что использование ksh93
здесь бесполезно, так как ksh93 включает информацию из других ресурсов, которые нельзя установить. Это значение по умолчанию для Solaris :
LC_ALL=C ulimit -aSH
-t: time(seconds) unlimited:unlimited
-f: file(blocks) unlimited:unlimited
-d: data(kbytes) unlimited:unlimited
-s: stack(kbytes) 10240:unlimited
-c: coredump(blocks) unlimited:unlimited
-n: nofiles(descriptors) 256:65536
-v: memory(kbytes) unlimited:unlimited
Как видите, все значения по умолчанию выше требуемых, за исключением дескрипторов открытых файлов. Я не уверен, следует ли уменьшить жесткий предел стека.
Если вы хотите изменить значения, напишите сценарий оболочки и введите это:
ulimit -nS 1024
Это увеличивает ограничение на количество дескрипторов программных файлов до 1024 и приводит к новому ограничению:
-n: nofiles(descriptors) 1024:65536
Если вам нужно уменьшить ограничение жесткого стека, также введите:
ulimit -sH 32768
Это уменьшило ограничение жесткого стека до 32 МБ и привело к:
-s: stack(kbytes) 10240:32768
После этого введите команду для запуска базы данных оракула в скрипт, а затем запустите этот скрипт.