我有一个小脚本,用于检查我的rsync
备份是否已完成,如果已完成,我的机器会进入睡眠状态。
这是在 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
从 WSL 窗口启动时,这可以正常工作。
如果脚本正在运行,它会等待,当我终止时rsync
,机器会休眠。
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
我正在尝试创建一个 Windows 快捷方式来启动相同的脚本。
启动快捷方式时,循环永远不会退出。它在不睡觉的情况下
一直显示。script running...
我已经尝试过bash.exe -c
、wsl.exe
、debian.exe
和powershell.exe
来启动脚本。
没有工作。
有趣的是,当我通过 cmd 或 Powershell 窗口启动脚本时,它可以正常工作:
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
但如果我使用快捷方式启动它,它会失败。
编辑:脚本保存在Documents
. 但是该脚本确实是可执行的,并且在 WSL 中运行良好。
我将其发布为答案,以防它对其他人有所帮助。
虽然它没有直接回答问题,但它得到了我想要的结果。
home
C:\Windows\System32\wsl.exe sh ~/sleep.sh