у меня есть 2 диска на моей машине, но каждый не использован. Я хотел бы использовать неиспользованный диск для домашнего раздела (как в перемещении моего текущего корневого каталога в неиспользованный диск). Действительно ли это возможно без переустановки и раз так как я иду о выполнении ее?
Сценарий, который я запускаю каждые несколько секунд, чтобы мой сервер Dell был прохладным и тихим. Обновите get_temp оборудования.
#!/bin/env python3
import os
import json
MIN_FAN = 5
MAX_FAN = 100
MIN_TEMP = 50 # fans at min at this temp
MAX_TEMP = 80 # fans at max at this temp
TEMP_POW = 3 # decrease for cooler server, increase for quiter
def get_temp():
sensors = json.loads(os.popen('/usr/bin/sensors -j').read())
temp0 = sensors["coretemp-isa-0000"]["Package id 0"]["temp1_input"]
temp1 = sensors["coretemp-isa-0001"]["Package id 1"]["temp1_input"]
return max(temp0, temp1)
def determine_fan_level(temp):
x = min(1, max(0, (temp - MIN_TEMP) / (MAX_TEMP - MIN_TEMP)))
return int(min(MAX_FAN, max(MIN_FAN, pow(x, TEMP_POW)*(MAX_FAN-MIN_FAN) + MIN_FAN)))
def set_fan(fan_level):
# manual fan control
os.system("ipmitool raw 0x30 0x30 0x01 0x00")
# set fan level
cmd = "ipmitool raw 0x30 0x30 0x02 0xff " + hex(fan_level)
os.system(cmd)
temp = get_temp()
fan = determine_fan_level(temp)
print("temp", temp, "fan", fan)
set_fan(fan)
-121--912769- Позвольте мне показать, как сделать это авк решение более идиоматическим (см. awk info page on stackoverflow).
Начиная с:
$ seq 10 20 | awk '{if ($0 ~ /11/) {n=NR+6}; if (NR<n) next; print $0}'
10
17
18
19
20
Сначала мы возьмем операторы if
и превратим их в условие {действие}
строки
awk '
$0 ~ /11/ {n=NR+6}
NR < n {next}
{print $0}
'
Тогда мы будем использовать $0
в качестве значения по умолчанию для некоторых вещей:
awk '
/11/ {n=NR+6}
NR < n {next}
{print}
'
Затем мы примем {print}
в качестве действия по умолчанию, если условие имеет значение true
awk '
/11/ {n=NR+6}
NR < n {next}
1
'
Затем мы инвертируем условие NR < n
, чтобы удалить next
awk '
/11/ {n=NR+6}
NR >= n
'
и можем сделать его однослойным:
awk '/11/ {n=NR+6} NR >= n'
Это приводит к тому же результату
$ seq 10 20 | awk '/11/ {n=NR+6} NR >= n'
10
17
18
19
20
Сравнение:
awk '{if ($0 ~ /11/) {n=NR+6}; if (NR<n) next; print $0}'
awk '/11/ {n=NR+6} NR >= n'
В качестве последнего шага может потребоваться передать образец и значение N в качестве параметров в состояние awk, так что они не должны быть жестко закодированы. Это раздувает вызов неловкости, но может быть более гибким для вас:
awk -v patt="11" -v N=6 '$0 ~ patt {n = NR + N} NR >= n'
Поместив параметры после сценария awk, можно удалить -v
, сделав команду немного короче:
awk '$0 ~ patt {n = NR + N} NR >= n' patt=11 N=6
Одним из преимуществ размещения переменных после тела неловкости является то, что они могут получать различные значения для каждого файла:
awk '$0 ~ patt {n = NR + N} NR >= n' patt=11 N=6 file1 N=10 file2
-121--910907- Во время этого процесса следует избегать использования каталога /home
любым приложением, чтобы лучше было войти не из графического интерфейса, а из текстовой консоли (доступной после нажатия клавиш Ctrl + Alt + F3).
Выполните все действия с правами root (сначала запустите sudo -i
).
Создайте раздел на неиспользуемом диске (с помощью fdisk
) и отформатируйте его (создайте файловую систему) с помощью mkfs
.
Переименуйте каталог /home
в /old _ home
. Создание нового, пустого
каталог /home
с тем же владельцем и теми же разрешениями, что и /old _ home
.
Установите новый раздел, только что отформатированный в /home
. Например, если новым разделом является /dev/sdb1
, используйте команду mount/dev/sdb1/home
.
Скопируйте все данные от /old _ home
до /home
, сохраняя права собственности, разрешения и т.д. (для этого можно использовать rsync
, как указано в комментарии выше: rsync -a/ old_home//home/
).
Отредактируйте файл /etc/fstab
таким образом, чтобы новый файл /home
автоматически монтировался при перезагрузке системы. Ваш /etc/fstab
в настоящее время содержит строку для диска, который вы уже используете, это может быть что-то вроде этого (я делаю это сейчас, ваш может быть другим):
/dev/sda1 / ext4 defaults 0 1
Добавьте аналогичную строку для вашего нового раздела, который говорит, например:
/dev/sdb1 /home ext4 defaults 0 2
(если у вашего файла есть что-то другое вместо «значений по умолчанию» просто скопируйте эти параметры в новую строку).
Перезагрузите систему ( shutdown -r now
) и после перезагрузки проверьте, все ли работает правильно (т. е. все, что должно быть под /дом
есть). Если да,затем удалите каталог /old _ home
- он больше не нужен.