Как запустить программу как службу (без вывода сообщений)?

У меня есть сервер на базе Python, который я запускаю с терминала. Этот конкретный экземпляр терминала затем передает управление программе, и программа использует его как своего рода окно регистрации, пока оно не закроется. Это нормально, или я должен каким-то образом попытаться запустить программу каким-то другим способом, который будет просто отображаться как активный процесс? Если я закрываю терминал, с которого я запустил программу, программа умирает вместе с ним.

Спасибо

22
задан 02.02.2020, 16:25

4 ответа

Даже старый bash использует & amp; для отправки процессов в фоновый режим, но есть и несколько других способов ... но есть два основных:

1.)$~ your_command > outputfile_for_stdout &
        # runs your command in background, giving you only PID so you can exit that process by `kill -9 PID_of_process`
        # & goes at the end of row      


2.)$~ your_command > outputfile_for_stdout 
        # this will run your program normally
        # press  Ctrl + Z then program will pause
   $~ bg
        # now your program is running in background
   $~ fg
        # now your program came back to foreground
3.)you can run terminal window under screen command so it will live until you either kill it or you reboot your machine
   $~ screen
   $~ run_all_your_commands
       # Ctrl + A + D will then detach this screen
   $~ screen -r will reattach it

Некоторые другие полезные команды:

   $~ jobs
        # will show you all processes running right now, but without PID
   $~ ps
        # will show you all processes for actual terminal window
8
ответ дан 02.02.2020, 16:27
  • 1
    Хм, я использовал команду ' top' просмотреть процессы до настоящего времени – cadrian 02.02.2020, 16:28
  • 2
    Отличное решение. Есть ли способ изменить 1. опция так, чтобы изодромный с предварением был сохранен в файл. Таким образом, файл журнала и изодромный с предварением файл сгенерированы. – Jeff Puckett 02.02.2020, 16:28

Вы также можете использовать:

start-stop-daemon -SbCv -x your_command

здесь есть сценарий init.d для запуска и остановки программы в фоновом режиме.

1
ответ дан 02.02.2020, 16:25

Из терминала вы также можете запустить screen или выполнить команду с помощью &. Простой способ запуска непрерывных процессов.

0
ответ дан 02.02.2020, 16:26
  • 1
    просто с помощью & к фону процесс в этом случае к мало, по-моему. OP заявляет, что его журналы сервера к stdout так, с & его терминал будет нарушен выводом. Также начиная с упоминаний OP закрытие терминала , OP не будет в состоянии к переднему плану, процесс снова и весь произведенный журналом будут потеряны. Лучше, по крайней мере, чтобы перенаправить его к файлу журнала или придерживаться с эти screen установка - но тогда объясните основы screen к OP (отсоединение/присоединение/и т.д.) – Martin Joiner 02.02.2020, 16:26
$ servicename &

Использование & приводит к тому, что программа запускается в фоновом режиме, а не блокирует оболочку, пока программа не завершится.

6
ответ дан 02.02.2020, 16:27

Теги

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