_=
в начале строки в выводе простого набора означает, что в bash есть переменная с именем_
(подчеркивание ). И его значение равно тому, что следует за =
. Например, установка переменной с именем test_var
на 12345
даст (в bash):
$ test_var=12345
$ set | grep test_var
test_var=12345
$ declare -p test_var
test_var=12345
Эта специальная переменная bash будет установлена в последний аргумент предыдущей строки:
$ echo "Testing some" "values" "in the shell" "(only bash)" "_=myvar=hello"
Testing some values in the shell (only bash) _=myvar=hello
$ echo "$_"
_=myvar=hello
$ echo "Testing some" "values" "in the shell" "(only bash)" "_=myvar=hello"
Testing some values in the shell (only bash) _=myvar=hello
$ declare -p _
declare -- _="_=myvar=hello"
Обратите внимание на два=
в этом выводе.
При выполнении set -a var=99
, происходят три различных события (, связанные с вашим вопросом):
-a
)(в обратном порядке, выполнивset +a
)для экспорта переменных. $1
, установленными наvar=99
). $_
установлено в последний параметр (, расширенный ). Выполнение set -a
помечает все последующие (новые или измененные )переменные как экспортированные (во всех оболочках, кроме csh
и некоторых родственных оболочках ).
$ set -a
$ myvariable=wer
$ env | grep myvariable
myvariable=wer
Чтобы вернуться к этой настройке, просто измените -
на +
:
$ set +a
$ unset myvariable # to erase it from the environment if it
# was exported before the change of set +a
$ myvariable=456544654 # A new value of the variable.
$ env | grep "variable" # No output means the var does not exist
# in the current environment
Что на самом деле должно быть set -- var=99
, чтобы избежать интерпретации опции (и set has lot )со значениями, начинающимися с тире(-
).
Устанавливает список аргументов (список позиционных параметров )на то, что после --
. Это справедливо для всех разумных оболочек (, но не для csh и др. ). Позиционные аргументы печатаются с "$@" (или аналогичным "$ *", не равным ).
$ set -- a=1 b=2 c=3
$ echo "$@"
a=1 b=2 c=3
#_=последний _аргумент И значение внутренней переменной оболочки _
изменится на последний аргумент исполняемой строки. Это НЕ верно почти для всех оболочек (jsh, ash, yash, dash, lksh, mksh, ksh93,attsh и, конечно же, csh и tcsh ), кроме bash.
$ echo one two last argument
one two last argument
$ echo "$_"
argument
$ echo This is a new: last_argument
This is a new: last_argument
$ echo "$_"
last_argument
Обратите внимание, что значение в $_
— это значение после расширения :
$ a="A New_Argument"
$ echo Something else to test: "$a"
Something else to test: A New_Argument
$ echo "$_"
A New_Argument
Вот почему при выполнении:
$ set -a myvar=99; set | grep 'myvar'
_=myvar=99
Вы получаете описание переменной оболочки '$ _'. Это тоже работает:
$ set -a myvar=99; declare -p _
declare -- _="myvar=99"
Перед расширением логического тома необходимо расширить группу томов, поскольку логический том содержится в группе томов.
Для выполнения этих операций необходимо размонтировать файловые системы. Самый простой способ размонтировать их и при этом иметь возможность работать в системе — запустить живую операционную систему Linux.
Обычно эта работающая система находится на флэш-накопителе, но, поскольку вы используете виртуальную машину, вы можете смонтировать ISO-файл работающей системы Linux на виртуальную машину в настройках виртуальной машины, а затем установить приоритет загрузки, чтобы она загружалась. из ИСО.
Я знаю, что Ubuntu и Fedora предлагают свои установочные образы в качестве живых операционных систем, как и многие другие дистрибутивы. Вам может потребоваться установитьlvm2
(пакет apt ), чтобы у вас были необходимые инструменты.
Чтобы расширить группу томов, вам необходимо создать новый физический раздел, используя свободное пространство, на которое может быть расширена группа томов.
fdisk /dev/sda/
В интерактивном меню выполните следующие действия:
n to create a new partition
3 for the third partition
Enter for default first sector
Enter again for default last sector
w to write changes and exit
Подсказки могут различаться от системы к системе, но в основном вам просто нужен новый раздел нужного размера. То, что я показал, будет использовать все свободное место на диске. Теперь раздел нужно превратить в раздел LVM или физический том
.pvcreate /dev/sda3
Затем вы можете расширить физический том, содержащий группу томов, в новый физический том, объединив их.
pvextend /dev/vg0 /dev/sda3
Теперь, если вы выполните vgs
, вы должны увидеть, что группа томов стала больше, давая место для расширения логического тома.
lvextend --size +350G /dev/mapper/vg0-rootvol
Логический том теперь должен быть больше.
lvs
вы не найдете больше места в /dev/sda2, потому что вы не расширили его и не создали новый раздел с новым пространством.
вы должны создать новый /dev/sda3 с 350 ГБ с помощью следующих команд:
fdisk /dev/sda
n create new
p primary partition
[enter]
//then change the partition type to lvm using this :
t to change type
8e is for lvm
когда закончите, введите w, чтобы записать и перезагрузить компьютер
теперь, после создания /dev/sda3, вы можете расширить желаемую vg с помощью следующей команды s:
pvcreate /dev/sda3
vgextend vg_xxx /dev/sda3
pvscan
vgdisplay
lvextend -l +350GB /dev/vg_xxx-lv_xxyy
xfs_growfs /dev/vg_xxx-lv_xxyy
lvdisplay
vgdisplay