遇到暂停后登录屏幕冻结时该怎么办?

遇到暂停后登录屏幕冻结时该怎么办?

挂起计算机后,我经常会遇到登录屏幕冻结的情况。鼠标可以移动,但无法与密码字段等进行交互。遇到这种情况时我该怎么办?

我尝试过转到另一个 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

然后重新启动...暂停应该按预期工作......

相关内容