У меня есть сценарий 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, как я могу решить эту проблему?
любая помощь приветствуется.
Это может помочь узнать, что делает 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)
, чтобы избежать всего этого.