$ sudo arp -avn
? (10.10.7.30) at 00:cc:cc:bb:dd:86 [ether] on eth0
...
$ sudo arp --delete 10.10.7.30
$ sudo arp -avn
? (10.10.7.30) at <incomplete> [ether] on eth0
После --delete
Я не ожидал входа в 10.10.7.30
. Неожиданно запись остается и отмечается <incomplete>
.
С помощью Ubuntu 10.04.
Запись будет удалена, подождите.
(Если вам нужен максимально короткий ответ: неполный == удален)
Скажем, «удалить» - неправильное слово для обозначения действия. На самом деле здесь происходит то, что запись вручную устанавливается в состояние "запрос отправлен, ответа нет" (таким образом «неполный» процесс ARP), как если бы машина была действительно недоступна.
Теперь запись будет полностью удалена, если за это время не будет получен новый действительный ответ ARP. В этом случае запись все равно будет повторно добавлена, даже если она была удалена, а не помечена как неполная. Так что у такого поведения нет никаких фактических за или против.
Но имейте в виду, что мы говорим о тайнике. Удаление вещей из кешей - дело сложное и дорогое. Более эффективно сделать запись недействительной и подождать, если она будет заменена, прежде чем окончательно удалить. Но для системы совершенно безразлично, исчезла запись из списка или просто помечена как неполная.
Просто чтобы дополнить все остальные ответы, Я нашел эту ссылку очень полезной.
В некоторых случаях использование ip
более подходит, например, команда:
# ip -s -s neigh flush all
Результаты могут зависеть от вашего ядра Linux.
Помимо других хороших ответов, стоит упомянуть, что можно полностью создать кеш arp, удалив его. Один из менее болезненных способов:
ip link set arp off dev eth0 ; ip link set arp on dev eth0
Это должно удалить все записи, в каком бы состоянии они ни находились.
Альтернативные методы включают отключение и повышение уровня интерфейса и аналогичные способы полного удаления и воссоздания кеша arp.
Я знаю, что это может показаться очевидным, но для тех, кто не привык работать с оболочкой, это мое предложение:
Исходя из ответа @KarmaFusebox, почему бы и нет просто grep результаты ...? :
arp -a | grep "incomplet" -i -v
Он покажет вам только существующие / активные записи кеша.
Я думаю, что это по-прежнему POSIX совместимый команда. И это сценарий метод, если это то, что вам нужно.