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 앞에 대시 세 개를 입력하는 척합니다. 나는 그것이 우리를 놀라게 해야 한다고 생각합니다. 하지만 확실하지 않습니다.
답변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
.