bash 脚本中的屏幕

bash 脚本中的屏幕

我正在使用 bash 脚本,我需要创建一个屏幕,执行具有内存限制的特定命令并分离屏幕。

我一直在尝试类似的事情:

#!/bin/bash
for i in 1 2 3 4 5 6 7
do
    test="test"$i
    screen -dmS test
    screen -r test -X ulimit -v 2199552
    screen -r test -X ./my_command $i
done

...但这不起作用。特别是,屏幕已创建,但 ./my_command 未执行。有什么提示吗?

答案1

首先,你想要的$test不是剧本中的台词 testscreen

-X 命令正在等待屏幕命令,不命令。您可以查看手册页并找出如何告诉 screen 将字符输入到正在运行的 shell 中;这可能是可能的,但我在几分钟内找不到它。 (啊哈,这是屏幕“stuff”命令: 从外部将输入发送到屏幕会话

或者,你也可以这样做:

#!/bin/bash
for i in 1 2 3
do
    test="test"$i
    screen -dmS $test ./my_command $i
done

它将在新的屏幕窗口中运行裸露的 ./my_command $i 。

您还可以使用这样的命令行:

    screen -dmS $test  sh -c "ulimit 1234;./my_command $i; exec /bin/bash"

sh -c "foobar"将导致运行一个新的 shell 并执行该foobar命令。这里我们让它运行几个 shell 命令。最后一个exec /bin/bash启动另一个 shell,这样如果 ./my_command 退出,您就不会丢失屏幕。

相关内容