我正在尝试使用 rc.local 执行此命令:
wget http://address/file -P /root/ 2>&1 | stdbuf -o0 awk '/[.] +[0-9][0-9]?[0-9]?%/ { print substr($0,63,3) }' | whiptail --gauge "Progress" 6 78 0
上述命令显示了某个文件的下载百分比。登录后,它在用户的 shell 中运行没有任何问题,但当我尝试从 rc.local 运行它时,我得到:
open /dev/tty: No such device or address
我发现“2>$1”确实存在问题,并且:https://stackoverflow.com/questions/21786633/init-script-dev-tty-no-such-device-or-address-error-on-redirect有人建议将“2>&1”替换为“3>&2 2>&1 1>&3 3>&-”。不幸的是,这对我来说不起作用。
更奇怪的是,这个命令在 Ubuntu 12.04 中有效,但在 14.04.1 中无效。有人知道如何使这个命令(或重定向)起作用吗?
答案1
如果它在 shell 中有效,但在 rc.local 中无效,则很可能与环境有关。我要做的第一件事是用完整路径替换命令。例如:
/usr/bin/wget http://address/file -P /root/ 2>&1 | /usr/bin/stdbuf ...