挂起计算机后,我经常会遇到登录屏幕冻结的情况。鼠标可以移动,但无法与密码字段等进行交互。遇到这种情况时我该怎么办?
我尝试过转到另一个 tty 并运行unity --replace
,但这只会让我丢失所有内容。我真的想知道,因为我因此失去了工作。
答案1
*首先,我不保证这会起作用;所以请您自行承担风险。
首先需要在 中创建一个脚本,/etc/pm/sleep.d/
它可以是任何名称,但为了确保加载顺序,请使用prefix 20_.
以root用户身份登录并创建文件:
gksudo gedit /etc/pm/sleep.d/20_custom-ehci_hcd /etc/pm/sleep.d/20_custom-ehci_hcd
现在您可以将此代码插入到您创建的文件中。
VERSION=1.1
DEV_LIST=/tmp/usb-dev-list
DRIVERS_DIR=/sys/bus/pci/drivers
DRIVERS="ehci xhci" # ehci_hcd, xhci_hcd
HEX="[[:xdigit:]]"
MAX_BIND_ATTEMPTS=2
BIND_WAIT=0.1
unbindDev() {
echo -n > $DEV_LIST 2>/dev/null
for driver in $DRIVERS; do
DDIR=$DRIVERS_DIR/${driver}_hcd
for dev in `ls $DDIR 2>/dev/null | egrep "^$HEX+:$HEX+:$HEX"`; do
echo -n "$dev" > $DDIR/unbind
echo "$driver $dev" >> $DEV_LIST
done
done
}
bindDev() {
if [ -s $DEV_LIST ]; then
while read driver dev; do
DDIR=$DRIVERS_DIR/${driver}_hcd
while [ $((MAX_BIND_ATTEMPTS)) -gt 0 ]; do
echo -n "$dev" > $DDIR/bind
if [ ! -L "$DDIR/$dev" ]; then
sleep $BIND_WAIT
else
break
fi
MAX_BIND_ATTEMPTS=$((MAX_BIND_ATTEMPTS-1))
done
done < $DEV_LIST
fi
rm $DEV_LIST 2>/dev/null
}
case "$1" in
hibernate|suspend) unbindDev;;
resume|thaw) bindDev;;
esac
现在添加可执行权限:
sudo chmod 755 /etc/pm/sleep.d/20_custom-ehci_hcd
然后重新启动...暂停应该按预期工作......