Biorąc pod uwagę towarowy komputer PC, chcielibyśmy go używać do wykonywania niektórych zadań w tle przez całą dobę.
Zasadniczo chcielibyśmy mieć takie polecenia jak:
add-task *insert command here*
list-tasks
remove-task(s)
Dodane zadania należy po prostu umieścić w kolejce i wykonywać jeden po drugim w tle (uruchamianie po wylogowaniu z powłoki).
Czy jest jakiś prosty skrypt / program, który to robi?
process
process-management
scheduling
Dagnele
źródło
źródło
batch
polecenie „nie wykonuje żadnej równoległości”. Zazwyczaj występuje opóźnienie 60 sekund między rozpoczęciem jednego zadania a rozpoczęciem następnego; nie ma jednak nic, co sprawiłoby, że następne zadanie czeka na zakończenie pierwszego -atd
z przyjemnością wykopie zadania z kolejki wsadowej, gdy tylko wartość ustawiona przez-b
opcję minie (patrzatd
strona podręcznika ).Innym rozwiązaniem jest użycie
lpd
i utworzenie niestandardowego „sterownika drukarki”, który uruchamia zadania. Znajomy pomógł mi to rozwiązać, gdy miałem podobną prośbę. Utwórz taki skrypt i umieść go w/tmp/batch.sh
:Następnie uruchomić:
Spowoduje to uruchomienie kolejki i możesz utworzyć więcej, używając innych nazw zamiast partii 1. Dodaj pracę za pomocą:
Zarządzaj pracy z
lpq
,lprm
, ilpstat
. Jeśli chcesz mieć większą elastyczność w przekazywaniu argumentów do swoich zadań, możesz uczynić skrypt batch.sh bardziej intuicyjnym.(Próbowałem
batch
przed zjechaniem tą trasą, ale albo nie działa ona jako kolejka w OSX, albo używałem jej źle).źródło
batch
.Istnieje wiele systemów kolejkowania, ale często są one bardzo wyspecjalizowane.
Możesz zajrzeć do
at
harmonogramu. Jest tocron
pod pewnymi względami, ale bardziej przypomina kolejkę dla zadań jednorazowych niż dla zadań powtarzalnych. Może „planować” rzeczy według kryteriów innych niż czas, takich jak obciążenie systemu lub sekwencja zadań.Twoja ulubiona dystrybucja prawie na pewno będzie miała dla niej pakiety.
źródło
Zauważyłem, że to pytanie ma kilka lat, więc może nie pomóc oryginalnemu plakatowi, ale może pomóc komuś innemu.
Po pierwsze: „bufor zadań” jest odpowiedzią. Jest dość potężny i przynajmniej Fedora go ma.
Ale na wielu serwerach, których używam, nie mogę instalować dowolnych pakietów bez większych problemów, więc potrzebuję czegoś, co byłoby idealnie czystym bashem (lub perlem lub podobnym).
Po dłuższej walce z tym, wymyśliłem czystą implementację basha, która do tej pory wydaje się działać dobrze. Można go znaleźć na https://github.com/sitaramc/bq .
To tylko jeden skrypt bash, więc instalacja jest prosta. Jednak to eliminuje twoje drugie i trzecie wymagania (ale ich implementacja również powinna być trywialna).
Skrypt jest swobodnie komentowany i powinieneś być w stanie go przejrzeć za kilka minut, jeśli chcesz.
źródło