Эти числа являются файловыми дескрипторами . Как вы заметили, есть несколько, которые создаются автоматически. Когда открываются другие файлы или подобные файлы, они получают другие номера.
Числа, которые используются в любой конкретной программе, зависят от того, какие файлы были открыты этой программой или использованы иным образом. Например, если вы хотите «сохранить» текущий стандартный ввод и временно перенаправить стандартный ввод из другого места, а затем восстановить его позже, вы можете сделать что-то вроде:
exec 4<&0
exec < /some/file
#process
exec 0<&4 4<&- # restore stdin and close our duplicate
Таким образом, этот сценарий будет иметь 4
дескриптор файла, доступный, по крайней мере, в течение некоторого времени. Эта 4 может быть чем-то, что не используется, хотя (ну, есть ограничение на количество файлов, которые может открыть процесс, но все, что находится в пределах этого предела).
Вы можете увидеть, какие файловые дескрипторы открыты у процесса, и где они открыты, заглянув внутрь /proc/<pid>/fd
. Это показывает все дескрипторы открытых файлов для этого процесса <pid>
и с какими файлами они связаны.