Script Script Test1.py, записанный на Python, работает постоянно, в то время как True. Когда SSH будет удаленным (используя папутный терминал), он запускает скрипт со следующей команды:
Кода -копия выглядит следующим образом:
Python test1.py &
Теперь сценарий работает нормально, и вы можете увидеть номер процесса через PS. В настоящее время вы непосредственно закрываете терминал SSH (не используя команду Exit, но напрямую выполняете его через кнопку закрытия грудь). После входа в систему вы обнаружите, что процесс вышел.
Проблема была решена с помощью метода фонового запуска. Вот краткое изложение, которое мне удобно проверить его в будущем.
Запуск в фоновом режиме под Linux
Реализовано через вилку
В среде Linux процесс Daemon в C реализуется через вилку, и Python также может быть реализован с помощью этого метода. Пример кода заключается в следующем:
Кода -копия выглядит следующим образом:
#!/usr/bin/env python
Время импорта, платформа
Импорт ОС
def funzionedemo ():
# Это конкретный пример бизнес -функции
fout = open ('/tmp/demone.log', 'w')
В то время как правда:
fout.write (time.ctime ()+'/n')
fout.flush ()
Time.sleep (2)
fout.close ()
def createdaemon ():
#fork Process
пытаться:
Если os.fork ()> 0: os._exit (0)
кроме Осиеррора, ошибка:
Print 'Fork #1 не удалось: %d ( %s)' %(error.errno, error.strerror)
OS._Exit (1)
os.chdir ('/')
os.setsid ()
Os.umask (0)
пытаться:
pid = os.fork ()
Если pid> 0:
Печать 'Daemon Pid % d' % pid
OS._Exit (0)
кроме Осиеррора, ошибка:
Печать 'fork #2 не удалось: %d ( %s)' %(error.errno, error.strerror)
OS._Exit (1)
# Стандарт перенаправления IO
sys.stdout.flush ()
sys.stderr.flush ()
si = file ("/dev/null", 'r')
SO = file ("/dev/null", 'a+')
se = file ("/dev/null", 'a+', 0)
OS.DUP2 (si.fileno (), sys.stdin.fileno ())
os.dup2 (so.fileno (), sys.stdout.fileno ())
OS.DUP2 (se.fileno (), sys.stderr.fileno ())
# Выполнить код в детском процессе
funzionedemo () # Функциональная демонстрация
Если __name__ == '__main__':
if platform.system () == "linux":
censureaemon ()
еще:
OS._Exit (0)
Реализовано через Upstart
Приложение может быть инкапсулировано в системные службы через Upstart, и полный пример записан здесь напрямую.
1. Напишите сценарии Python
Кода -копия выглядит следующим образом:
[root@local t27]# cat test123.py
#!/usr/bin/env python
Импорт ОС, время
В то время как правда:
Print Time.time ()
Time.sleep (1)
2. Написать файл конфигурации Upstat
Кода -копия выглядит следующим образом:
[root@local t27]# cat /etc/init/miketest.conf
Описание "Мой тест"
Автор "[email protected]"
Начать на Runlevel [234]
Остановитесь на Runlevel [0156]
CHDIR /TEST /T27
exec /test/t27/test123.py
возродить
3. Перезагрузить северную часть штата
Кода -копия выглядит следующим образом:
initCtl Reload-Configuration
4. Начните сервис
Кода -копия выглядит следующим образом:
[root@local t27]# start miketest
Miketest Start/Running, Process 6635
[root@local t27]# ps aux | Grep Test123.py
Корень 6635 0,0 0,0 22448 3716? SS 09:55 0:00 Python /test/t27/test123.py
Корень 6677 0,0 0,0 103212 752 балла/1 с+ 09:56 0:00 Греп -тест123.py
5. Остановите обслуживание
Кода -копия выглядит следующим образом:
[root@Local T27]# Stop Miketest
Miketest Stop/ожидание
[root@local t27]# ps aux | Grep Test123.py
Корень 6696 0,0 0,0 103212 752 балла/1 с+ 09:56 0:00 Греп -тест123.py
[root@local t27]#
Реализовано с помощью сценария Bash
1. Код Python
Кода -копия выглядит следующим образом:
[root@local test]# cat test123.py
#!/usr/bin/env python
Импорт ОС, время
В то время как правда:
Print Time.time ()
Time.sleep (1)
2. Напишите сценарий запуска
Кода -копия выглядит следующим образом:
[root@local test]# cat start.sh
#! /bin/sh
Python test123.py &
3. Начните процесс
Кода -копия выглядит следующим образом:
[root@локальный тест]#./start.sh
Если вы используете и запускаете процесс напрямую:
Кода -копия выглядит следующим образом:
Python test123.py &
Закрыть терминал SSH напрямую приведет к выходу процесса.
Реализовано через экран, TMUX и другие методы
Если вы временно запускаете программу, вы можете запустить программу через экран или TMUX. Вот описание того, как начинается TMUX.
1. Начни tmux
Введите TMUX в терминал, чтобы начать
2. Начните программу в TMUX
Просто выполните следующую команду (см. Приведенный выше сценарий): Python Test123.py
3. Выключите терминал SSH напрямую (например, кнопку «Закрыть»);
4. После resshing выполните следующую команду:
Кода -копия выглядит следующим образом:
Tmux Attact
Теперь вы можете видеть, что программа Python все еще выполняется нормально.
Запустить в фоновом режиме под Windows
Я не изучал его в окнах. Метод, который я часто использую, заключается в том, чтобы изменить расширение сценария Python на «.pyw» и дважды щелкните, чтобы запустить в фоновом режиме без изменения какого-либо кода.