2016-09-22 5 views
0

Я запускаю скрипт Python из bash, используя nohup. Сценарий выполняется через мой bashrc как часть функции оболочки. Если я использую это следующим образом:Возвратите приглашение после доступа nohup.out (bash)

function timer { 
    nohup python path/timer.py $1 $2 > path/nohup.out 2>&1 & 
    echo 'blah' 
} 

Все работает, и я возвращаю свое приглашение обратно. Однако, если вместо echo я называю tail, чтобы получить доступ к концу выходного файла поЬир, как это:

function timer { 
    nohup python path/timer.py $1 $2 > path/nohup.out 2>&1 & 
    tail -f path/nohup.out 
} 

моя подсказка не возвращается. Я хотел бы увидеть содержимое nohup.out и вернуться к приглашению без использования CTRL-c.

Я следовал совету here, но добавление </dev/null дает те же результаты, что и выше.

+0

Смотрите: 'man tail' – Cyrus

+0

tail -f не выходит, если он не получает сигнал SIGHUP/SIGINT/etc – euphoria83

ответ

0

Вы не получите запрос.

Потому что, tail -f всегда будет смотреть файл (path/nohup.out), чтобы выводить прилагаемые данные по мере роста файла. Вы можете попробовать tail -n, чтобы получить последние 10 строк path/nohup.out.

+0

Спасибо. Сначала 'tail -n' или' tail -lines' не сокращали его, потому что файл читался до того, как соответствующая информация была написана на нем. Я работаю над этим с 'sleep 1s', за которым следует' tail', но было бы просто смотреть файл до тех пор, пока он не будет написан. Есть ли способ прервать «хвост -f» с последующим вызовом (т. Е. Не ctrl-c)? Я пробовал несколько вариантов 'kill $!'. – eohippus