Ubuntu Trigger隐藏技巧及进阶用法
传统通过设备名(如sda1)隐藏分区的方式易因设备名变更失效,而**UUID(通用唯一识别码)**是分区的永久标识,更适合隐藏操作。
udisksctl info -b /dev/sda1(替换为你的分区),在输出中找到IdUUID字段(如A10CDE7682786D73);/etc/udev/rules.d/99-hide-disks.rules文件,添加KERNEL=="sda1", ENV{UDISKS_IGNORE}="1"(将sda1替换为你的分区名),或更精准地用UUID匹配(如ENV{ID_FS_UUID}=="A10CDE7682786D73", ENV{UDISKS_IGNORE}="1");sudo udevadm control --reload-rules && sudo udevadm trigger立即生效。Ubuntu 14.04及以上版本提供了图形化隐藏分区的功能,操作更直观,适合新手:
Super键(Windows键)打开搜索栏,输入“磁盘”并打开;若需基于文件修改、创建、删除等事件触发操作(如备份、日志清理),可使用inotifywait工具(属于inotify-tools包):
sudo apt install inotify-tools;trigger_script.sh):#!/bin/bash
inotifywait -m /path/to/watch -e modify,create,delete | while read path action file; do
echo "文件 $file 在 $path 中被 $action,执行自定义操作..."
# 在此处添加你的命令(如备份:rsync -avz /path/to/watch/ /backup/)
done
③ 赋予执行权限:chmod +x trigger_script.sh;./trigger_script.sh(或添加到crontab实现开机自启)。若需触发器在系统启动时自动运行或后台持续监控,可将触发器封装为Systemd服务:
sudo nano /etc/systemd/system/mytrigger.service;[Unit]
Description=My Daily Trigger Service
After=network.target
[Service]
ExecStart=/usr/bin/ubuntu-trigger run DailyTrigger # 假设触发器名为DailyTrigger
Restart=always
User=root
[Install]
WantedBy=multi-user.target
③ 重新加载Systemd配置:sudo systemctl daemon-reload;sudo systemctl enable mytrigger.service && sudo systemctl start mytrigger.service;sudo systemctl status mytrigger.service。inotifywait中指定具体目录(如/var/log而非/),避免监控整个文件系统;ubuntu-trigger中设置精确的时间规则(如--every "0 2 * * 1-5"仅工作日凌晨2点执行)或事件类型(如--event modify仅响应文件修改);xargs -P),可将耗时任务并行执行,提升效率;rsync代替cp同步文件),减少资源占用;htop或atop观察触发器的CPU、内存占用,及时调整配置。对于需要动态适配分区的场景(如USB设备、动态磁盘),可通过UUID匹配隐藏分区,避免设备名变更导致的问题:
KERNEL=="sd*", ENV{ID_FS_UUID}=="A10CDE7682786D73", ENV{UDISKS_IGNORE}="1"(sd*匹配所有SCSI设备,ID_FS_UUID匹配指定UUID);