Я хочу выполнить эту команду внутри док-контейнера (ubuntu:18.04
image):
(cd inse/; sh start.sh > log.txt 2>&1 ;) &
, но когда я ее запускаю, она не регистрирует ее как log.txt
.Когда я запускаю его так:
(cd inse/; sh start.sh > log.txt 2>&1 ;)
Он блокирует forground (как и должно быть), а когда я его убиваю, я вижу, что файл log.txt
заполнен журналами, что означает, что он работает правильно,
Почему происходит такое поведение?
Содержимое start.sh
:
#!/usr/bin/env sh
. venv/bin/activate;
python3 main.py;
ОБНОВЛЕНИЕ:
На самом деле эта команда не является записьюточка контейнера, и я запускаю его внутри другой оболочки, но внутри долго работающего контейнера (тестирующего контейнера).
Использование с nohup, безуспешно:
(cd inse/; nohup sh start.sh | tee log.txt;) &
Я думаю, что эта проблема связана с использованием ()
концепции subshell внутри sh
.Кажется, он не позволяет выводить данные куда-либо при запуске в фоновом режиме.
ОБНОВЛЕНИЕ 2:
Даже это не работает:
sh -c "cd inse/; sh start.sh > log.txt 2>&1 &"
ОБНОВЛЕНИЕ 3:
Даже не это:
sh -c "cd inse/; sh start.sh > log.txt 2>&1;" &