Eu tenho um pequeno script que verifica se meu rsync
backup foi concluído e, em caso afirmativo, minha máquina dorme.
Isso está no WSL (Debian).
#!/bin/bash
# if rsync is running, then wait 5
while ps aux | grep -q -e "[r]s";
do
sleep 5
echo "script running..."
done
# sleep PC
psshutdown64.exe -d -t 0
Isso funciona bem ao iniciar a partir de uma janela WSL.
Se o script estiver em execução, ele espera e, quando eu encerro rsync
, a máquina dorme.
script running...
script running...
script running...
script running...
PsShutdown v2.53 - Shutdown, logoff and power manage local and remote systems
Copyright (C) 1999-2021 Mark Russinovich
Sysinternals - www.sysinternals.com
Estou tentando criar um atalho do Windows para iniciar o mesmo script.
Ao iniciar o atalho, o loop nunca sai.
Continua aparecendo script running...
sem dormir.
Eu tentei bash.exe -c
, wsl.exe
, debian.exe
e powershell.exe
para iniciar o script.
Nenhum funcionou.
Curiosamente, quando inicio o script por meio de uma janela cmd ou Powershell, ele funciona bem:
wsl sh sleep.sh
PsShutdown v2.53 - Shutdown, logoff and power manage local and remote systems
Copyright (C) 1999-2021 Mark Russinovich
Sysinternals - www.sysinternals.com
Mas falha se eu usar um atalho para iniciá-lo.
EDIT: o script é salvo em uma pasta dentro do Documents
. Mas o script é realmente executável e funciona bem no WSL.
Estou postando isso como uma resposta no caso de ajudar alguém.
Embora não responda diretamente à pergunta, obtém o resultado que eu quero.
home
C:\Windows\System32\wsl.exe sh ~/sleep.sh