linux下监听文件变化systemd方法

linux下监听文件变化systemd方法

1. 概述

如果你的Linux支持systemd(现在挺多Linux发行版都支持systemd),那你就可以通过systemd和rsync来实现:监控A目录发生变化,将内容同步到B目录。

可通过以下命令检查自己的Linux是否支持systemd:

ps -p 1

图1-1 支持systemd

systemd的path unit可用来监控目录变化——包括文件的创建、修改、删除等。要使用systemd的path功能,需要编写两个文件:

  • .path

用于定义要监控的路径和触发条件

  • .service

定义了当监控到符合条件的事件时,要执行的操作。

2. 具体操作

  • 创建两个测试目录

实际应用中此步骤可省略——因为你已经有要监控的目录和要备份的目标目录了。

mkdir -p /home/xlin/Templates/tmp/A
mkdir -p /home/xlin/Templates/tmp/B

监控/home/xlin/Templates/tmp/A目录的变化,将A目录的内容同步到B目录。

  • 创建sync-files-test.path

在/etc/systemd/system/目录下创建sync-files-test.path的文件,内容如下:

[Unit]
Description=monitor files and sync

[Path]
PathChanged=/home/xlin/Templates/tmp/A
Unit=sync-files-test.service

[Install]
WantedBy=multi-user.target

大意是监控/home/xlin/Templates/tmp/A目录的变化,有变化时执行sync-files-test.service。

  • 创建sync-files-test.service

在/etc/systemd/system/目录下创建sync-files-test.service的文件,内容如下:

[Unit]
Description=sync-files-test.service

[Service]
ExecStart=/usr/bin/rsync -av --delete /home/xlin/Templates/tmp/A/ /home/xlin/Templates/tmp/B/

[Install]
WantedBy=multi-user.target

大意是执行rsync命令,将/home/xlin/Templates/tmp/A/的内容同步到/home/xlin/Templates/tmp/B/目录下。

需要注意的是--delete参数,是删除B目录下没有在A目录出现的内容。

  • 启动监控服务

可以通过以下命令启动监控服务:

sudo systemctl daemon-reload
sudo systemctl start sync-files-test.path
sudo systemctl enable sync-files-test.path

接下来就可以操作A目录,观察B目录的变化了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇