8 ответов
Решение
Если находится на NFS (или, возможно, на некоторой файловой системе FUSE), это может быть проблемой.
В любом случае, добавив / в вашу командную строку не будет пытаться установить время изменения каталогов.
290
2009-03-20 21:20
Вероятно, проблема связана с тем, что /foo/bar не принадлежит процессу записи в удаленной системе darwin (OS X). Решение проблемы заключается в назначении подходящего владельца на удаленном сайте.
Поскольку за этот ответ проголосовали и, следовательно, он был полезен для кого-то, я расширяю его, чтобы сделать его более понятным.
Причина, по которой это происходит, заключается в том, что rsync, вероятно, пытается установить произвольное время изменения (mtime) при копировании файлов.
Для того, чтобы сделать это, системная функция utime() darwin требует, чтобы эффективный uid процесса записи был таким же, как uid файла или супер пользователя, см. Страницу opentime для utime. Проверьте это обсуждение в списке рассылки rsync как ссылку.
87
2012-01-06 12:16
Поскольку @racl101 прокомментировал ответ, эта проблема может быть связана с владельцем папки. Команда rsync должна выполняться тем же пользователем, что и владелец папки. Если это не то же самое, вы можете это изменить.
4
2020-04-29 17:56
Проблема в моем случае заключалась в том, что «точка монтирования приемника» была неправильно смонтирована. Это было в режиме только для чтения (по какой-то необычной причине). Похоже, rsync копирует файлы, но это не так. Я проверил свой файл fstab и изменил параметры монтирования по умолчанию, заново смонтировал файловую систему и снова запустил rsync. Все хорошо тогда.
3
2014-10-15 08:14
У меня такая же проблема. Для меня решение состоит в том, чтобы удалить удаленный файл и позволить создать снова.
2
2019-02-25 07:33
Это случилось со мной на разделе типа где каталоги принадлежали другому пользователю в группе, членами которой мы были. Членство в группе уже было установлено до входа в систему, и вся структура каталогов была доступна для записи группой. Я запускал вручную а также чтобы подтвердить это.
Я до сих пор понятия не имею, почему это не сработало изначально, но я стал владельцем починил это. Возможно, связанный с SELinux?
2016-09-06 08:32
Я видел эту проблему, когда пишу в файловую систему, которая не (должным образом) обрабатывает время — я думаю, SMB разделяет или FAT или что-то.
Какая ваша целевая файловая система?
2009-03-20 21:19
Эта ошибка может также появиться, если вы запустите процесс rsync для файлов, которые не были недавно изменены в источнике или месте назначения… потому что он не может установить время для недавно измененных файлов.
2016-12-08 15:23
Возможно, у вас нет прав доступа к некоторым файлам. Из учетной записи администратора попробуйте «sudo rsync -av «. Альтернативно, включите учетную запись root и войдите в систему как root. Это должно позволить вам полностью подключить вашу систему и перевести ваш rsync!;-) Я не уверен, поможет ли вышеупомянутый —extended-attribute, но я также добавил это, просто для хорошей меры.
2010-02-15 21:08
Колонка TYPE
В столбце TYPE может отображаться более 70 записей. Далее перечислены только некоторые из часто встречающихся записей:
- REG: Обычный файл файловой системы.
- DIR: Директория.
- FIFO: Специальный файл FIFO (First In First Out).
- CHR: Специальный символьный файл.
- BLK: Специальный блочный файл.
- INET: Интернет-сокет.
- unix: Доменный сокет UNIX.
- IPv4: IPv4 сокет.
- IPv6: Файлы IPv6 сети — даже если её адрес IPv4 преобразован в IPv6 адрес.
- sock: Сокет неизвестного домена.
- DEL: Указатель Linux для удалённого файла.
- LINK: Файл символьной ссылки.
- PIPE: Труба (pipe) — способ обмена данными между процессами.
Другие параметры: MS-DOS (FAT) и Windows NT
Наблюдатели с орлиными глазами заметят еще несколько вариантов, чем я описал выше. Вот краткое изложение этих.
- MS-DOS (FAT) — это древний формат с обратной совместимостью, предшественник FAT32. Используйте это только в том случае, если вам абсолютно необходима совместимость с версиями Windows старше XP SP2. Вы почти наверняка нет.
- Файловая система Windows NT может быть предложена в зависимости от вашей настройки. Это основной тип дисков, используемых системами Windows, и, вероятно, лучше создать такие разделы в системе Windows.
Мы уже рассказали вам разницу между FAT32, exFAT и NTFS , поэтому проверьте этот список для более подробной информации об этих и других опциях.
Фото предоставлено Патриком Линденбергом , Брайаном Блюмом , Tinh T, Photo , Telaneo.
Columns UI
Как сделать, чтобы панель с графикой и обложкой альбома отображалась выше плейлиста?
Чтобы панель выводилась выше плейлиста, зайдите в список панелей, добавьте панель/тулбар/визуализацию, которые хотите задействовать. Организуйте их так, как хотите чтобы они отображались. И, наконец, поменяйте значения у соответствующих панелей. Поскольку это не общепринятый способ использования панелей, возможно странное поведение плеера. Поэтому помните, что этот совет может создать проблемы с отображением. Будем надеяться, что Musicmusic (автор) исправит ошибки в следующей версии Columns UI.
Hello world
Описание файловой системы
Поведение файловой системы описывается в отдельном классе. Создадим класс под названием HelloFS и унаследуем его от NSObject. В минимальном примере нам понадобится реализовать только два метода: получение списка файлов, который мы будем отображать, и содержимое каждого файла.
В методе, отвечающем за отображение файлов, нужно вернуть массив строк с именами файла. В качестве параметра туда приходит путь (path), в более сложных случаях нужно будет его обрабатывать, чтобы показывать контент соответствующей директории. Здесь я просто возвращаю один файл hello.txt.
1 |
override func contentsOfDirectory(atPath pathString)throws→Any{ return»hello.txt» } |
В метод, который отвечает за отображение пути файла, аналогично приходит путь, в зависимости от которого мы должны решить, какое содержимое отдавать для файла. В нашем же примере мы будем для всех файлов возвращать строку «Hello world!».
1 |
override func contents(atPath pathString)→Data?{ return»Hello world!».data(using.utf8) } |
В итоге файл HelloFS.swift примет следующий вид:
1 |
import Foundation finalclassHelloFSNSObject{ override func contentsOfDirectory(atPath pathString)throws→Any{ return»hello.txt» } override func contents(atPath pathString)→Data?{ return»Hello world!».data(using.utf8) } |
Инициализация файловой системы
В классе AppDelegate объявим две переменные:
1 |
privatevarhelloFSHelloFS? privatevaruserFileSystemGMUserFileSystem? |
В метод applicationDidFinishLaunching добавим следующий код:
1 |
helloFS=HelloFS() userFileSystem=GMUserFileSystem(delegatehelloFS,isThreadSafefalse) varoptionsString=»rdonly»,»volname=HelloVolume» userFileSystem?.mount(atPath»/Volumes/hello»,withOptionsoptions) |
Код достаточно интуитивен: инициализируем файловую систему, указываем название раздела и передаем параметр, что она только для чтения, а затем монтируем ее по указанному пути.
По завершении работы приложения в методе applicationWillTerminate демонтируем нашу файловую систему:
1 | crayon-61bb644b52bce066477473inline=»true»<span class=»pln»>userFileSystem</span><span class=»pun»>?.</span><span class=»pln»>unmount</span><span class=»pun»>()</span> |
После запуска приложения наш раздел появится в директории /Volumes, a также должен быть виден и в корневой директории. В разделе будет лежать единственный файл hello.txt, в котором будет написано «Hello world!».
Результат работы нашего Hello world проекта
Установка собственной иконки для раздела
Для раздела можно заменить иконку по своему усмотрению, для этого в проект нужно положить иконку в формате *.icns (требования к размерам и прочему можно найти в macOS Design Guidelines) и добавить путь к ней в массив options.
1 |
iflet volumeIconPath=Bundle.main.path(forResource»disk»,ofType»icns»){ options.insert(«volicon=\(volumeIconPath)»,at) } |
Определение уровня RX RPC
Перед дальнейшей работой вы должны определить ваш уровень RX RPC. Для этого, создайте файл .xg для rxgen, чтобы описать ваш прокси и код заглушки, которые будут связаны с afsfuse_client.c и afsfuse_server.c. В листинге 2 показано создание файла afsfuse.xg со следующим содержимым:
При определении уровня RX RPC обратите внимание на следующие моменты:
- Вы определили , и как оболочки над структурами , и . Они будут преобразованы при помощи сгенерированного XDR-кода (XDR, External Data Representation позволяют данным быть заключенными в оболочку архитектурно-независимым способом, для того чтобы данные могли передаваться между гетерогенными компьютерными системами).
- Вы определили примерно по одной функции для каждого члена структуры с почти одинаковыми параметрами, поскольку работа заключается просто в принятии вызовов из файловой системы FUSE и передаче их в .
- Вы жестко закодировали некоторые значения, например , которые вы должны были бы получить из системы — жесткое кодирование было сделано ради упрощения.
Что дальше?
В сегодняшнем материале мы рассматривали примеры исключительно read-only-систем, но нужно понимать, что реализовать запись и удаление файлов тоже не сложно: достаточно аналогичным способом переопределить соответствующие методы, с полным перечнем которых ты можешь ознакомиться в заголовочном файле OSXFUSE/OSXFUSE.h
Еще хотелось бы обратить внимание, что метод contents(atPath:) не единственный способ вернуть содержимое файла, для более сложных случаев можно реализовать полный цикл open/read/release, и авторы библиотеки рекомендуют именно этот способ, как более производительный
Также за кадром осталось то, что FUSE for macOS умеет генерировать события для Notification Center, на которые можно подписаться (например, открывать Finder после того, как система примонтировалась). Пример использования ты также найдешь в исходниках.
Настройка дополнительных компонентов.
Как я уже писал в начале этой статьи, Foobar2000 можно по праву назвать не просто плэйером, а музыкальным комбайном. И все это благодаря открытости и как следствие большому количеству дополнений.
Поэтому обязательно необходимо установить набор различных дополнений.
Первое что нужно установить — это «Free Encoder Pack».
На странице http://www.foobar2000.org/encoderpack скачиваем последнюю версию Free Encoder Pack. На момент написания статьи версия «Free Encoder Pack 2018-10-19».
Запускаю скаченный файл «Free_Encoder_Pack_2018-10-19.exe»
Указываю папку, где установлен foobar2000, нажимаю «Next»
Компоненты по умолчанию выбраны все, нажимаю «Install»
Когда все установлено, в папке с foobar2000 появилась папка «encoders», в которой записаны кодеры для основных форматов звуковых файлов
Как ими пользоваться я расскажу в другой статье.
Помимо кодеров предлагаю установить дополнительные компоненты, чтобы открывать различные файлы.
Для этого на странице http://www.foobar2000.org/components нужно скачать необходимые дополнительные компоненты.
В мой список входят:
- AC3 decoder 0.9.13 – позволяет читать файлы формата AC3;
- DTS decoder 0.6.8 – позволяет читать DTS файлы;
- Monkey’s Audio Decoder 2.2.1 – позволяет читать APE файлы;
- MusicBrainz Tagger 0.3.1 – позволяет читать и устанавливать тэги из базы MusicBrainz;
Чтобы установить скаченный компонент, необходимо зайти в настройки, нажимая в меню File—Preferences-Components. Открывается окно, в котором нажимаем кнопку «Install»
Указываем скаченный компонент и нажимаем «Открыть»
После установки новый компонент отображается в списке компонентов как неизвестный
Нажимаем «ОК», foobar2000 предлагает перезапуститься, чтобы установленные компоненты начали действовать
После перезапуска в списке компонентов AC3 декодер уже виден нормально
Советы читателям
- Мое решение заключалось в том, чтобы вместо этого предоставить полный доступ к диску / bin / bash. Для этого
- Перейти к Системные настройки> Безопасность и конфиденциальность> Конфиденциальность> Полный доступ к диску
- Нажмите на замок и введите пароль администратора, чтобы разрешить изменения.
- Откройте НОВОЕ окно поиска
- Перейдите на рабочий жесткий диск вашего Mac (обычно называемый по умолчанию Macintosh HD) и нажмите эти три клавиши одновременно: Command + Shift +. (символ точки). Это позволяет вам видеть скрытые файлы вашего Mac — выберите / bin. Убедитесь, что вы находитесь в корневом каталоге вашего Mac, а не в каталоге пользователя!
- Вы также можете использовать Finder’s Перейти> Перейти в папку… и введите / bin / bash
- Бремя / bin / bash к списку полного доступа к диску
- Нажмите значок замка, чтобы предотвратить дальнейшие изменения.
Исправление багов
Дебажить было сложно, но Ваня не мог облажаться и в этот раз. За год его уже успели уволить из трёх компаний, после четвёртого увольнения его резюме будет испорчено окончательно.
Дебаг (англ. debug — устранение багов) — исправление ошибок в коде программы.
Три дня и три ночи Ваня корпел над кодом, но ничего не выходило. В отчаянии он обратился к коллеге, который проводил код ревью для его коммита в прошлый раз.
— Прости, но если бы я знал, что не так в твоём коде, я бы твой пул реквест не заапрувил.
— Но ты же написал lgtm в комментарии!
— И теперь мне за это прилетело. Слушай, я уже сто раз пожалел, что помог тебе сюда устроиться. Тимлид просёк, что я сквозь пальцы смотрю на твой код, поэтому сейчас проблемы у нас обоих. В случае чего я найду новую работу, а ты — вряд ли. Так что сейчас у тебя отличный повод подтянуть знания.
— Ладно, разберусь как-нибудь.
Апрув (англ. approve) — подтвердить что-нибудь.
Пул реквест (англ. pull request) — запрос на подтверждение коммита.
LGTM (англ. looks good to me — На мой взгляд, хорошо) — сокращение, которое часто встречается на гитхаб в комментариях к подтверждению коммитов. Обычно его используют, когда не получается сказать ничего конструктивного по поводу кода.
Осталось всего два дня, чтобы исправить баг и добавить новую фичу, а у Вани не было почти никаких продвижений. После работы он, как обычно, зашёл в магазин, но вместо энергетиков решил взять пиво, потому что вспомнил о Пике Балмера.
Пик Балмера — шуточная теория, что при содержании алкоголя в крови между 0,129 и 0,138% (примерно 2 бутылки пива) программист получает сверхспособности к написанию кода. Теорию выдвинул Стив Балмер, CEO Microsoft с 2000 по 2014 год.
Бессонные ночи и пиво сделали своё дело, поэтому Ваня заснул прямо за компьютером.
Наутро он не сразу понял, что проснулся, и, лёжа лицом на клавиатуре, продолжал слушать разрывающийся будильник. Прошло всего несколько минут, но Ване они показались вечностью.
Ненавидя себя, он поплёлся на работу. Сев за рабочий стол и посмотрев в код, внезапно понял, в чём была ошибка (известно, что многие проблемы в разработке приложений решаются, когда программист спит). Исправив всё за пару минут, он пошёл к тимлиду.
— Я разобрался с багом.
— Отлично, но странно, что у тебя ушло так много времени. Давай протестируем твой код и выгрузим на прод.
Прод или продакшн (англ. production environment — рабочее окружение) — компьютер (чаще всего сервер), на котором запускается готовое к работе приложение.
Тестирование прошло успешно. И хотя Ване стало спокойнее, он не спешил радоваться — за полтора дня нужно было успеть выполнить задачу, на которую требовалась как минимум неделя.
Ваня начал думать.
К счастью, недавно он начал изучать JavaScript, поэтому мог просто скопировать код валидации с фронта и переделать его для бэкенда.
JavaScript — язык фронтенд-разработки.
Помучившись день, он всё-таки закончил. Тимлид оценил усилия:
— Ну вот, можешь же, когда захочешь. Тебе повезло, что мы не деплоим на прод по пятницам, поэтому у тебя ещё есть время до середины понедельника, чтобы ещё раз всё проверить и поправить.
Деплой (англ. to deploy) — процесс перевода кода в рабочее приложение, чтобы запустить его на каком-нибудь компьютере.
Воодушевлённый успехом, Ваня ещё раз всё протестировал, поэтому к следующему митингу он был спокоен — больше исправлять старые баги ему не придётся.
Доступные способы устранения
Начнем с проблемы № 1 – некорректная работа систем.
Чтобы провести оплату с помощью NFC, модулю необходимо корректное сопряжение с соответствующим приложением:
- Google Pay (или Android Pay)для Андроид;
- Apple Pay для iOS.
И если последние выдают сбои и ошибки, то вряд ли удастся справиться с поставленной задачей. Зайдите в приложения и внимательно проверьте данные. Возможно, вы забыли подвязать новую карту или сменили на ней пароль. Система работает со старыми сведениями и, соответственно, блокируется вашим банком.
Кстати, проблема также может крыться и в самом банке. Если это новое, никому не известное учреждение, то вполне возможно, что оно еще не заключило контракт с вышеуказанными приложениями.
Ну и, конечно же, тем, кто желает оплачивать свои покупки посредством NFC, нужно внимательно следить за обновлениями. Если на смартфоне отключена функция автообновлений, стоит заглянуть в приложение: возможно, установленная версия уже устарела.
И если внутреннее устройство смартфона для вас новый и удивительный мир, то целесообразнее предоставить это дело мастеру. Только настоящему, а не такому, у которого после сборки остаются на столе детали. Все-таки смартфон – вещь недешевая.
Как видите, большинство проблем решаемы, причем для их устранения может понадобиться всего лишь несколько минут. Поэтому не стоит спешить с радикальными мерами, ведь вероятность того, что NFC снова заработает, очень высока.
Как установить и пользоваться wdfs
Чтобы пользоваться преимуществами wdfs, нужно сначала установить FUSE. В последнее время FUSE достаточно популярно и используется многими программами, поэтому наверняка в вашем дистрибутиве Linux этот пакет уже установлен. Если вы перед этим никогда не пользовались FUSE, убедитесь, что пакет настроен правильно.
Запущенный модуль FUSE смотрит на группу fuse, по которой определяет, какие пользователи могут монтировать и размонтировать файловые системы FUSE, поэтому нужно добавить своего пользователя в эту группу, если этого еще не было сделано. Например, так: . Теперь загрузите модуль ядра FUSE: .
Если в вашем дистрибутиве Linux нет пакета wdfs, можно скачать последний tar-архив
. Кроме собственно FUSE, единственной зависимостью wdfs является
— библиотека, реализующая клиентскую часть WebDAV. wdfs должно скомпилироваться и установиться из tar-архива с помощью привычных команд: .
Итак, wdfs скомпилировано и установлено, а модуль FUSE загружен. Теперь нужно создать локальный каталог, в который будут монтироваться удаленные каталоги WebDAV. Монтирование происходит примерно следующим образом:
wdfs http://mywebdavserver.biz/foo ~/локальный_каталог -o username=пользователь -o password=секретное_слово
Как и в случае с веб-браузерами, можно пользоваться URL-ами вида https://, тогда соединение с удаленными каталогами будет производиться по протоколу HTTPS. Если сервер работает не на стандартном порту HTTP или HTTPS, можно указать порт соединения, как обычно — через двоеточие после имени сервера.
Если вы решили воспользоваться wdfs для совместной работы в группах, можно активировать блокировку файлов, добавив опцию к вышеприведенной команде. Число может быть 0, 1, 2 или 3. По умолчанию используется режим 0, который означает отсутствие блокировки. Режим 1 — самый простой; при его включении файл блокируется при открытии и разблокируется при закрытии. Режим 2 блокирует файл на время его записи, а режим 3 блокирует файл до тех пор, пока каталог не будет отмонтирован, либо пока не выйдет заданный тайм-аут. По умолчанию тайм-аут равен 5 минутам, однако его можно изменить, указав опцию .
Пользователям может быть полезна опция , которая активирует специальный режим Subversion для доступа к ревизиям файлов. Среди других опций есть , которая указывает клиенту WebDAV автоматически принимать SSL-сертификат удаленного сайта; запрещает перенаправления с удаленного веб-сайта на другие сайты. Обе эти опции могут быть полезны, если вы собираетесь писать какие-либо скрипты, которые должны работать молча без какого-либо вмешательства пользователя.
Если вы планируете часто пользоваться каталогом, наверняка будет удобнее монтировать его в автоматическом, а не в ручном, режиме. Для этого нужно всего лишь добавить в файл /etc/fstab строку вида
wdfs#http://mywebdavserver.biz/foo /mnt/локальный_каталог fuse users 0 0
Также можно указать несколько опций, разделенных запятыми (например, ) сразу после слова .
Как перемонтировать файловую систему fuseblk
Если вы хотите смонтировать диск самостоятельно, то с нужными вам опциями монтирования, то вам вначале необходимо отмонтировать его. Кстати, вы можете поменять поведение вашего дистрибутива и запретить ему автоматически монтировать диски. В современных дистрибутивах за автоматическое монтирование обычно отвечает графическое пользовательское окружение рабочего стола, то есть Cinnamon, GNOME, Xfce и так далее. Чтобы выполнить их настройку обратитесь к статье «Как отключить автоматическое открытие файлового менеджера после монтирования. Как отключить автоматическое монтирование дисков».
Для размонтирования диска, монтированного с помощью FUSE, можно использовать команду вида:
sudo fusermount -u /ПУТЬ/ДО/ТОЧКИ/МОНТИРОВАНИЯ
К примеру, у меня диск автоматически смонтирован в папку /run/media/mial/CA966DBC966DA9A1, тогда команда следующая:
sudo fusermount -u /run/media/mial/CA966DBC966DA9A1
Обратите внимание, что хотя FUSE и должна работать без прав суперпользователя, следующая команда без sudo является неправильной:
fusermount -u /run/media/mial/CA966DBC966DA9A1
Она вызовет ошибку:
fusermount: entry for /run/media/mial/CA966DBC966DA9A1 not found in /etc/mtab
Для монтирования вручную достаточно выполнить команды вида:
mkdir /ТОЧКА/МОНТИРОВАНИЯ sudo mount /dev/ДИСК /ТОЧКА/МОНТИРОВАНИЯ
К примеру, создаём директорию /tmp/disk в качестве точки монтирования:
mkdir /tmp/disk
Монтируем в неё диск /dev/sdb4:
sudo mount /dev/sdb4 /tmp/disk
Проверяем содержимое смонтированного диска (раздела):
ls -l /tmp/disk
Смотрим свойства монтирования:
findmnt --real
Используйте кошелек с технологией блокировки RFID
Если же вы хотите сохранить все свои карты в чехле телефона, и при этом больше не хотите видеть всплывающее окно с текстом «Для этой NFC-метки нет поддерживаемых приложений», тогда вы можете приобрести футляр для кошелька RFID. Последний сделает ваши карты электромагнитно непрозрачными, и ваш телефон с функцией считки NFC не обнаружит ваши карты до тех пор, пока вы не вытащите их с кошелька.
Используйте кошелек с технологией RFID
Данный вариант работает только в ситуации, когда проблема вызвана нахождением рядом телефона и кошелька с банковскими картами. Если вы держите ваши карты в чехле телефона, данный способ окажется неэффективным.
Как комбинировать условия поиска lsof (логические И и ИЛИ)
Давайте выведем файлы, которые были открыты пользователем mial и которые связаны с процессами systemd. Мы знаем, что можем предоставить более одного элемента поиска в командной строке, поэтому это должно быть легко.
sudo lsof -u mial -c systemd
Теперь давайте посмотрим на вывод lsof. Это не выглядит правильно; в выводе есть записи, которые были запущены пользователем root.
Это не то что мы ожидали. Что произошло?
Если вы предоставите несколько поисковых терминов, lsof вернёт любой файл, который соответствует первому поисковому запросу или второму поисковому запросу и так далее. Другими словами, она выполняет поиск ИЛИ.
Чтобы lsof выполняла поиск И, используйте опцию -a. Это означает, что будут перечислены только те файлы, которые соответствуют первому поисковому запросу, второму поисковому запросу и т. д.
Давайте попробуем это снова и используем опцию -a.
sudo lsof -u mial -c systemd -a
Теперь каждый файл в списке — это файл, который был открыт пользователем mial или от его имени и связан с systemd.
Обратите внимание, что два условия, одно из которых содержит отрицание (^) обрабатываются как логическое И:
sudo lsof +D /home -u ^mial
Но если требуется логическое И, то лучше взять за правило всегда использовать опцию -a, поскольку так команда становиться более однозначной:
sudo lsof +D /home -u ^mial -a
и в случае добавления третьего условия поиска она будет работать как ожидается:
sudo lsof -u mial +D /home/mial -c^chromium -a
Автоматическое обновление выводимой информации lsof
Чтобы перевести lsof в режим повтора, мы можем использовать опцию +r СЕКУНДЫ или её вариант -r СЕКУНДЫ. Опцию повторения можно применить двумя способами: +r или -r. Мы также должны добавить количество секунд, которое мы хотим, чтобы lsof ожидал перед обновлением дисплея.
Использование опции повтора в любом формате заставляет lsof отображать результаты как обычно, но добавляет пунктирную линию внизу экрана. Программа ожидает количество секунд, указанное в командной строке, а затем обновляет дисплей новым набором результатов.
С опцией -r это будет продолжаться пока вы не нажмете Ctrl+c. В формате +r программа будет продолжаться до тех пор, пока не будет получен пустой результат, или пока вы не нажмете Ctrl+c.
sudo lsof -u mial -c ssh -a -r5
Обратите внимание на пунктирную линию (=======) внизу списка. Она отделяет каждое новое отображение данных при обновлении вывода.