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