Существует ли способ следить за развитием всех событий, отправленных в libnotify модуль?

[115249] Первоначальные тарандаши используют Busybox для экономии места. По сути, утилиты типа [115726]mv[115727] и [115728]cp[115729] имеют много общей логики - открывают файловый дескриптор, считывают буферы в память и т.д. Busybox в основном помещает всю общую логику в один двоичный файл, который меняет свое поведение в зависимости от имени, с которым он был вызван. Давайте посмотрим на этот ramdisk.[12179]Как видите, почти каждый бинарный файл на этом изображении связан с Busybox.[12180]На изображении 116 файлов, но только 14 из них на самом деле являются двоичными. Остальные являются симлинками к [115730]kmod[115731] или [115732]busybox[115733].[12181]Итак: причина, по которой существует так много случайных утилит, в том, что вы можете поместить их туда. Симлинки не занимают места, и даже если вы их удалите, функциональность останется в бинарном ящике Busybox, занимая место. Так как нет реальной причины удалять все ссылки, упаковщики не удаляют.[12182]Вот еще один вопрос, который стоит рассмотреть: почему бы просто не удалить сетевую функциональность из бинарного ящика Busybox? Как упоминает @Gilles, есть [115734]-[115735] законные (если не обычные) случаи, когда вам понадобилось бы подключиться к сети в initcpio. Поэтому, у упаковщиков есть два варианта: первый, сделать то, что они делают сейчас, и просто включить все это по умолчанию, или второй, разделить сетевую функциональность на свой собственный [115736]mkinitcpio[115737] крюк. Первый очень прост (в основном вы ничего не делаете) и стоит очень, очень маленькой суммы, в то время как второй очень сложный (опять же, благодаря @Gilles за указание на это), и выигрыш на самом деле не настолько существенен, чтобы иметь значение. Поэтому упаковщики выбирают умный выход и ничего не делают с сетью[115258].
2
30.04.2014, 19:29
1 ответ

Я обычно обращаюсь к инкрону для управления задачами уведомления:

sudo apt-get install incron

Создайте инкронный файл в /etc/incron. d:

echo '/tmp IN_ALL_EVENTS echo "$$ $@ $# $% $&"' > /etc/incron.d/watch-dir-tmp

Это позволит сбрасывать ВСЕ события в /tmp в /var/log/syslog:

date > /tmp/date

Apr 30 21:29:26 vault incrond[10144]: (system::watch-dir-tmp) CMD (echo "$ /tmp date IN_MODIFY 2")
Apr 30 21:29:26 vault incrond[10144]: (system::watch-dir-tmp) CMD (echo "$ /tmp date IN_OPEN 32")
Apr 30 21:29:26 vault incrond[10144]: (system::watch-dir-tmp) CMD (echo "$ /tmp date IN_MODIFY 2")
Apr 30 21:29:26 vault incrond[10144]: (system::watch-dir-tmp) CMD (echo "$ /tmp date IN_CLOSE_WRITE 8")

cat /tmp/date

Apr 30 21:29:33 vault incrond[10144]: (system::watch-dir-tmp) CMD (echo "$ /tmp date IN_OPEN 32")
Apr 30 21:29:33 vault incrond[10144]: (system::watch-dir-tmp) CMD (echo "$ /tmp date IN_ACCESS 1")
Apr 30 21:29:33 vault incrond[10144]: (system::watch-dir-tmp) CMD (echo "$ /tmp date IN_CLOSE_NOWRITE 16")

rm /tmp/date

Apr 30 21:29:40 vault incrond[10144]: (system::watch-dir-tmp) CMD (echo "$ /tmp date IN_DELETE 512")
0
27.01.2020, 23:01

Теги

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