我正在尝试在 shell 脚本中使用 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。
我的问题是:如何在shell脚本中使用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
但是,如果我用 root 执行此脚本,它会成功运行
答案1
就像@Flup一样,我无法重现你的问题。
另请注意,您实际上也可以用作augtool
解释器:
#!/usr/bin/augtool -f
print /augeas/load
如果您想进行修改而不在脚本末尾显式调用,请将其与-s
( ) 标志结合起来。--autosave
save
答案2
如果您从 augtool 命令中明确退出,会发生什么?
#!/bin/bash
augtool <<-EOF
print /augeas/load
quit
EOF