at daemon: в чем смысл очереди "batch"?
Мне интересно, есть ли практическая цель для очереди пакета (т.е. batch
, at -q b
).
Я спрашиваю это, потому что, кажется, есть обязательное время ожидания 1 минута (по atd
по умолчанию) между последовательными выполнениями заданий. (например, если я выполняю batch <<<true
пять раз очистка очереди занимает не менее 4 минут.)
Кажется ненадежным использование в производственном скрипте, потому что если какой-то другой пользователь или скрипт делает что-то синоним for i in {1..2880}; do batch <<<true; done
перед моим исполнением мои сценарии будут отложены / истощены на 2 дня.
1 ответ
Эта команда была более полезной, когда на типичной машине *nix было очень мало процессоров, но она была в большой степени распределена между пользователями. Как man batch
состояния,
Пакет выполняет команды, когда позволяют уровни загрузки системы; другими словами, когда средняя нагрузка падает ниже 1,5, или значение, указанное в вызове atd.
Таким образом, он был предназначен для использования в среде, перегруженной ресурсами. Если задание запускается в тот момент, когда нагрузка падает ниже порогового значения, для системы имеет смысл отслеживать, какую нагрузку загружают другие пользователи после завершения задания из очереди пакета. Возможно, нагрузка снова превысит пороговое значение, поэтому выполнение заданий из очереди пакетов необходимо снова приостановить. Отсюда и перерыв.
Ваш контрпример действителен, но нереален. Пользователь, саботирующий систему, как вы описываете, является "социальной проблемой", а не технической. В случае, если вы думаете о среде HPC, где конкурирующие пользователи представляют множество заданий: это не то, что batch
для, это, вместо этого, область инструментов, таких как SLURM.