gpt4 book ai didi

linux - 脚本在手动运行时完全运行,但在从另一个脚本运行时会丢失命令

转载 作者:太空宇宙 更新时间:2023-11-04 12:51:22 25 4
gpt4 key购买 nike

我有 2 个脚本正在测试以在我的服务器上自动启动服务,但它们的行为很奇怪。

第一个脚本是

#!/bin/sh
screen -dmS Test_Screen
sleep 1
sudo sh cd.sh
echo "finished"

它运行完美,但它运行的脚本却没有,如下所示

#!/bin/sh
screen -S Test_Screen -X stuff "cd /home/Test"
sleep 1
screen -S Test_Screen -X eval "stuff \015"
sleep 1
echo "Complete"

如果我从命令行运行第二个脚本,它将完美运行,并将 CD 放入 screen 内的目录中。但是,如果它从第一个脚本运行,它不会 CD 进入 screen 内的正确目录,但它仍会打印“完成”。

我使用的是CENTOS 6.7和最新版的GNU screen

有什么想法吗?

最佳答案

这好像是session嵌套的问题。在您的第一个脚本中,您创建了一个名为 Test_Screen 的 session 。在您的第二个脚本中,-S 参数告诉 screen 创建同名 session 。这可能会导致 screen 退出,而不是 cd 进入正确的目录。

您可以将 cd 命令移到 sudo sh cd.sh 前面,并从第二个脚本中删除那些 screen 调用,只留下

stuff \015
echo "Complete"

使用正确的 screen 标志也应该有效。

#!/bin/sh
screen -dr Test_Screen -X stuff "cd /home/Test"
sleep 1
screen -dr Test_Screen -X eval "stuff \015"
sleep 1
echo "Complete"

要获得更现代的 screen 替代品,请查看 tmux .

关于linux - 脚本在手动运行时完全运行,但在从另一个脚本运行时会丢失命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37089009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com