Простая система массового обслуживания?

Я не очень уверен в этом, но Вы могли также использовать cgroups для ограничения использования памяти. Преимущество cgroups состоит в том, что можно управлять процессами, которые уже работают. По тому, как systemd будет использовать cgroups для управления системными службами.

К сожалению, я экспериментировал немного, и они, кажется, не работают очень хорошо над моей системой Fedora 13.

10
27.08.2011, 01:31
4 ответа

Существует стандарт batch команда, которая делает более или менее, что Вы после. Более точно, batch выполняет задания, когда системная нагрузка не слишком высока, по одному (таким образом, она не делает никакого распараллеливания). batch команда является частью at пакет.

echo 'command1 --foo=bar' | batch      
echo 'command2 "$(wibble)"' | batch
at -q b -l              # on many OSes, a slightly shorter synonym is: atq -q b
at -q b -r 1234         # Unschedule a pending task (atq gives the task ID)
7
27.01.2020, 20:01
  • 1
    Неправильно сказать что batch команда "не делает никакого распараллеливания". Обычно существует значение по умолчанию задержка 60 секунд между запуском одного задания и запуском следующего; однако, нет ничего, чтобы заставить следующее задание ожидать первого для окончания- atd счастливо начнет задания от пакетной очереди как только набор значений -b опция протекла (см. atd страница справочника). –  rsaw 27.04.2016, 00:35

Существует много систем массового обслуживания, но часто очень специализированного.

Вы могли бы изучить at планировщик. Это похоже cron до некоторой степени, но это - установка больше как очередь для заданий времени, чем для повторных заданий. Это может "запланировать" вещи на критерии кроме времени, такие как системная нагрузка или последовательность заданий.

Ваш любимый дистрибутив будет почти наверняка иметь пакеты для него.

4
27.01.2020, 20:01

Другое решение состоит в том, чтобы использовать lpd, и создайте пользовательский "драйвер печати", который выполняет Ваши задания. Друг помог мне разработать это, когда у меня был подобный запрос. Сделайте сценарий как это и вставьте его /tmp/batch.sh:

#!/bin/bash

TMPFILE=$(mktemp /tmp/XXXX)
exec <"$6"
cat - > $TMPFILE
chmod a+x $TMPFILE
$TMPFILE
rm -f $TMPFILE

Затем выполненный:

lpadmin -p batch1 -E -P /tmp/batch.sh

Это запускает очередь, и можно создать больше при помощи других имен вместо batch1. Добавьте задание с:

lp -d batch1 /path/to/jobscript

Управляйте заданиями с lpq, lprm, и lpstat. Если Вы хотите больше гибкости с передающими аргументами Вашим заданиям, можно сделать batch.sh знатока сценария.

(Я попробовал batch перед потерей работоспособности по этому маршруту, но или это не работает очередью на OSX, или я использовал его неправильно.)

4
27.01.2020, 20:01
  • 1
    , я понимаю, что @arnaud указал "товарный ПК", что означает, что это - вероятно, не OSX, где я протестировал это решение. Однако это должно быть портативно, и это намного более гибко, чем batch. –  Joe Fusion 28.01.2014, 21:35
  • 2
    Это - возможное большинства подлинных взломов, которые я когда-либо видел. –  Thiago Macedo 07.11.2017, 23:19

Я заметил, что этому вопросу уже несколько лет, поэтому он может не помочь оригинальному плакату, но может помочь кому-то другому.

Первый :"диспетчер очереди задач" - это ответ. Он довольно мощный и есть в большинстве дистрибутивов Linux и Homebrew.

Но на многих серверах, которые я использую, я не могу устанавливать произвольные пакеты без особых хлопот, поэтому мне нужно что-то идеально чистое bash (или perl или подобное ).

После того, как я некоторое время боролся с этим, я придумал чистую реализацию bash, которая до сих пор работает нормально. Вы можете найти его по адресу https://github.com/sitaramc/notes/blob/master/bq, с документацией .

Это всего лишь один bash-скрипт, так что установка не составляет труда. Тем не менее, это нарушает ваши вторые и третьи требования (, но их реализация также должна быть тривиальной ).

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

6
27.01.2020, 20:01

Теги

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