запускать последовательные фоновые команды при сохранении сеанса

У меня есть сценарий python, который я хочу запустить несколько раз, у меня проблемы с его настройкой для перехода к следующей команде, потому что сценарий python в конечном итоге выдаст ошибку

nohup python3 em.py &&killall chrome && sleep 60 &&nohup python3 em.py&

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

Я пытался решить с помощью:

nohup python3 em.py ;killall chrome;sleep 60;nohup python3 em.py&
nohup python3 em.py ;killall chrome;sleep 60;nohup python3 em.py;

они терпят неудачу, когда я выхожу из сеанса SSH (или CTRL + C ), Я запускаю Ubuntu 20, как я могу решить эту проблему?

любая помощь приветствуется.

0
задан 25 December 2020 в 01:14

1 ответ

Это может помочь узнать, что делает em.py и что делать в случае сбоя, поскольку это может повлиять на конвейер.

Я вижу здесь две проблемы.

Во-первых, команда оболочки nohup работает с текущим оператором, а не со всей строкой. Таким образом, хотя у вас нет hup для вызовов em.py, у вас нет и для двух других. Попробуйте запустить один bash с nohup. И я предлагаю использовать setsid как более надежный.

Во-вторых, управляющий терминал может не сбрасываться должным образом при выходе из системы. Вы должны правильно перенаправить stdin/out/err. Я вижу здесь две проблемы.

setsid $SHELL -c 'python3 em.py; killall chrome; sleep 60; python3 em.py' </dev/null >/tmp/em.out 2>&1 &

Вы также можете запустить команды внутри терминального мультиплексора, например screen(1) или tmux(1), чтобы избежать всего этого.

1
ответ дан 25 December 2020 в 01:47

Другие вопросы по тегам:

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