所以我试图使用这个命令:
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...
答案 0 :(得分:0)
我认为你得到了你所要求的......
从屏幕的手册页:
-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.
另一方面,你使用-hold for xterm:
-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
的会话,你会看到输出。