【发布时间】:2011-09-07 15:45:47
【问题描述】:
我有一个 .sh 脚本,它结合了许多其他脚本,由 Windows 应用程序中的 jsch ChannelExec 调用。
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("/foo/bar/foobar.sh");
channel.connect();
如果我运行“nohup /foo/bar/foobar.sh >> /path/to/foo.log &”之类的命令,所有长期工作(数据库操作、文件处理等)似乎都会丢失.
检查日志文件,只找到那些回显的东西(长期操作前后,计算运行时间等)。
我检查了权限,$PATH,将源 /etc/profile 添加到我的 .sh 中,但这些都不起作用。
但是当我正常运行命令时(同步运行,将所有回显输出打印到我在 windows 上的 java 客户端),一切都很顺利。
这是一个非常具体的问题。 希望有经验的人帮帮我。
提前致谢。
韩
【问题讨论】:
-
您确定它们迷路了,还是当您检查输出时它们仍然在运行?
-
另外,用股票
ssh客户端试试看它是否与JSch有关(我想不是)。 -
嗨。我可以确保他们迷路了。如果它们有效,一些记录应该被加载到数据库中。
-
我尝试使用 ChannelShell 执行这些命令,一切顺利。经过一些测试,我发现我必须在客户端等待一些命令来打印输出,即使我使用 nohup 模式。我会继续测试...