MacOS: Из какого файла команда `последняя` получает информацию?

Начиная с версии coreutils 8.24, есть другой способ:

tee -p ( голова -c10M | wc -c)>> (голова -c1 | wc -c) | numfmt --to = iec

Результатом будет

1

10M

Ключевые моменты здесь:

  1. Используйте -p , что вызовет tee предупреждать об ошибках при записи в любой выход, а не в канал. Это означает, что ошибка EPIPE на fwrite не приведет к завершению работы tee , а tee будет работать, пока есть хотя бы один выходной файл, открытый для записи. Если вы хотите получить предупреждение о выводе EPIPE в stderr, используйте - output-error = warn вместо -p .

  2. Используйте >> (head -c1 | wc -c) , чтобы перенаправить стандартный вывод tee на другой > (подстановка процесса) . Это важно по двум причинам. Вам нужно позаботиться о выводе stdout, производимом tee . Если вы используете > / dev / null , например, tee будет работать, пока stdin имеет данные (в данном случае навсегда). В то же время это позволит отправить вывод > (подстановка процесса) на стандартный вывод для дальнейшей обработки. Другие возможности, но не столь элегантные, - это закрыть вывод stdout tee другими способами. Две возможности: > / dev / full и > & - . Однако они будут выдавать предупреждения (tee: стандартный вывод: на устройстве не осталось места и tee: стандартный вывод: неверный дескриптор файла соответственно)

1
25.09.2018, 14:43
2 ответа

Согласно инструкции(man lastотносится к man utmpx), /var/run/utmpx.

1
27.01.2020, 23:31

Это было /var/log/wtmpдо Mac OS 10.3, согласно комментарию к заголовочному файлу Apple. Этот файл больше не существует и не используется. Базовые функции библиотеки C для доступа к базе данных входа в систему, на которой основан last, теперь общаются с ASL.

Дополнительная литература

1
27.01.2020, 23:31

Теги

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