我有一个运行 Ubuntu 15.04 的 Vagrant 盒子,它有一个 upstart 脚本,可在系统启动时启动服务。它有一个start on vagrant-mounted
节,因为该服务需要由 Vagrant 挂载 /vagrant 目录。
我现在正在将此脚本迁移到 systemd(我对它完全陌生),并且无法在启动期间成功运行该脚本,因为在运行该脚本时未挂载 /vagrant。After=vagrant-mounted
不起作用,但可能有助于显示我正在尝试做的事情。
当 Vagrant 目录在启动期间已挂载时,如何运行 systemd 单元?
笔记systemctl start my.service
做成功启动服务,并且服务已systemctl enabled
‘ed’。
答案1
我对 Vagrant 启动顺序的理解是,/vagrant
启动顺序完成后,Vagrant 使用 SSH 挂载(以及您定义的任何其他共享文件系统)。
因此,你可能希望systemctl start my.service
在配置程序中运行run: always
指定,因此配置程序在每次启动时运行,而不仅仅是在最初创建虚拟机时运行。
如果 systemd 有能力检测文件系统何时被挂载,这就没有必要了,但令我惊讶的是,我找不到任何迹象表明 systemd 支持此类功能。