【问题标题】:Run shell script from Java to send data via USB从 Java 运行 shell 脚本以通过 USB 发送数据
【发布时间】:2016-01-26 14:18:44
【问题描述】:

正如标题中指定的那样,我正在尝试通过 USB 将数据发送到我的 ODROID-Show 外部屏幕。我正在运行一个发送此类数据的 shell 脚本。问题是我可以简单地通过终端运行命令,它运行成功,数据通过 USB 端口发送到我的小屏幕。当我尝试通过 Java 运行相同的命令时,什么都没有发生。

Process proc = Runtime.getRuntime().exec("/bin/bash -c /home/ahmed/ODROID-SHOW-master/example/linux/images.sh /");

指定的命令应该具有 root 权限才能运行。那,我已经切换到root,然后运行代码,没有任何反应。有什么想法可以解决这样的问题吗?

编辑:

如果您可以显示执行以 sudo 为前缀的给定命令的代码,这绝对有效。

我能够以 root 身份运行该程序。但是,损坏的数据被发送到 ODROIDscreen 而不是有效的图像。虽然它在通过终端时成功传输,但有什么想法会发生这种情况吗?

【问题讨论】:

  • 在终端中,您是否使用确切的语法 /bin/bash -c /home/ahmed/ODROID-SHOW-master/example/linux/images.sh / 运行它?
  • 不,考虑到我目前在脚本目录中,我只能调用“sudo ./images.sh”。我也可以调用“sudo /home/ahmed/ODROID-SHOW-master/example/linux/images.sh”
  • 您究竟是如何“切换到 root 并运行代码”的?我认为您应该能够使用与 Runtime.exec 场景相同的 cmd 行和用户从终端运行脚本。
  • 你能做 sudo /bin/bash -c /home/ahmed/ODROID-SHOW-master/example/linux/images.sh / 吗?

标签: java linux shell odroid


【解决方案1】:

我会检查 bash 解释器执行的脚本是否需要在执行前设置某些环境变量。

我会在已执行的 shell 脚本中添加一个调试行来转储环境,例如“env > my_dump_env.txt”,然后从命令行和 Java 运行脚本并进行比较,看看缺少什么或是什么不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    相关资源
    最近更新 更多