Я думаю, что вы ищете --memfree
в GNU Parallel:
find... | parallel --memfree 1G dostuff
Это запустится dostuff
только при наличии 1 ГБ ОЗУ.Он будет запускать еще один до тех пор, пока не будет свободно менее 1 ГБ ОЗУ или не будет выполняться 1 задание на каждый поток ЦП. Если 0,5 ГБ ОЗУ свободно (50% от 1 ГБ ОЗУ ), самая младшая работа будет уничтожена. Итак, в метакоде:
limit = 1G
while true:
if freemem > limit:
if count(running_jobs) < cpu.threads():
another_job.start()
if freemem < 0.5 * limit
youngest_job.kill()
В сочетании с --retries 10
вы можете сказать GNU Parallel повторить 10 раз остановленное задание.
Если dostuff
занимает некоторое время, чтобы сожрать память, используйте --delay 30s
, чтобы подождать 30 секунд перед запуском следующего задания.
Короче -да, все вышеперечисленное.
Термин «системный журнал» перегружен и может использоваться для обозначения протокола, реализации или даже просто местоположения журналов, которые он генерирует, вместо того, чтобы спрашивать «какой дистрибутив?» прежде чем указать конкретный путь. То, на что он ссылается в любой момент времени, должно определяться контекстом, в котором используется этот термин; как вы указали, и rsyslogd
, и syslog-ng
являются конкретными реализациями протокола, но часто включаются в определение термина «системный журнал», когда он используется в общем для обозначения «по умолчанию из -из -средство ведения журнала -box system для дистрибутива, над которым вы работаете».