Демон-сервис, запускающий последовательность процессов (сбалансированное распределение)

Удалите бессмысленные execs и ту часть, где вы передаете половину команды после --:

su -s /bin/sh -c "test.python $FULLPATH | ts '[%Y-%m-%d %H:%M:%S]'" &> log
1
03.11.2016, 08:51
1 ответ

Это зависит от того, насколько надежным вы хотите, чтобы это было. Простое решение, запускающее «следующую» программу в круговом списке, может выглядеть следующим образом:

#! /usr/bin/env bash

programs=(program1 program2 program3 program4 program5)
state=$HOME/.${0#*/}_state

if [ -f "$state" ]; then
    read idx <"$state"
    if expr "$idx" : '[0-9][0-9]*$' >/dev/null; then
        let idx=(idx+1)%${#programs[@]}
    else
        let idx=0
    fi
else
    let idx=0
fi
printf '%d\n' "$idx" >"$state" || exit 1

exec "${programs[$idx]}" "$@"

Если вам нужно что-то более надежное, вам нужна блокировка и, вероятно, сохранение состояния в базе данных.

0
28.01.2020, 01:08

Теги

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