nohup
сообщает вам, что именно он делает, что он игнорирует ввод.
Если вы хотите избежать этого сообщения, перенаправьте stdin с /dev/null
следующим образом
nohup bash life.bash </dev/null >nohup.out 2>nohup.err &
Прочитав (очень быстро )исходный код , я бы сказал, что старая запись удалена:
if (t->entries >= ip_list_tot) {
e = list_entry(t->lru_list.next, struct recent_entry, lru_list);
recent_entry_remove(t, e);
}
Чтобы увеличить это значение, вы можете установить параметр при загрузке модуля вручную:
~$ sudo modinfo -p xt_recent
ip_list_tot:number of IPs to remember per list (uint)
ip_list_hash_size:size of hash table used to look up IPs (uint)
ip_list_perms:permissions on /proc/net/xt_recent/* files (uint)
ip_list_uid:default owner of /proc/net/xt_recent/* files (uint)
ip_list_gid:default owning group of /proc/net/xt_recent/* files (uint)
ip_pkt_list_tot:number of packets per IP address to remember (max. 255) (uint)
~$ sudo modprobe xt_recent ip_list_tot=10000
~$ sudo cat /sys/module/xt_recent/parameters/ip_list_tot
10000
Перед выгрузкой/загрузкой убедитесь, что модуль не используется. (отключите брандмауэр или, по крайней мере, правила, использующие recent
соответствие ).
Чтобы сделать этот параметр постоянным, вы можете поместить файл в /etc/modprobe.d/xt _недавний со следующим содержимым:
options xt_recent ip_list_tot=10000
(Обратите внимание, что этот метод может не работать и может быть адаптирован в зависимости от вашего дистрибутива ).
Трудно сказать, какие проблемы с производительностью могут возникнуть при последовательном увеличении значения этого параметра. Это зависит от вашего оборудования, от других задач, запущенных в системе, и т. д.
Тем не менее, основываясь на чтении исходного кода и моем собственном опыте разработки, я бы сказал, что главное, чего вы можете бояться, — это введение задержки, если, например, в настоящее время тестируемый IP-адрес является последним в списке. или нет в списке (, что может часто встречаться):
static struct recent_table *recent_table_lookup(struct recent_net *recent_net,
const char *name)
{
struct recent_table *t;
list_for_each_entry(t, &recent_net->tables, list)
if (!strcmp(t->name, name))
return t;
return NULL;
}
Учитывая x
сложность list_for_each_entry() + strcmp
,дополнительная «стоимость» установки `ip _list _tot̀ на огромное значение — это время просмотра списка.
Окончательная сложность может варьироваться от 1 * x
до ip_list_tot * x
.
Тем не менее, я предполагаю, что связанный список в ядре хорошо реализован, производительность и скорость являются требованиями.
В заключение я бы посоветовал вам провести сравнительный анализ... если это возможно.