команда tail не отображает последнюю строку

Ответ Хауке Лагинга посвящен убийце процессов «недостаточно памяти», и почти не упоминает тот факт, что все может просто провалиться. Вы упоминаете сценарий, в котором «пользователь открывает новое приложение». Стандартный механизм открытия «нового приложения» для некоторого процесса (, как правило, оболочки или оконного менеджера )для «разветвления», создать новый процесс, который является копией существующего, и чтобы новый процесс вызывал «exec», заменить себя новой программой. Любой может выйти из строя из-за нехватки памяти.

От вилка (2):

ERRORS

(i.e., list of possible failure conditions)

       ︙

    ENOMEM

      fork() failed to allocate the necessary kernel structures because memory is tight.

       ︙

И аналогично execve (2):

       ︙

    ENOMEM

      Insufficient kernel memory was available.

       ︙

Этот поиск Google показывает другие системные функции который может возвращать ошибку «ENOMEM».

Так что вполне возможно, что вы (пользователь )просто получите сообщение об ошибке когда вы пытаетесь запустить новую программу, или иным образом инициировать новое действие, когда памяти мало.

1
17.04.2020, 09:48
1 ответ

Когда текстовый редактор сохраняет файл, очень часто происходит то, что он сохраняет во временный файл, очищает (обрезает )исходный файл и копирует содержимое из временного файл в исходный файл. Это делается для того, чтобы не изменять разрешения, права собственности и другие метаданные -исходного файла.

Это означает, что с точки зрения tailфайл усекается (очищается ), поэтому он начинает показывать последнюю строку файла , поскольку редактор перезаписывает ее (, что является почему он отображает весь файл ).

Чтобы добавить строки в файл таким образом, чтобы ваша команда tailвсегда показывала только последнюю строку файла и ничего больше, вам нужно обязательно добавить строк в файл.. Поскольку текстовые редакторы обычно перезаписывают файл, вам, возможно, придется сделать это другими способами.

Очень простой способ добавления данных в файл — использованиеcat:

cat >>Entrie.txt

Это сделает catдобавленным к файлу Entrie.txt. Он будет ждать ввода от вас, и вы сможете вводить данные непосредственно в файл из терминала. Текущая строка записывается в конец файла, как только вы нажимаете Enter . Чтобы прекратить ввод данных, нажмите Ctrl+D на пустой строке.

Это, очевидно, не дает вам возможности исправить написанное в предыдущих строках после нажатия Enter .

Другим вариантом может быть редактирование новых строк в отдельном файле, например additions.txt, с помощью вашего редактора.Сохраните этот файл, а затем выполните

cat additions.txt >>Entrie.txt

Это добавит полное содержимое additions.txtв конец файла Entrie.txt.

1
19.03.2021, 02:28

Теги

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