我正在使用ipmitool通过SOL获取远程控制台输出。这是从后台进程中调用的。当我在前台调用它时,它会正确地将控制台输出记录到日志文件中。但是在后台调用时,ipmitool不起作用。知道为什么吗?
答案 0 :(得分:0)
ipmitool在突出输出(stdout)文件描述符上写入SOL数据。在后台调用时,ipmitool无法写入stdout,因为您没有看到控制台日志。
如果要将其作为后台进程运行,请将stdout重定向到文件并拖尾该文件。
答案 1 :(得分:0)
我有这个问题。重定向stdout的解决方案还不够。 最终工作:
tail -f /dev/null --pid="$$" \
| ipmitool -H "$ip" -U "$username" -P "$password" -I lanplus sol activate \
2>> stderr.txt >> stdout.txt &
使用tail -f /dev/null
的想法来自this answer。那里列出了一些其他解决方案,但我没有尝试过。
--pid="$$"
表示当父进程被杀死时,此进程将被终止,这正是我想要的,但可能适合您的需求,也可能不适合您。您可能需要一些机制来避免tail -f
僵尸。