Hier ist ein einfacher Python-Daemon, den ich nicht als Hintergrundprozess laufen lassen kann:
#!/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()
Es handelt sich um einen Socket-Policy-Dateiserver (Sie haben vielleicht schon von der Beschränkung gehört, die Adope für Socket-Verbindungen - http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html ); das funktioniert gut, wenn es wie ein "normaler" Prozess ausgeführt wird - "python that_server.py", - aber ich bekomme Probleme, wenn es im Hintergrund läuft.
So läuft das: "that_server.py &", - funktioniert nicht.
EDIT: Hier ist, was ich von der Shell bekommen habe:
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:~$
Ich starte es und drücke dann einfach die Eingabetaste - und es sagt 'gestoppt'. Was ist das Problem?
Ohne den sudo-Befehl passiert das Gleiche:
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:~$
EDIT 2: Ich habe dies in der Datei nohup.out gefunden:
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
UPDATE: Ich habe es geschafft, es mit dem Root-Konto auszuführen, konnte es aber nicht mit dem Benutzer ircd (der zu den suddoers gehört). Und die Frage ist nun, warum nicht?