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
私の場合は、ttyless SSHセッションでParted 3.2を使用しています。分離されたコードには次のテストがあるため、「Yes」コマンドハッキングは機能しません。
/* 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の前にダッシュ3つを入力するふりをします。私はそれが私たちを驚かせるべきだと思います。しかし、わかりません。
答え2
それでも効果がない場合は、それに依存して同じ目標を達成する必要がresizepart
あるかもしれません。rm
mkpart
もちろん、これを行うには、パーティションの種類と開始オフセットを決定するために、まずパーティションテーブルを解析する必要があります。必要な値を既に知っていない限り。結局、あなたも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
。