예를 들어 쉘 스크립트에서 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
( ) 플래그와 결합하세요.--autosave
save
답변2
augtool 명령을 명시적으로 종료하면 어떻게 됩니까?
#!/bin/bash
augtool <<-EOF
print /augeas/load
quit
EOF