ฉันพยายามที่จะมีหลายภาพ VirtualBox เริ่มโดยอัตโนมัติในการบูตและจะปิดอย่างถูกต้องในการปิดโฮสต์ก่อนที่จะปิดตัวลง ฉันมีสคริปต์ทุบตี/usr/local/bin/vmctl.sh
ที่จัดการเริ่มต้นและหยุดภาพผู้เยี่ยมชมโดยใช้การโทรไปยัง VBoxManage การโทรเริ่มต้นนั้นง่ายมาก - เพียงแค่วิ่งผ่านรายการรูปภาพและการโทรVBoxManage startvm --type headless "<imgname>"
จากนั้นออกจาก 0 การหยุดการโทรจะวนไปตามรายการและการโทรVBoxManage controlvm "<imgname>" acpipowerbutton
จากนั้นจะวนซ้ำจนกว่าจะVBoxManage list runningvms
ส่งกลับรายการว่างเปล่าหรือ 60 วินาทีผ่านไปก่อนที่จะออก บรรทัดคำสั่งทำงานได้อย่างสมบูรณ์
ฉันได้ตั้งค่าไฟล์หน่วยใน/lib/systemd/system/vmctl.service
:
[Unit]
Description=VirtualBox Control
After=virtualbox.service
[Service]
ExecStart=/usr/local/bin/vmctl.sh start
ExecStop=/usr/local/bin/vmctl.sh stop
[Install]
WantedBy=multi-user.target
เมื่อฉันวิ่งsystemctl start vmctl.service
มันจะเรียกทั้งสายเริ่มและหยุด เมื่อฉันเรียกว่าsystemctl stop vmctl.service
มีรายการใน syslog ที่ระบุStopped VirtualBox Control
แต่ไม่ได้ทำอะไร
ฉันเป็นเณรทั้งหมดไป systemd ฉันเพิ่งอัปเกรดกล่อง Ubuntu นี้เป็น 16.04 ฉันค่อนข้างแน่ใจว่ามีคำอธิบายง่ายๆสำหรับพฤติกรรมนี้ที่ฉันไม่เห็น
ขอบคุณ!
อัปเดตตามคำแนะนำของ Mark:
ฉันยืนยันไวยากรณ์โดยใช้systemd-analyze verify /etc/systemd/system/vmctl.service
(หลังจากย้ายไฟล์ที่นั่น - ขอบคุณสำหรับเคล็ดลับ) จากนั้นฉันก็เปลี่ยน ExecStart และ ExecStop ตามที่คุณแนะนำวิ่งsystemctl daemon-reload
และยังคงเห็นพฤติกรรมเดียวกัน บันทึกแสดงทั้งการดำเนินการเมื่อมีการโทรsystemctl start vmctl
แต่ไม่มีเมื่อทำงานsystemctl stop vmctl
:
# journalctl -u vmctl | tail
.
.
.
Apr 06 19:28:18 macmi10-builder systemd[1]: Started VirtualBox Control.
Apr 06 19:28:18 macmi10-builder echo[13901]: I started
Apr 06 19:28:18 macmi10-builder echo[13904]: I stopped
Apr 06 19:28:33 macmi10-builder systemd[1]: Stopped VirtualBox Control.