bash on windows程序無法監聽埠?

bash on windows, 我在windows下面的子系統linux安裝了redis後,啟動redis服務,通過redis-cli無法訪問,提示:Could not connect to Redis at 127.0.0.1:6379: Connection refused。 查看他的監聽埠也沒有發現任何監聽埠,在windows下的cmd查看也沒有發現有6379這個埠。自己寫的程序也連接不上,請問怎麼回事?


你是不是啟動了服務以後把最後一個 bash 窗口給關閉了?WSL最噁心的地方就是不支持服務,只要最後一個 bash窗口關閉了,一切前台後台進程就都結束了,比如你啟動個 sshd,只要關閉了最後一個 bash,立馬消失。如此,你沒法在 WSL下面安裝一些常用服務的話,就比較雞肋了。

除非哪天 Windows 啟動可以自動運行 WSL的 systemd 或者 upstart 進程,你開點 redis / sshd / supervisord 之類的才有意義。

在此之前,還是 cygwin 更順手些,啟動一個 cygwin 的 init 進程掛載成 Windows 服務,開機就啟動。你在 /etc/rc.d/init.d 下面設置一切你想自動啟動的服務即可,常用的 sshd, supervisord, syslog, crontab 等都可以掛到 init 服務里開機即啟動。再用 supervisord 管理 redis, shadowsocks, kcptun 等常用進程,比 WSL 實用性強多了。


有可能是一些殺毒軟體的問題,比如已知的火絨就有這個問題,我試了下卸載後就正常了 火絨與bash on ubuntu on windows有衝突 。


經過反覆初始化windows,,最後發現是騰訊TGP的鍋,卸載就一切正常了


我想你說的和這個是同一個問題: https://github.com/Microsoft/BashOnWindows/issues/1554

應該是某些殺毒軟體/V*PN/TGP等等造成的, 現在解決方法應該只有把這些卸了, 可以關注下這個issue.


滾回到 1607 了, 天下太平

---------------------------------

從 1607 更新到 1703 之後, bash 里開的服務在 win 里就不能訪問了, 升級之前還是可以訪問的, 準備卸載更新試試...


推薦閱讀:

如何評價 Bash on Windows 已經可以運行 Ubuntu 界面和應用程序?
如何解決Bash on Windows在cmder中的中文亂碼?

TAG:WindowsSubsystemforLinux |