На Солярисе можно установить этот параметр, чтобы быть жестким или мягким пределом в масштабе всей системы, ИЛИ можно сделать то же для определенного приложения так, чтобы это имело корректное количество открытых дескрипторов файлов в его пространстве во время выполнения.
Сделать это изменением в масштабе всей системы, редактированием /etc/system
со следующими записями
# Hard limit on file descriptors for single process
set rlim_fd_max = 4096
# Soft limit on the file descriptors for a single process
set rlim_fd_cur = 1024
Примечание: без установки rlim_fd_max
как показано выше, значение по умолчанию для дескрипторов файлов или nofiles половина rlim_fd_cur
значение. Так, лучше устанавливать их обоих.
При использовании проекта Соляриса для пространства приложения как База данных Oracle можно установить макс. дескрипторы файлов в проекте:
projadd -U oracle -K “process.max-file-descriptor=(priv,4096,deny)” user.oracle
Кроме того, можно установить его использование ulimit
непосредственно в оболочке владельца приложения запускают файл. Например, возможно установить макс. дескрипторы файлов путем установки ulimit
в .profile
из владельца веб-сервера к ulimit -s 32768
и вызов этого из сценария запуска/завершения работы.
Поскольку Вы видите, что существует много опций и способов сделать это.
Можно использовать expect
программа.
Вот сценарий в качестве примера:
spawn /path/to/program/Dynamips
expect -- "->"
send "start R1\r"
expect -- "->" {
sleep 5
send "start R2\r"
}
expect eof
Можно вызвать это с:
expect scriptname
Ожидайте также доступно как модуль Perl, если Вы более удобны в Perl, чем TCL.
Простой отрывок с помощью Perl Ожидает, что модуль мог бы быть похожим на это:
my $bob = Expect->new("bob_program");
$bob->expect(1, "Hullo!");
$bob->send("Hi!\r");
$bob->expect(1, "Bye!");
$bob->send("Later!\r");
$bob->soft_close();
Я работал и с expect/TCL и с жемчугом, и я должен сказать, что предпочитаю Perl. Если Вы уже не знаете это, TCL является довольно раздражающим для взятия.