Для этой команды:
IFS=$'\n' a=($str)
Существует альтернативное решение:
дать первому назначению ( IFS = $ '\ n'
) команду для выполнения (функцию):
$ split(){ a=( $str ); }
$ IFS=$'\n' split
Это поместит IFS в среду для вызова split, но не будет сохранена в текущей среде.
Это также позволяет избежать всегда рискованного использования eval.
Часто процессы явно создают и открывают файлы и удаляют их напрямую, чтобы файл можно было использовать более безопасно, а также гарантировать, что файл будет удален по завершении процесса.
Короче говоря, это особенность; особенно с файлами, которые вы показываете в своем вопросе. Уничтожение этих процессов нарушит работу вашей системы.
Есть случаи, когда открытые удаленные файлы могут быть ошибкой (, например. процесс записывает в файл журнала, но файл журнала сжимается и удаляется, не сигнализируя процессу о повторном открытии файла журнала ). Вы можете обрезать такие файлы через файловую систему /proc/
:найти номер дескриптора файла с помощью lsof
, как показано выше, а затем выполнить > /proc/12345/fd/123
, чтобы обрезать файл (12345 — идентификатор процесса, 123 — дескриптор файла количество. Однако это очень редко необходимо.
Обратите внимание, что процессы не удаляются, удаляется только запись каталога, ссылающаяся на эти файлы.
В зависимости от программного обеспечения/решений, которые вы используете, вы должны определить известный/приемлемый базовый уровень.
Я бы не стал зацикливаться на удаленных файлах, которые все еще открыты или присутствуют в системе, если бы они не увеличивались со значительной скоростью с течением времени. Теперь, если у вас есть значительные отклонения от нормального базового состояния системы/ВМ, возможно, вам есть о чем беспокоиться.
Недавно мы обнаружили некоторые системы, общие для поставщика программного обеспечения, в которых у нас были отклонения от базового уровня порядка 20 -50 тыс. удаленных файлов; выполнение lsof занимало около 5 минут, и у нас заканчивался диск.
В конце концов, мы обнаружили, что поставщик, должно быть, разработал некоторые подпрограммы Java, в которых он открывал временные файлы и удалял их , не закрывая. Мы сообщили об ошибке поставщику, указав подозрительные файлы, и он исправил код. Мы также указали заказчику и поставщику, что решение может превысить лимит открытых файлов в Linux с большими разделами данных.