Возможно, аналогично ответу, предложенному apolinsky, я использую вариант на screen
. Ванильная команда выглядит так
screen bash -c 'long_running_command_here; echo; read -p "ALL DONE:"'
Сессия может быть отключена с помощью Ctrl ACtrl D и снова подключена в простом случае с помощью screen -r
. У меня это завернуто в сценарий под названием session
, который живет в моем PATH
, готовый для удобного доступа:
#!/bin/bash
#
if screen -ls | awk '$1 ~ /^[1-9][0-9]*\.'"$1"'/' >/dev/null
then
echo "WARNING: session is already running (reattach with 'screen -r $1')" >&2
else
exec screen -S "$1" bash -c "$@; echo; echo '--------------------'; read -p 'ALL DONE (Enter to exit):'"
echo "ERROR: 'screen' is not installed on this system" >&2
fi
exit 1
Это работает только тогда, когда вы заранее знаете, что хотите отключить программу. Он не предусматривает отключение уже запущенной программы.
--hint
используется для выбора раздела при наличии нескольких совпадающих разделов. По умолчанию выбирается первый совпадающий.
Предположим, есть 2 устройства хранения с метками boot, как показано ниже
hd0,msdos1
hd1,msdos7
тогда команда :
search --set=root --label freepool --hint hd1,msdos7
выберет hd1,msdos7 вместо hd0,msdos1
Это не описано в Руководстве по GRUB , но есть документация, которую можно найти в самом GRUB(search --help
по оболочке GRUB):
--hint
First try the device HINT.
If HINT ends in comma, also try subpartitions
--hint-ieee1275
First try the device HINT if currently running on IEEE1275.
If HINT ends in comma, also try subpartitions
--hint-bios
First try the device HINT if currently running on BIOS.
If HINT ends in comma, also try subpartitions
--hint-baremetal
First try the device HINT if direct hardware access is supported.
If HINT ends in comma, also try subpartitions
--hint-efi
First try the device HINT if currently running on EFI.
If HINT ends in comma, also try subpartitions
--hint-arc
First try the device HINT if currently running on ARC.
If HINT ends in comma, also try subpartitions
В чем смысл «Устройства с первой попытки»?
Вы должны понимать, что search
— потенциально медленная операция.
Может быть, у вас 50 дисков, по 100 разделов на каждом, и теперь search
нужно пройти через все эти...пока он, наконец, не найдет UUID, который вы искали, с 2356-й попытки.
Или, возможно, у вас очень медленное устройство, и проверка его UUID приводит к зависанию search
на некоторое время. Есть --no-floppy
, чтобы избежать наиболее распространенного случая, я думаю -, но другие устройства также могут быть медленными.
С помощью --hint
вы устанавливаете устройство для проверки в первую очередь. Если подсказка была правильной, вы вообще пропускаете потенциально длительную операцию поиска. Так что это оптимизация скорости. (Вероятно, не будет заметно только с одним диском и тремя разделами)
Эффект, описанный в ответе @totti , отдающий предпочтение определенному устройству, когда есть два с одинаковым LABEL или UUID, должен быть просто побочным эффектом.
Конечно, если вы сначала проверите одно устройство, дубликат на другом устройстве не должен быть найден. Тем не менее, было бы разумнее вообще не иметь таких дубликатов. Поскольку повторяющиеся UUID (или LABEL )можно считать ошибкой конфигурации, и в случае, если --hint
окажется неверным, он все равно может вернуть неправильное устройство.