我在CentOS 6.5中使用$KARAF_HOME/bin/start
以服务器模式启动了Apache Karaf 3.0.0。然后我想使用$KARAF_HOME/bin/client
运行几个命令,并捕获这些命令的输出,以确保命令成功运行。输出确实在我的控制台上吐出,但我永远无法将其重定向到文件中。好像Karaf没有向输出流或错误流写任何东西。我尝试了以下方法:
[apache-karaf-3.0.0]$ ./bin/start clean
[apache-karaf-3.0.0]$ ./bin/client "bundle:list"
Logging in as karaf
282 [pool-2-thread-3] WARN org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /0.0.0.0:8101 presented unverified key:
START LEVEL 100 , List Threshold: 50
ID | State | Lvl | Version | Name
------------------------------------------------------------------------------------
91 | Active | 80 | 1.8.0 | Commons Codec
92 | Active | 80 | 2.6 | Commons Lang
93 | Active | 80 | 15.0.0 | Guava: Google Core Libraries for Java
[apache-karaf-3.0.0]$ ./bin/client "bundle:list" >& bundleList
[apache-karaf-3.0.0]$ cat bundleList
null
没有任何内容写入文件bundleList
。管道输出似乎也无济于事。
答案 0 :(得分:4)
要使Aviv的解决方案有效,只需使用管道,例如“bundle:list | tac -f / tmp / yourfile”
答案 1 :(得分:3)
对于命令行,我使用“tac”并使用-f重定向到文件,在Karaf 3.0.3中,尝试或了解它的用途--help
答案 2 :(得分:2)
我能够在Karaf 3.0.2版本中捕获客户端输出。
user@hostname:~$ client bundle:list > bundleinfo.txt
这导致在控制台上显示以下调试信息:
2053 [sshd-SshClient [36c8e545] -nio2-thread-2] WARN org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - 服务器位于[/0.0.0.0:8101,DSA,xx:xx:xx:xx :XX:XX:XX:C 2:3a:5a:9b:87:ed:e0:b2:6a]提供未验证的{}键:{}
..当然还有包含预期内容的bundleinfo.txt文件:
user@hostname:~$ head -5 bundleinfo.txt
START LEVEL 100 , List Threshold: 50
ID | State | Lvl | Version | Name
---------------------------------------------------------------------------------------------
38 | Active | 80 | 3.2.5.RELEASE | Spring Security Core
39 | Active | 80 | 1.0.0.1 | Apache ServiceMix :: Bundles :: javax.inject