linux – 使用java启动远程进程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 使用java启动远程进程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1947字,纯文字阅读大概需要3分钟。
内容图文
![linux – 使用java启动远程进程](/upload/InfoBanner/zyjiaocheng/962/db3b3c28e51c408aaff986d093c5eeca.jpg)
机器A使用sshpass连接到远程机器B,并且远程机器B不直接对root提供ssh访问权限,因此我通过用户连接到它并使用sudo,并且当他执行sudo su时我也为用户禁用了密码.当命令很简单时,例如ls -lrt / some / dir,我得到了命令的正确输出,但是当我在远程机器上启动服务器/ shell脚本时(服务器在脚本运行1分钟时没有时间),输出显示但是bash没有恢复正常(即看起来它正在做一些工作,但我知道服务器已启动/脚本已完成).
使用的命令:
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@192.168.0.3 "sudo ls /dev/ttyUSB*"
上面工作正常,我得到输出和bash返回所以我可以写更多的命令和做的东西.
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@192.168.0.3 "sudo /root/path/server &"
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@192.168.0.3 "sudo /root/path/to/script/scriptTakes1Minute param1 param2"
但是,上述方法并不像预期的那样有效.看起来它正在工作,但不是bash没有返回,所以我不能进一步编写命令.
我无法共享脚本或服务器程序,因为它是公司的代码.但是服务器代码使用UNIX数据报套接字进行通信.
/* Creating a UNIX datagram socket for Server Application */
if ((sock = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
{
perror("server: socket");
exit(1);
}
编辑1:
当我尝试
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@192.168.0.3 "sudo /root/path/server >/dev/null &2>1 </dev/null &"
服务器程序正确启动,但脚本没有按预期工作,并没有返回bash,但一旦按下ENTER返回bash,我知道这意味着什么,但不知道是什么.
编辑2:
我无法将输出重定向到文件,因为我不知道该命令需要多长时间才能运行,可能需要一分钟或几分钟.
编辑3:
我找到了一些有用的东西(我猜).保留在该计算机B上的脚本在后台创建了很少的进程,因此在从机器B手动杀死所有这些后台进程之前,sshpass不会返回.只要这些程序被终止,我们就会获得该输出以及bash背部.
编辑4:
该脚本创建在后台运行的8 ppp会话.
解决方法:
只需要再使用一行代码process.waitFor();这将解决您的问题: –
process = Runtime.getRuntime().exec(SHELL_COMMAND);
process.waitFor();// add this line to complete execution of your shell command
System.out.println("LLLLLLLOOOOOOOOOKKKKKKKK started process");
内容总结
以上是互联网集市为您收集整理的linux – 使用java启动远程进程全部内容,希望文章能够帮你解决linux – 使用java启动远程进程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。