从事件服务取消进程内休眠

从事件服务取消进程内休眠

我在休眠状态下运行以下自定义服务:

[Unit]
Description=Unmount shared DATA partition *BEFORE* hibernate and hybrid-sleep
Before=hybrid-sleep.target
Before=hibernate.target
#Before=suspend.target

[Service]
ExecStart=/home/me/bin/unmount-partition.sh

[Install]
WantedBy=hybrid-sleep.target
WantedBy=hibernate.target
#WantedBy=suspend.target

基本上,一旦发出休眠命令,就会触发我的自定义服务,然后它会执行自定义脚本,我会在其中进行一些整理,并尝试卸载共享的 NTFS 分区(用于与 Windows 进行双启动)。为此,我在脚本中使用以下命令:

fsuuid=ABCDEF # UUID
device=$(blkid -U "$fsuuid")

if ! df | grep -q $device ; then
    # Parition not found.. Already dismounted?
    # Do some stuff...
    exit 0
else
    cd ~
    if umount UUID=$fsuuid ; then
        # Parition successfully dismounted
        # Do some stuff...
        exit 0
    else
        # *** Disk is busy; abort hibernation here!! ***
        exit 1
    fi
fi

我正在寻找一种方法,当卸载失败(例如磁盘繁忙)时,从脚本的执行流程中中止正在进行的休眠过程。这可行吗?还是从脚本本身发出条件休眠命令(同时放弃事件触发的服务)是我唯一的选择?

相关内容