rm -rf directory
вместо rm -rf *
. Первоначально мы выполняли rm -rf *
в каталоге, чтобы очистить содержимое, и думали, что это будет максимально быстро. Но затем один из наших старших инженеров предложил избегать использования звездочек(*
)и вместо этого передавать родительский каталог, например rm -rf directory
.
После долгих дебатов о том, что это не имеет значения, мы решили протестировать его вместе с третьим методом использования find
. Вот результаты:
time rm -rf * 2m17.32s
time rm -rf directory 0m15.60s
time find directory -delete 0m16.97s
rm -rf directory
примерно в 9 РАЗ БЫСТРЕЕ, чем rm -rf *
!
Само собой разумеется, мы купили этому инженеру пива!
Итак, теперь мы используем rm -rf directory; mkdir directory
для удаления каталога и повторного -его создания.
Это грубо, но вы можете использовать iptables
для отслеживания пакета, а затем lsof
, чтобы найти, что использует порт, который сделал запрос.
В основном это:
iptables -I OUTPUT -p UDP --dport 53 -m string --algo bm --string foobar.su -j LOG --log-uid --log-prefix FOOBAR_MATCH
journalctl -t kernel -f | perl -ne '/FOOBAR_MATCH/ && /SPT=(\d+)/ && system("lsof -i udp:$1")'
^ Измените foobar.su
на то, что вы ищете.
Если в вашей системе включен IPv6, вам нужно взять эту команду iptables
и запустить ее во второй раз как ip6tables
.
После этого снова запустите команду iptables
, но с -D
вместо -I
, чтобы удалить правило (s ).
Параметр --log-uid
в правиле iptables
является необязательным. Я включил его на тот случай, если по какой-то причине lsof
не сможет зафиксировать процесс, тогда вы все равно сможете получить некоторую потенциально полезную информацию.
Вам также может понадобиться добавить другое правило iptables, чтобы отклонить запрос. В противном случае приложение может получить ответ и исчезнуть слишком быстро, чтобы lsof
его не уловил.