LINUX.ORG.RU

Средства запуска python скриптов в backgdound

 , , ,


1

1

Приветствую,

требуется запустить простенький python скрипт в background режиме для чего я в терминале ввожу ./name.py далее CTR+Z перевожу его ‘сворачиваю’ и когда требуется достаю с помощью bg. Проблема в том что я могу его ‘свернуть’ используя CTR+Z всего один раз. Т.е запустил скрипт, свернул его, вернул опять, и дальше я уже не могу не свернуть или даже просто остановить.

ps: запуск с добавлением логического И в конце, ничего не меняет.

я в терминале ввожу ./name.py далее CTR+Z перевожу его ‘сворачиваю’ и когда требуется достаю с помощью bg

Вроде раньше bg отправлял job в background а для «доставания» в foreground использовался fg ?

alx777 ★★
()

CTR+Z перевожу его ‘сворачиваю’

Ctrl+Z не сворачивает, а ставит на паузу. «Сворачивает» bg, разворачивает fg.

legolegs ★★★★★
()
  1. честно сделать daemon’а . google daemonize python https://pypi.org/project/python-daemon/

  2. открепить процесс от терминала. он по-прежнему не будет демоном, но вывод будет перенаправлен в файл. емнип, это необратимо

nohup python script.py &

  1. запускать в мультиплексоре терминалов вроде screen или tmux. опять же, это ни разу не демон, но ты можешь отключаться от сессии scren/tmux и по желанию подключаться снова
router ★★★★★
()
Ответ на: комментарий от router

Пробую: code=nohup python 1.py > logs.txt& но ничего не выходит

Хочу на наглядном примере просто понять, каким самым простым способом я могу запустить скрипт в фоне и писать его результат работы его в файл, и если мне необходимо то вернуть его снова из фона.

https://onlinegdb.com/HJrwR4h2H

Hex-Value
() автор топика
Последнее исправление: Hex-Value (всего исправлений: 5)

Для прототипа и тестов как написали выше screen или tmux.

В продакшене лучше что-нибудь серьезное использовать вроде supervisor

wisp ★★
()

А зачем возвращать в foreground? Если настроить логирование для stdout/err то результат работы можно прочитать из файла.

wisp ★★
()
Ответ на: комментарий от t184256

0: &

ЕМНИП, процесс тупо будет запущен в фоне, но прикреплён к тому же терминалу. При закрытии ssh сессии он будет убит, так что без nohup не катит

router ★★★★★
()

$ systemd-run –user ./script.py

  • вот это самое очевидное решение.

man systemd-run

nohup если не пользуешься системным менеджером

anonymous
()
Ответ на: комментарий от router

Задача: Хожу на сервер по ssh запускаю скрипт в фоне, который весь свой вывод в процессе работы ‘ложит’ в файл, скрипт должен работать бесконечно. Естественно я буду периодически переподключаться к серверу по ssh. Очень желательно иметь возможность вернуть скрипт из ‘фона’ каждый раз при подключении по ssh и посмотреть результат его работы в реальном времени.

Подвиду под общий знаменатель то что понял, у меня выбор один это использовать nohup, если я запускаю скрипт к примеру:

nohup ./script.py > logs.txt

То данные сохраняется в файл только после завершении работы nohup(т.е после CTR+Z). Так на всем протяжении работы nohup файл logs.txt остается пустой. Вот скрипт с которым пробую: https://onlinegdb.com/SJiIda6hB

PS: Люди выше писали про screen и tmux, я вкурсе их существования и даже использую, но как они мне помогут запускать скрипт в фоне на удаленном сервере я не совсем понимаю.

Hex-Value
() автор топика
Последнее исправление: Hex-Value (всего исправлений: 1)
Ответ на: комментарий от Hex-Value

ты либо альтернативный, либо прикидываешься. тебе нужны либо screen, либо tmux. задача же, которую ты решаешь - дебильная.

Anoxemian ★★★★★
()
Ответ на: комментарий от Hex-Value

выше писали про screen и tmux, я вкурсе их существования и даже использую, но как они мне помогут запускать скрипт в фоне на удаленном сервере я не совсем понимаю.

screen -S jobs_name -d -m /your/script.sh запустит твой скрипт «в фоне», затем можешь закрывать ssh-сессию, отключаться,

подключаться снова, выполнишь screen -ls – он тебе выкатит список сейчас выполняющихся,

по screen -x имя_сессий можешь подключиться и посмотреть что там происходит

man screen

pihter ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.