Конвейер оболочки выполняет программы конвейера не одну за другой, а более или менее в одно и то же время (меньше, так как система становится все более загруженной ), как показано, когда первые три следующих date
вызывает выполнение:
$ date +%s; (date +%s >&2; sleep 3) | (date +%s >&2; sleep 5); date +%s
1502224035
1502224035
1502224035
1502224040
$
Следовательно, таймер timeout
уже ведет обратный отсчет, пока wget
занят загрузкой данных, но до того, как display
успел отобразить упомянутые данные.
Одним из обходных путей может быть загрузка данных заранее, чтобы был список файлов для отображения для работы; это уберет задержки, вызванные wget
, из части display
.
#!/bin/sh
...
get_the_files_here
for f in a_glob_that_matches_the_files_here; do
timeout 10s display "$f"
done
Я понял.
На некоторых ядрах (например. 2.6.32+ ), по крайней мере, в CentOS/RHEL вы можете изменить ограничения ресурсов запущенного процесса, используя /proc/<pid>/limits
, например.:
$ grep "open files" /proc/23052/limits
Limit Soft Limit Hard Limit Units
Max open files 1024 4096 files
Чтобы изменить максимальное количество открытых файлов на мягкое ограничение 4096, жесткое ограничение 8192:
echo -n "Max open files=4096:8192" > /proc/23052/limits
Это дает:
$ grep "open files" /proc/23052/limits
Limit Soft Limit Hard Limit Units
Max open files 4096 8192 files
Обратите внимание на -n
в echo -n
-, без этого вы получите ошибку " invalid argument
".
Другой вариант — команда prlimit
, введенная вместе с util-linux 2.21
, позволяет читать и изменять ограничения запущенных процессов.
Это продолжение доступного для записи /proc/<pid>/limits
, которое не было интегрировано в основное ядро. Это решение должно работать.
$ prlimit --nofile --output RESOURCE,SOFT,HARD --pid 23052
RESOURCE SOFT HARD
NOFILE 1024 4096
Установите пределы:
$ prlimit --nofile=4096:8192 --pid 23052
Подтвердить:
$ prlimit --nofile --output RESOURCE,SOFT,HARD --pid 23052RESOURCE SOFT HARD
NOFILE 4096 8192
$ grep "open files" /proc/23052/limits
Limit Soft Limit Hard Limit Units
Max open files 4096 8192 files