linux - 挂载命令后如何启动系统服务

标签 linux bash centos7 systemd

我正在为我的 linux 类(class)做一个实验室,老师正在教我们有关 Systemd 的知识。

如何使用此命令创建在安装特定设备时启动脚本的服务: mount/dev/xvdc1/mnt/backup

我尝试过的

  1. 我使用计时器检查了 /mnt/backup 是否是挂载点。 (老师不接受,必须严格事件驱动)
  2. 创建 .mount 单元并使 .service 单元需要 .mount 单元。这种做法在执行命令时没有启动脚本:mount/dev/xvdc1/mnt/backup

我想我可能以错误的方式解决了这个问题。这是实验室问题。

"Create a unit file that copies all the files from /mnt/backup using rsync as soon as /dev/xvdc1 is mounted."

我所知道的:

  1. 将要挂载的设备总是/dev/xvdc1
  2. 设备的挂载点总是/mnt/backup
  3. 服务必须基于正在挂载的/dev/xvdc1启动

这是我的 .service 单元文件

[Unit]
Description=Starts a backup for /dev/xvdc1 when mounted using the mount command.

[Service]
Type=simple
ExecStart=/root/backupscript.sh
ExecStop=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

最佳答案

无论这在stackoverflow 中是否合适,我都不认为Set systemd service to execute after fstab mount满足 Ops 要求 - 我认为要求是 systemd 在执行挂载时及时启动服务。鉴于此,我会让一个 systemd 服务单元执行命令 findmnt -pmount -f/mount/point,并让另一个 systemd 单元等待它。

关于linux - 挂载命令后如何启动系统服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41646913/

相关文章:

postgresql - 监视在 docker 容器内运行的 PostgreSQL 的正确方法

regex - 如何使用 sed 将第一个空格替换为空字符串

linux - 如何在普通的 lisp 中设置网络服务器?

bash - sudo chown/usr/bin/local 无法永久用于 Homebrew 软件升级

bash - 参加考试并在线粘贴

google-cloud-platform - 以 Airflow 用户身份运行 Airflow 进程和 Airflow 网络服务器

php - 命令在 putty 中工作正常但在 PHP 中不使用 exec()

linux - 在 tar 压缩文件中有没有办法添加评论或描述

regex - 如何将正则表达式的匹配分配给变量?

linux - 如何在CentOS7上加载网络 block 设备