Skip to content

Instantly share code, notes, and snippets.

@valeryan
Last active August 9, 2023 10:19
Show Gist options
  • Star 19 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save valeryan/588856aea1f8ea64792a2cd3f5e4b426 to your computer and use it in GitHub Desktop.
Save valeryan/588856aea1f8ea64792a2cd3f5e4b426 to your computer and use it in GitHub Desktop.
WSL Startup Script

USAGE

  1. Save the services.sh file to your computer in a location like C:/tools/wsl-startup/.
  2. Download the WSL Statup.xml and import it into Task Scheduler.
  3. Modify as needed for you personal use.
#!/bin/bash
sudo service dbus start
sudo service cron start
sudo service atd start
sudo service memcached start
sudo service redis-server start
sudo service mysql start
sudo service php7.4-fpm start
sudo service nginx start
bash
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2020-03-16T14:14:50.2948542</Date>
<Author>DESKTOP-GV81FFD\samrh</Author>
<URI>\WSL Startup</URI>
</RegistrationInfo>
<Triggers>
<BootTrigger>
<Enabled>true</Enabled>
</BootTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<UserId>S-1-5-21-1767457005-3651416866-2414491648-1001</UserId>
<LogonType>S4U</LogonType>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>Parallel</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>false</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>C:\Windows\System32\wsl.exe</Command>
<Arguments>sh /mnt/c/tools/wsl-startup/services.sh</Arguments>
</Exec>
</Actions>
</Task>
@kkm000
Copy link

kkm000 commented Dec 25, 2018

It is possible to launch WSL services with a Windows Task at logon. That decouples them from bash instances. The only trick, IIRC, is to allow the startup script to run without asking for a password in /etc/sudoers with a NOPASSWD: prefix.

Never tried the task at boot option, but maybe it can also work?

@hendrep
Copy link

hendrep commented Feb 23, 2019

I struggled with my pages sometimes loading and sometimes timing out.
I kept getting upstream timed out (110: Connection timed out) while reading upstream, client: 127.0.0.1, errors in my valet log.
As per this post, microsoft/WSL#393 (comment),
I added fastcgi_buffering off; to my site's Nginx config under .valet/Nginx.

Seemed to have solved my issue!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment