我对此有疑问。我已将其作为启动程序。
如果下载结束或者我删除 .part 文件,脚本会暂停吗?
for file in /home/andy/Downloads/*.part ; do
if [[ -f $file ]]; then
echo "File download in progress."
echo "Computer can not suspend until download is complete."
echo "Now exiting."
sleep 2
break
fi
done
echo "This script will suspend computer in 5 minutes if there is no mouse or keyboard activity."
while :; do
if (( $(xprintidle) >= 300000 )); then
systemctl suspend
fi
sleep 0.5
done
2019 年 3 月 26 日下午 6:00 我尝试了基于 Sergiy 的答案的代码,但出现错误:
line 5: [: too many arguments
代码
#!/bin/bash
old=$(du -sh /home/andy/Downloads/myfile.iso)
while true; do
new=$(du -sh /home/andy/Downloads/myfile.iso)
if [ $old -eq $new ] ;
then
break
fi
old=$new
xdotool getactivewindow key Ctrl
sleep 5
done
line 5: [: too many arguments
答案1
该脚本仍将允许计算机暂停,因为for
循环没有向 GUI 发送任何信号并且没有生成 GUI 事件。
我有时会找到正在下载的文件并监视其大小是否发生变化,同时发出 Ctrl 键按下事件xdotool
。换句话说,这可能是
old=$(du -sh ~/Downloads/myfile.iso)
while true; do
new=$(du -sh ~/Downloads/myfile.iso)
if [ $old -eq $new ] ; then
break
fi
old=$new
xdotool getactivewindow key Ctrl
sleep 5
done
至于脚本中的第二个循环,是可以的。