Не ожидайте ни до какого входящего сетевого соединения в течение минут N, затем выполните команду

для i в {0..1000000} и для i в $ (seq 1000000) оба составляют большой список, а затем перебирают его. Это неэффективно и требует много памяти.

Используйте вместо этого

for ((i = 0; i<= 1000000; i++))

. Или POSIXly:

i=0; while [ "$i" -le 1000000 ]; do
  ...
  i=$(($i + 1))
done

Или:

seq 1000000 | xargs...

Чтобы получить файл, полный CRLF:

yes $'\r' | head -n 1000000 >  file

Как правило, следует избегать циклов в оболочках, когда это возможно.

1
21.03.2014, 00:18
1 ответ
[119833] Обнаружение простаивающих сетей, как правило, выполняется с помощью скрипта оболочки. Простой веб-поиск 'linux sleep network idle' показывает, по крайней мере, 3 простых для поиска скрипта для этой проблемы.

Независимо от того, копируете ли вы существующий скрипт или пишете свой собственный, нет причин запускать его каждую секунду. Вы можете легко создать задание cron, чтобы запускать его каждые 30 секунд. Большинство пользователей не хотели бы, чтобы сервер выключался до того, как он простаивал 5-15 минут, так что точность в секунду не требуется. Некоторые пользователи запускают скрипт только раз в 20 минут, что в среднем засыпает машину через 30 минут после того, как она простаивает[119836].

1
27.01.2020, 23:52

Теги

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