我在休眠状态下运行以下自定义服务:
[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
我正在寻找一种方法,当卸载失败(例如磁盘繁忙)时,从脚本的执行流程中中止正在进行的休眠过程。这可行吗?还是从脚本本身发出条件休眠命令(同时放弃事件触发的服务)是我唯一的选择?