GNU 在脚本中分割了 resizepart

GNU 在脚本中分割了 resizepart

我想使用该yes命令,以便 GNU parted 不等待用户输入:

root@195-xxx-xxx-xxx:/proc# parted /dev/sda unit B resizepart 2 1166016512B
 Warning: Shrinking a partition can cause data loss, are you sure you want 
 to continue?
Yes/No? y                                                                 
Information: You may need to update /etc/fstab.
root@195-xxx-xxx-xxx:/proc# echo $?
0

然而,使用yes在这里不起作用:

root@195-xxx-xxx-xxx:/proc# yes | parted /dev/sda unit B resizepart 2 166016512B
 Warning: Shrinking a partition can cause data loss, are you sure you 
 want to continue?
root@195-xxx-xxx-xxx:/proc# echo $?
1

编辑:

--script选项也不起作用:

root@195-xxx-xxx-xxx:/proc# parted --script /dev/sda unit B resizepart 2 1166016512B
 Warning: Shrinking a partition can cause data loss, are you sure you 
 want to continue?
root@195-xxx-xxx-xxx:/proc# echo $?
1

答案1

就我而言,我在无 tty 的 SSH 会话中使用 Parted 3.2。 “Yes”命令 hack 不起作用,因为分开的代码有以下测试:

    /* script-mode: don't handle the exception */
    if (opt_script_mode || (!isatty (0) && !pretend_input_tty))
            return PED_EXCEPTION_UNHANDLED;

请注意“isatty”测试,该测试将会失败。 “pretend_input_tty”是一个未记录的命令行选项,可以通过 ---pretend-input-tty 打开。

因此,如果您想使用脚本中的parted,我的答案如下:

/sbin/parted -a optimal /dev/loop1 ---pretend-input-tty resizepart 4 Yes 522239s

如果这不起作用,请尝试移至Yes末尾:

/sbin/parted -a optimal /dev/loop1 ---pretend-input-tty resizepart 4 522239s Yes

笔记假装输入 tty 前面的三个破折号。我想这应该能吓跑我们。但不确定。

答案2

如果resizepart不起作用,您可能不得不诉诸rmmkpart实现同样的目标。

当然,这需要您首先解析分区表以确定分区类型和起始偏移量。除非您已经知道必要的值。毕竟你166016512B也必须从某个地方获取。

parted可以--machine选择生成易于解析的输出。另一方面,实际解析它的例子并不容易找到。 ;)

答案3

可以使用以下命令来使用 GNU parted 调整大小:

echo yes | parted /dev/sda ---pretend-input-tty resizepart 2 100GB

答案4

该脚本对分开版本的变化有点脆弱,但对我来说很有效,并且如果按照@frostschutz的建议重建分区表因调整扩展/多个分区的大小而变得复杂,则特别有用:

脚本

#!/bin/bash

echo "Resizing partition ${2} on ${1} with new end ${3}"

parted "${1}" ---pretend-input-tty <<EOF
resizepart
${2}
${3}
Yes
quit
EOF

echo "Done"

使用示例:

sudo ./resize_partition.sh /dev/loop0 2 15757970s

注意我使用的是扇区中指定的分区端点,因此s.

相关内容