gpt4 book ai didi

linux - xterm 不运行 shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:03 26 4
gpt4 key购买 nike

所以我正在尝试使用这个命令:

export DISPLAY=:1; /usr/bin/xterm -hold -e /path/to/shscript

shscript 是:

#!/bin/bash
echo "Restarting ... $(date)" >> /var/log/mw2.txt
if screen -ls | grep -q 'test'; then
screen -X -S test quit
sleep 1000
screen -d -m -S test wine iw4m.exe -dedicated -console +dw_licensefile license.dat +set net_port "28960" +set party_maxplayers 18 +exec server.cfg +map_rotate +set fs_game "mods/tsd"
else
screen -d -m -S test wine iw4m.exe -dedicated -console +dw_licensefile license.dat +set net_port "28960" +set party_maxplayers 18 +exec server.cfg +map_rotate +set fs_game "mods/tsd"
fi

所以我想启动一个新的 xterm 窗口并运行一个 shell 脚本。但是无论我尝试使用什么 shell 脚本,它都不会运行它。它只是一片空白。所有其他命令都有效,但是当我在其中放入一个 shell 脚本时,它会变成空白,什么也不做。我找不到解决方案,请帮忙,谢谢。

我用 set -x 得到这个:

++ date
+ echo 'Restarting ... (date)'
+ grep -q test
+ screen -ls
+ screen -d -m -S test -wine iw4m etc...

最佳答案

我想你得到的正是你所要求的......

来自屏幕的手册页:

   -d -m   Start screen in "detached" mode. This creates a new session but
doesn't attach to it. This is useful for system startup
scripts.

另一方面,您对 xterm 使用 -hold:

   -hold   Turn  on  the  hold  resource, i.e., xterm will not immediately
destroy its window when the shell command completes. It will
wait until you use the window manager to destroy/kill the win‐
dow, or if you use the menu entries that send a signal, e.g.,
HUP or KILL.

这正是您所看到的。 xterm 启动,执行运行的屏幕,但您看不到输出,因为屏幕没有附加到虚拟终端。由于屏幕已分离 shell 脚本退出并且 xterm 保留窗口供您在空闲时销毁它。

我敢打赌,如果在另一个 xterm 中使用 screen -S test 附加到 session ,您将看到输出。

关于linux - xterm 不运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33855007/

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