【问题标题】:Run multiple new terminals from terminal从终端运行多个新终端
【发布时间】:2019-10-09 15:19:48
【问题描述】:

我试图找到解决方案,但我不知道该怎么做。 我想在树莓派上启动终端 x 次,以并行运行 python 脚本。

我尝试了gnome-terminal 或xterm,但没有做我想做的事或没有找到写的命令。

这个命令:

#!/bin/bashint
for word in $(cat inputs.txt); do python3 enttest.py $word; done

此命令从inputs.txt 文件中获取每一行并将其作为参数传递给运行 x 小时(一行,一个参数)的 python 脚本。 我需要它根据inputs.txt 文件中有多少行来启动 x 终端。我想要这个自动的,因为输入将被生成/动态。该脚本非常简单,我手动启动了 12 个终端,这些终端在慢速树莓派上运行良好。 输入文件可能如下所示:

input1
input2

没有像空格或特殊字符这样的输入的疯狂东西。将来我将在输入文件中添加更多参数,但这些参数可以用分隔符分隔。 谢谢。

【问题讨论】:

    标签: linux raspberry-pi3 raspbian


    【解决方案1】:

    您可以在不启动新终端的情况下做到这一点。如果你这样做:

    #!/bin/bashint
    for word in $(cat inputs.txt)
        do python3 enttest.py "$word" &
    done
    

    bash 将并行执行脚本(它将为每个调用创建一个新进程),因为命令后有一个与号 (&)。

    所以程序应该执行得相当快,然后python3 enttest.py 任务将在后台运行。

    您可以在此处阅读更多内容:https://bashitout.com/2013/05/18/Ampersands-on-the-command-line.html

    【讨论】:

    • bash /home/pi/Desktop/runMultiple.sh 我在这个 shell 脚本中运行它,我将其更改为可执行文件,但我收到此错误syntax error near unexpected token ';' ...所以分号是问题所在....
    • 啊,是的,我编辑了我的答案,您实际上需要在这里使用换行符而不是 ;。告诉我这是否对你有用!
    • ./runMultiple.sh: line 3: $'\r\r': command not found 这对我也不起作用。
    • 这很奇怪,它对我来说是一个虚拟程序。而且我不知道\r 来自哪里。尝试在$word 周围加上引号?
    • 我重新创建了文件,但不再出现此错误...它最初是在 W10 上创建的,然后移至 Pi,第二个来自 Pi。无论如何...我在终端中没有看到任何打印,我知道它在后台运行,但我不应该看到 python 脚本的一些打印吗?
    猜你喜欢
    • 2012-11-18
    • 1970-01-01
    • 2021-08-16
    • 2011-10-30
    • 2020-01-04
    • 2011-05-06
    • 2012-03-03
    • 2017-08-26
    • 2011-08-18
    相关资源
    最近更新 更多