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

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

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

  • Является ли сам планировщик процесса Unix процессом?
  • остановка работы в указанное время
  • Резервное копирование только при подключении к источнику питания и только в пределах временного окна
  • Как я могу увидеть, какие процессы запущены?
  • Что такое простой способ запланировать одно событие в будущем?
  • Как получить список всех запланированных заданий cron на моей машине?
  • add-task *insert command here* list-tasks remove-task(s) 

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

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

  • Почему несколько экземпляров Mate-терминала имеют один и тот же PID?
  • Условная команда crontab в сценарии bash
  • Как я могу увидеть, какие процессы запущены?
  • Как отобразить следующее время планирования для узла TSM?
  • Является ли сам планировщик процесса Unix процессом?
  • Какой алгоритм планирования процесса используется Linux?
  • 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 - лучшая ОС в мире.