Khởi động lại máy chủ Django hiển thị lỗi sau:
this port is already running....
Sự cố này xảy ra cụ thể trên Ubuntu chứ không phải các hệ điều hành khác. Làm thế nào tôi có thể giải phóng cổng để khởi động lại máy chủ?
Khởi động lại máy chủ Django hiển thị lỗi sau:
this port is already running....
Sự cố này xảy ra cụ thể trên Ubuntu chứ không phải các hệ điều hành khác. Làm thế nào tôi có thể giải phóng cổng để khởi động lại máy chủ?
Câu trả lời:
Một giải pháp đơn giản hơn chỉ cần gõ sudo fuser -k 8000/tcp
. Điều này sẽ giết tất cả các quá trình liên quan đến cổng 8000.
BIÊN TẬP:
Đối với người dùng osx bạn có thể sử dụng sudo lsof -t -i tcp:8000 | xargs kill -9
netstat -ntlp
Nó sẽ hiển thị một cái gì đó như thế này.
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 6599/python
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN -
tcp 0 0 192.168.124.1:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp6 0 0 :::3306 :::* LISTEN
Vì vậy, bây giờ chỉ cần đóng cổng trong đó Django / python đã chạy bằng cách giết quá trình liên quan đến nó.
kill -9 PID
trong trường hợp của tôi
kill -9 6599
Bây giờ hãy chạy ứng dụng Django của bạn.
ps aux | grep -i manage
after that you will see all process
ubuntu@ip-10-154-22-113:~/django-apps/projectname$ ps aux | grep -i manage
ubuntu 3439 0.0 2.3 40228 14064 pts/0 T 06:47 0:00 python manage.py runserver project name
ubuntu 3440 1.4 9.7 200996 59324 pts/0 Tl 06:47 2:52 /usr/bin/python manage.py runserver project name
ubuntu 4581 0.0 0.1 7988 892 pts/0 S+ 10:02 0:00 grep --color=auto -i manage
kill -9 process id
e.d kill -9 3440
`enter code here`after that :
python manage.py runserver project name
Theo mặc định, lệnh máy chủ khởi động máy chủ phát triển trên IP nội bộ tại cổng 8000.
Nếu bạn muốn thay đổi cổng của máy chủ, hãy chuyển nó dưới dạng đối số dòng lệnh. Chẳng hạn, lệnh này khởi động máy chủ trên cổng 8080:
python manage.py runserver 8080
Chúng tôi không sử dụng lệnh này {sudo lsof -t -i tcp: 8000 | xargs kill -9} Vì nó đóng tất cả các tab ... Bạn nên sử dụng để
ps -ef | trăn grep
giết -9 process_id
ps -ef | grep python (hiển thị tất cả quá trình với id)
kill -9 11633 (11633 là id quy trình để: - / bin / python Manage.txt ranerver)
Đây là một bản mở rộng về câu trả lời của Mounir. Tôi đã thêm một tập lệnh bash bao gồm điều này cho bạn. Chỉ cần chạy ./scripts/runserver.sh
thay vì ./manage.py runserver
và nó sẽ hoạt động chính xác theo cùng một cách.
#!/bin/bash
pid=$(ps aux | grep "./manage.py runserver" | grep -v grep | head -1 | xargs | cut -f2 -d" ")
if [[ -n "$pid" ]]; then
kill $pid
fi
fuser -k 8000/tcp
./manage.py runserver
Đối với tôi, điều này xảy ra vì yêu cầu API của tôi trong Postman đang bị chặn bởi một điểm dừng của trình gỡ lỗi trong ứng dụng của tôi ... khiến cho yêu cầu bị treo. Nếu tôi hủy yêu cầu trong Postman trước khi tắt máy chủ của ứng dụng, lỗi sẽ không xảy ra ở nơi đầu tiên.
-> Vì vậy, hãy thử hủy bất kỳ yêu cầu mở nào bạn đang thực hiện trong các chương trình khác.
Trên macOS, tôi đã sử dụng sudo lsof -t -i tcp:8000 | xargs kill -9
khi tôi quên hủy yêu cầu http đang mở để giải quyết error = That port is already in use.
Điều này cũng vậy, hoàn thành đóng ứng dụng Postman của tôi, đó là lý do giải pháp đầu tiên của tôi tốt hơn.
Nhập 'fg' làm lệnh sau ctl-c đó.
Lệnh:
Fg sẽ hiển thị cái nào đang chạy trên nền. Sau đó ctl-c sẽ dừng nó.
fg
ctl-c
ps phụ | quản lý grep
ubfox 3438 127.0.0 2.3 40256 14064 pts / 0 T 06:47 0:00 python Manage.py ranerver
giết -9 3438
Dường như IDE, VSCode, Puppeteer, gật đầu, express, v.v. gây ra vấn đề này, bạn đã chạy một quá trình trong nền hoặc chỉ đóng khu vực gỡ lỗi [trình duyệt, thiết bị đầu cuối, v.v.] hoặc bất cứ điều gì, dù sao, tôi đã trả lời cùng một câu hỏi trước đây, đây là liên kết của bạn
Nếu bạn gặp phải vấn đề này trong mac, bạn chỉ cần mở trình theo dõi hoạt động và buộc khá trăn, sau đó thử lại
Trong trường hợp Bạn đang sử dụng thiết bị đầu cuối màn hình của VSC, lỗi có thể là do thực tế là bạn đã chạy máy chủ trong một số vỏ khác.
Chỉ cần nhấp vào dropbox bên trái dấu + trong tiêu đề của thiết bị đầu cuối của VSC và chọn một số shell khác và kiểm tra xem máy chủ đã chạy ở đó chưa. Thoát khỏi máy chủ đó và bạn đã sẵn sàng khởi chạy một máy chủ khác.
sudo lsof -i tcp:8000
sau đó tiêu diệt id quá trình hiển thị.