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

Учитывая товарный ПК, мы хотели бы использовать его для выполнения некоторых задач в фоновом режиме круглосуточно.

В принципе, мы хотели бы иметь команды вроде:

  • Что происходит чаще всего, переключатели контекста или переключатели режимов?
  • Как я могу увидеть, какие процессы запущены?
  • Значение PF_VCPU и PF_WQ_WORKER
  • Добавить одноразовую запланированную задачу через сценарий оболочки?
  • Возможно ли в taskwarrior для напоминаний о повторяющихся задачах истечь автоматически?
  • Bash while loop и чтение из трубы
  • add-task *insert command here* list-tasks remove-task(s) 

    Добавленные задачи должны просто помещаться в очередь и выполняться один за другим в фоновом режиме (сохраняя работу после выхода из оболочки).

    Есть ли какой-нибудь простой скрипт / программа, которая это делает?

  • Как выполнить скрипт позже?
  • Почему понятие «приятно»?
  • Резервное копирование только при подключении к источнику питания и только в пределах временного окна
  • Почему хороший уровень игнорируется? (Между различными сеансами входа в систему - почетное, если начато с того же сеанса.)
  • Связь между планировщиком IO и планировщиком процессора / процесса?
  • Выполняется ли гостевая гостевая система VM только тогда, когда процесс VM запланирован на хосте?
  • 3 Solutions collect form web for “Простая система массового обслуживания?”

    Существует стандартная командная команда, которая делает больше или меньше того, что вам нужно. Точнее, batch выполняет задания, когда загрузка системы не слишком высока, по одному (поэтому она не делает никакой распараллеливания). Командная команда является частью пакета.

     echo 'command1 --foo=bar' | batch echo 'command2 "$(wibble)"' | batch at -qb -l # on many OSes, a slightly shorter synonym is: atq -qb at -qb -r 1234 # Unschedule a pending task (atq gives the task ID) 

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

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

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

    Другое решение – использовать 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 fancier.

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

    Linux и Unix - лучшая ОС в мире.