Вот простой демон python, который я не могу запустить как фоновый процесс:
#!/usr/bin/env python
import socket
host = ''
port = 843
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
client, address = s.accept()
data = client.recv(size)
if data == '<policy-file-request/>\0':
client.send('<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" to-ports="*"/></cross-domain-policy>')
client.close()
Это файловый сервер с политикой сокетов (возможно, вы слышали об ограничении Adope, установленном для подключения к сокету - http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html);, которое хорошо работает, когда запускается как "обычный" процесс - "python that_server.py", - но у меня проблема, чтобы запустить его в фоновом режиме.
Работает так: «that_server.py &», - не работает.
РЕДАКТИРОВАТЬ: Вот что я получил от оболочки:
ircd@smoky43g:~$ ls
server.py
ircd@smoky43g:~$ sudo nohup python server.py &
[8] 19817
ircd@smoky43g:~$
[8]+ Stopped sudo nohup python server.py
ircd@smoky43g:~$
Я запускаю его, затем просто нажимаю кнопку ввода - и он говорит «остановился». В чем проблема?
Без команды sudo похожее происходит:
ircd@smoky43g:~$ nohup python server.py &
[9] 20341
ircd@smoky43g:~$ nohup: ignoring input and appending output to `nohup.out'
[9] Exit 1 nohup python server.py
ircd@smoky43g:~$
РЕДАКТИРОВАТЬ 2: Я нашел это в файле nohup.out:
python: can't open file 'sudo': [Errno 2] No such file or directory
Traceback (most recent call last):
File "server.py", line 10, in <module>
s.bind((host,port))
File "<string>", line 1, in bind
socket.error: [Errno 13] Permission denied
ОБНОВЛЕНИЕ: мне удалось запустить его, используя учетную запись root, но не смог как пользователь ircd (который принадлежит suddoers). И вопрос теперь, почему нет?