time
встроенная из Вашей оболочки. Если Вам нравится time
но нуждаюсь в большей информации, пробую GNU time
в подробном (-v
) режим:
/usr/bin/time -v sleep 5
Command being timed: "sleep 5"
User time (seconds): 0.00
System time (seconds): 0.00
Percent of CPU this job got: 0%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:05.00
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 2144
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 0
Minor (reclaiming a frame) page faults: 179
Voluntary context switches: 2
Involuntary context switches: 1
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0
Ищите пакет "время" или "gnutime" в Вашем диспетчере пакетов.
Все четыре из /dev/fd/0
, /dev/stdin
, /proc/self/fd/0
и /dev/pts/2
имена файлов, как /////dev/../dev/fd//0
, /bin/sh
, /etc/fstab
, /fioejfoeijf
, и т.д. Все кроме того последнего примера, вероятно, будут названием существующего файла на Вашей машине. Имя файла является строкой, которая может определять файл в Вашей файловой системе; в соответствии с Linux, любая строка, которая не содержит пустой байт и это самое большее 4 096 байтов длиной, является именем правильного файла. Многие из этих имен эквивалентны, например. /bin/sh
эквивалентно ///bin/sh
, /bin/../bin/sh
(принятие /bin
существующий каталог), и т.д. Всеми примерами, которые я дал до сих пор, являются абсолютные имена файлов; существуют также имена файла прямого доступа, которые не начинаются с a /
и чье значение зависит от текущего каталога.
Терминология, окружающая имена файлов, не универсальна; иногда “имя файла” значит полный путь для файла, и иногда это означает название записи каталога. Терминология POSIX является “именем файла” или “компонентом пути” для названия записи каталога и “пути” для полного пути.
Дескриптор файла определяет открытый файл в конкретном процессе. Ядро поддерживает таблицу дескрипторов файлов для каждого процесса. Каждая запись в таблице дескрипторов файлов указывает, что сделать, если процесс запрашивает чтение, запись и другие операции на дескрипторе файла.
Дескрипторы файлов могут соответствовать файлу и иметь связанное имя, но не все они делают. Для тех, которые делают, файл может быть регулярным файлом, каталогом, файлом устройств или именованным каналом (также названный FIFO) (вид, созданный mkfifo
); некоторые системы имеют дальнейшие возможности, такие как сокеты Unix и двери. Примеры дескрипторов файлов, которые не имеют связанного именованного файла, включают каналы (вид, созданный pipe
) и сети сокетов.
/dev/fd/0
, /dev/stdin
и /proc/self/fd/0
имена файлов (весь эквивалент) со специфическим значением: они все определяют, какой бы ни к файлу в настоящее время получают доступ через дескриптор файла 0. Когда процесс открывает их, ядро копирует запись с индексом 0 в таблице дескрипторов дескриптора файла к новому дескриптору. Открытие любого из этих файлов эквивалентно вызову dup(0)
. Именованные файлы являются способом косвенно заставить процесс использовать один из своих уже открытых файлов, а не открывать новый файл; они главным образом полезны для передачи командной строки программы, где программа ожидает, что название файла откроется.
Имя файла является просто названием файла в файловой системе, ничем более - это - просто строка.
Дескриптор файла является некоторым объектом, от того, где можно читать и/или записать. Это открыто и готовый файл. Нет только дескрипторов файлов - stdin, stdout, и stderr являются также дескрипторами, можно записать и читать от них использующий абсолютно те же функции в качестве с файлами (кроме Вас, не может, например, искать). Другие примеры дескрипторов, которые не являются файлами: именованные каналы и сетевые сокеты.
В коде дескриптор файла является переменной, указателем на что-то в ядре, которое представляет объект файла.
Например,/dev/fd/0,/dev/stdin,/proc/self/fd/0 являются всеми ссылками на/dev/pts/2. Эти четыре дескрипторов файлов, или имена файлов?
Это все - псевдофайлы, которые могут быть полезны для некоторых сценариев или программ. Можно открыть их, и открытый () возвратил бы Вас дескриптор файла.