우분투 컴퓨터에 Collectd를 설치했습니다. Python 서버는 기본적으로 설치됩니다. 모든 시스템 측정항목을 브라우저에 푸시하려면 Collectd를 사용해야 합니다. 이를 위해서는 Python 서버를 실행해야 합니다. 하지만 실행하려고 하면 오류가 발생합니다.
도와주세요.
아래는 내 코드입니다
#!/usr/bin/env python
import CGIHTTPServer
import BaseHTTPServer
from optparse import OptionParser
class Handler(CGIHTTPServer.CGIHTTPRequestHandler):
cgi_directories = ["/cgi-bin"]
PORT = 8888
def main():
parser = OptionParser()
opts, args = parser.parse_args()
if args:
httpd = BaseHTTPServer.HTTPServer((args[0], int(args[1])), Handler)
print "Collectd-web server running at http://%s:%s/" % (args[0], args[1])
else:
httpd = BaseHTTPServer.HTTPServer(("127.0.0.1", PORT), Handler)
print "Collectd-web server running at http://%s:%s/" % ("0.0.0.0", PORT)
httpd.serve_forever()
if __name__ == "__main__":
main()
내가 명령을 실행할 때python runserver.py
내가 얻는 결과는 다음과 같습니다.
Traceback (most recent call last):
File "runserver.py", line 24, in <module>
main()
File "runserver.py", line 19, in main
httpd = BaseHTTPServer.HTTPServer(("127.0.0.1", PORT), Handler)
File "/usr/lib/python2.7/SocketServer.py", line 417, in __init__
self.server_bind()
File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind
SocketServer.TCPServer.server_bind(self)
File "/usr/lib/python2.7/SocketServer.py", line 431, in server_bind
self.socket.bind(self.server_address)
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use
[1]+ Exit 127 runserver.py
답변1
error 에서 분명합니다 Address already in use
. 이는 지정된 인터페이스/포트를 수신하는 다른 프로그램이 이미 있음을 의미합니다.
포트(8888)를 수신하는 다른 프로그램이 없는지 확인하세요. 다음을 수행할 수 있습니다.
netstat -plnt | grep 8888
프로세스를 중지합니다.
그렇지 않으면 포트 번호를 변경하십시오. 또한 1024 미만의 포트 번호를 사용하려면 루트 권한이 필요합니다. 1024보다 큰 포트의 경우에는 필요하지 않습니다.