Хотел бы я ответить чем-нибудь поумнее, но я нашел единственный способ подсчитать inotify(7)
часы, установленные пользователем,:
find /proc/*/fd -user "$USER" -lname anon_inode:inotify \
-printf '%hinfo/%f\n' 2>/dev/null |
xargs cat | grep -c '^inotify'
Измените "$USER"
на фактического пользователя, о котором вы хотите получить информацию; "`id -u`"
для текущего пользователя. Обратите внимание, что max_user_watches
— это ограничение на -пользователя, а не на процесс или на экземпляр inotify/файловый дескриптор.
Сначала будут find
открыты все файловые дескрипторы, созданные inotify_init*(2)
, а затем просмотрен соответствующий /proc/PID/fdinfo/FD
файл для получения информации об дескрипторах наблюдения, добавленных с помощью inotify_add_watch(2)
к каждому из них (на справочной страницеproc(5)
под /proc/[pid]/fdinfo/
для описания конкретных записей inotify -). Опция -c
для grep
позволит напечатать количество всех строк, соответствующих шаблону.
Примечание:счетчик для inotify_watches
хранится так же, как и другие счетчики для -пользователей в struct ucounts
, на которые ссылается структура пространства имен пользователей --, см.include/linux/user_namespace.h
; но я не смог найти какой-либо интерфейс, открывающий доступ к этим счетчикам.
Подключить кsed
:
ssh target_server "/home/directory/somescript.sh" | tail -1 | sed 's/$/ - target server/'
Синтаксис: s/regexp/replacement/flags
.
s
вызывает команду замены. /
— разделитель. Вы можете выбрать другой символ для разделителя. $
находится в слоте регулярного выражения. $
соответствует концу строки. - target server
— это текст, который заменяет то, что соответствует слоту регулярного выражения. Если бы текст замены содержал /
(, например, - target 01/10
), вы либо экранировали бы его, либо выбрали другой разделитель:
sed 's/$/ - target 01\/10/'
sed 's|$| - target 01/10|'