Что такое дескриптор файла 10?

3670
Peter Mortensen

Что такое дескриптор файла 10?

Реальный пример (где стандартный вывод игнорируется, стандартная ошибка перенаправляется на стандартный вывод, а данные из файлового дескриптора 10 перенаправляются на стандартный вывод), для которого я потерял документацию / контекст для:

./cluexec21nodes 'mkdir /home/mortense/sambapub;cd /home/mortense/sambapub;./runcola.sh >/dev/null 2>&1 10>&1 &' 

В стандартных дескрипторов файлов

0 Standard Input (stdin) 1 Standard Output (stdout) 2 Standard Error (stderr) 

но что такое дескриптор файла 10?

Это использовалось в системе Linux (возможно, Red Hat).

1
Половина команды не имеет смысла. Он пытается запустить скрипт из каталога, который он просто `mkdir`'d ... grawity 12 лет назад 1
@grawity: mkdir и т. д. выполнялись на каждом из числовых узлов в кластере Linux - команда, заключенная в 's'. Peter Mortensen 12 лет назад 0
Я знаю об этом. Я говорил конкретно о части `mkdir / home / mortense / sambapub; cd / home / mortense / sambapub; ./ runcola.sh`. grawity 12 лет назад 0
@ Grawity: да, вы правы. Это не было хорошо продумано (вероятно, сочетание двух разных этапов). Peter Mortensen 12 лет назад 0

3 ответа на вопрос

3
Paul

Помимо стандартных файловых дескрипторов есть 3-1024. Они могут быть созданы в сценариях с

exec 10<> afilename 

С этого момента все, что записано в файловый дескриптор 10, записывается в afilename

Когда у тебя есть

./script.sh 10>&1 

Вы перенаправляете все, что пошло бы в файловый дескриптор 10, в стандартный вывод.

Вы захотите просмотреть runcola.shсценарий, чтобы понять, почему он это делает.

Синтаксис `exec 10> afilename` в * sh *. grawity 12 лет назад 0
@grawity: невозможно перенаправить на другой дескриптор файла в * sh *? Peter Mortensen 12 лет назад 0
@Paul: возможно, это было произвольное соглашение, которое использовалось, но, учитывая, что оно использовалось для выполнения команды на каждом из нескольких узлов в кластере Linux, разве это не могло быть как-то связано с этим (сетевые каналы?) , В любом случае, я постараюсь найти два сценария. Peter Mortensen 12 лет назад 0
@Peter: Да, с `10> & 1` или подобным. grawity 12 лет назад 0
0
grawity

Файловые дескрипторы не исправлены; программа может использовать их по своему усмотрению. (Даже fd's 0-2 можно закрыть, открыть, использовать повторно.)

В этом случае, fd 10, кажется, выбран произвольно; возможно, ./runcola.shчто он сможет записать в него дополнительную информацию. Вы должны будете прочитать сам сценарий, чтобы знать наверняка.

0
Erik Bennett

Дескриптор 10 используется для комментариев.

В Wikipedia есть хорошая стартовая статья в File descriptor . Сказать, что shсинтаксис «перенаправляет» один дескриптор на другой, немного обманчиво . Надежные источники информации можно найти в разделе «Дизайн операционной системы UNIX». Документация по системным вызовам dup(2)и dup2(2)раскрытие выгодной сделки.

Гравити, Пол и другие (вы знаете, кто вы есть) могут также знать о некоторых дополнительных ресурсах. Ребята?

Похожие вопросы