쉘 스크립트의 Augeas

쉘 스크립트의 Augeas

예를 들어 쉘 스크립트에서 augtool을 사용하려고 합니다.

#!/bin/bash

augtool <<-EOF
print /augeas/load
EOF

그러나 이 스크립트를 실행하면 top cmd를 통해 출력이 없고 CPU 사용량이 100%인 상태로 무기한 실행됩니다.

다음을 사용하여 명령을 성공적으로 실행할 수 있습니다.

$augtool
$print /augeas/load
/augeas/load/Webmin/excl[4] = "/*.dpkg-bak"
/augeas/load/Webmin/excl[5] = "/*.dpkg-new"
/augeas/load/Webmin/excl[6] = "/*.dpkg-old"
/augeas/load/Webmin/excl[7] = "/*.rpmsave"
/augeas/load/Webmin/excl[8] = "/*.rpmnew"
/augeas/load/Webmin/excl[9] = "/*~"
... lots of output...
augtool> quit

Ubuntu 12.04.2를 사용하고 있으며 augtool 버전은 0.10.0입니다.

내 질문은: 쉘 스크립트에서 augtool을 사용하는 방법은 무엇입니까?


[편집하다]

strace 명령을 실행했는데 다음 오류가 발생했습니다.

lstat64("/augeas/load/", 0xbfc637d8) = -1 ENOENT (No such file or directory)

그런 다음 계속 반복되어 다음과 같이 표시됩니다.

write(2, "\7", 1)                 = 1
rt_sigprocmask(SIG_BLOCK, [INT], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
read(0, "", 1)                    = 0

그러나 이 스크립트를 루트로 실행하면 성공적으로 실행됩니다.

답변1

@Flup처럼 문제를 재현할 수 없습니다.

augtool또한 실제로 이를 통역사 로 사용할 수 있습니다 .

#!/usr/bin/augtool -f
print /augeas/load

스크립트 끝에서 명시적으로 호출하지 않고 수정하려면 -s( ) 플래그와 결합하세요.--autosavesave

답변2

augtool 명령을 명시적으로 종료하면 어떻게 됩니까?

#!/bin/bash

augtool <<-EOF
print /augeas/load
quit
EOF

관련 정보