我在Windows子系统上运行Linux时遇到了SSH无法持续运行的问题。似乎如果没有打开shell并运行bash,子系统中的所有进程都会被杀死。有没有办法阻止这种情况发生?
我尝试使用nssm创建服务,但无法使其正常工作。现在我正在尝试启动一个shell,然后将其发送到后台,但我还没有完全弄清楚如何做。
我在Windows子系统上运行Linux时遇到了SSH无法持续运行的问题。似乎如果没有打开shell并运行bash,子系统中的所有进程都会被杀死。有没有办法阻止这种情况发生?
我尝试使用nssm创建服务,但无法使其正常工作。现在我正在尝试启动一个shell,然后将其发送到后台,但我还没有完全弄清楚如何做。
为了使后台任务持续运行,您必须保留至少一个bash控制台:一旦您关闭最后一个打开的bash控制台,WSL会关闭所有正在运行的进程。
是的,我们正在努力改善这种情况;)
在最近的Windows 10 Insider版本中,我们增加了一个功能,即即使关闭所有Linux控制台,仍然可以保持守护程序和服务在后台运行!
这种情况下的一个限制是您必须手动启动服务(例如,在Ubuntu中$ sudo service ssh start
),虽然我们正在调查如何允许您配置哪些守护程序/服务在登录时自动启动。更新内容将随后发布。
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /etc/rc.local'",0
/usr/sbin/sshd
/usr/sbin/cron
#block on this line to keep WSL running
sleep 365d
username * = (root) NOPASSWD: /etc/rc.local
username * = (root) NOPASSWD: /usr/sbin/cron
username * = (root) NOPASSWD: /usr/sbin/sshd
mkdir /var/run/sshd
/usr/sbin/sshd
#/usr/sbin/cron
我需要添加sshd目录,否则会出现错误“缺少特权分离目录/var/run/sshd”。 我注释掉了cron,因为我遇到了类似的错误,而且还没有时间或需要去修复它。
我还稍微更改了sudoers条目以使其正常工作:
username ALL = ....
cron
这样的东西有潜力吗? - Mattwmaster58