Я нашел решение для редактора отвлечения.
Выбрав фокусник, я начал искать Google для подобных приложений и наткнулся на Мараве. Это не работает отлично, так как мне нужно запустить его с помощью sudo, чтобы сохранить его, но он полноэкранный и отвлекающий, спасибо за вход
Другой ответ подходит для работы с Virtualbox, но у Vagrant есть свои механизмы для обработки виртуальных машин, и, как упоминалось в одном из комментариев, он поддерживает больше, чем просто VirtualBox, просто VMWare на данный момент, но кто знает позже !
Это работает для меня:
vagrant global-status | awk '/running/{print $1}' | xargs -r -d '\n' -n 1 -- vagrant suspend
Примечание:
Это работает с версиями бродяг после версии 1.6, для более старых версий вы, вероятно, должны обновить , но если вы не можете, одна из других опций, которые фокусируются на Virtualbox, может быть лучше.
Мой механизм для этого:
vagrant global-status | grep virtualbox | cut -c 1-9 | while read line; do echo $line; vagrant halt $line; done;
global-status перечисляет все флажки фильтра, которые для строк, содержащих virtualbox (Фильтрует текст справки, прерывается, если вы используя другой поставщик) Отфильтруйте, чтобы отображать только первые 9 символов (глобальный уникальный идентификатор). Хотя мы все еще можем читать строку с этого ввода, прочитайте его как переменную $ line: Распечатайте этот $ line run останавливает бродягу для этого глобального уникального идентификатораЭто лучше, чем метод Virtualbox выше, потому что он также запускает любые механизмы остановки с помощью бродяг.
В случае, если другие люди доберутся до этого вопроса: для тех, кто использует VirtualBox, он уже может позаботиться об этом, только включает в себя редактирование файла:
# Contents of /etc/default/virtualbox
# ...
# ...
# SHUTDOWN_USERS="foo bar"
# check for running VMs of user 'foo' and user 'bar'
# 'all' checks for all active users
# SHUTDOWN=poweroff
# SHUTDOWN=acpibutton
# SHUTDOWN=savestate
# select one of these shutdown methods for running VMs
# acpibutton and savestate causes the init script to wait
# 30 seconds for the VMs to shutdown
## My original values
# SHUTDOWN_USERS=""
# SHUTDOWN=poweroff
## My current values
SHUTDOWN_USERS="all"
SHUTDOWN=savestate
Поверхность - это не нужно редактировать / создать любой выход или init.d stript для запуска команд, размещенных в других ответах. Недостатком является то, что это решение относится к VirtualBox.
Проверено на Ubuntu 14.10 с VirtualBox 4.3.18.
Вся ссылка на этот пост.
Объединив некоторые другие ответы, это закроет все запущенные виртуальные боксы:
vagrant global-status | awk '/virtualbox running/{ print $1 }' | xargs vagrant halt
Я просто использую vagrant halt. Если вы запустите его без дополнительного аргумента, он остановит все машины, определенные в Vagrantfile.
Если вы пишете скрипты для разбора команд Vagrant, рекомендуется разбирать машинный вывод (--machine-readable), который более согласован.
Формат:
timestamp,target,type,data...
, поэтому вы можете импортировать его как CSV-файл, так как он разделен запятыми.
С оболочкой, вероятно, сложнее разобрать, например:
for id in $(vagrant global-status --machine-readable | cut -d, -f5 | grep -B3 running | egrep -o "[0-9a-f]{7}"); do
vagrant suspend $id;
done
См. Vagrant - Машиночитаемый выход
Однако мне легче анализировать стандартный вывод, например
while read id name provider state path; do
[ "$state" = "running" ] && vagrant suspend $id;
done < <(vagrant global-status)
Btw. Теоретически команда vagrant должна принимать регулярное выражение для того, чтобы список виртуальных машин приостанавливался в соответствии с этим GH Vagrant - Машиночитаемый вывод , например:
vagrant suspend '*'
, но он не работает
Связанные билеты GitHub:
GH # 7220: Предоставить дополнительную информацию опции для фильтрации списка для бродячего глобального статуса. GH: # 7221: Реализовать - все для приостановления или бродяги приостановить - все.Это может работать или не работать для вас ;-) Работает для меня
#!/usr/bin/env bash
if [ -z "$1" ]
then
OPTS=""
else
# force close if any arg passed
OPTS="-f"
fi
for i in $(vagrant global-status | grep running | awk '{print $1}'); do
DIR=$(vagrant global-status | grep running | awk '{print $5}')
cd "$DIR";
OUT=$(vagrant halt);
echo "attempted to halt $i: $OUT"
done