将命令从预定脚本传递到在xterm窗口中运行的程序

时间:2015-09-20 13:20:21

标签: xterm

我有一个在xterm窗口中运行的游戏服务器。 每天一次,我想向任何玩家发送一条警告消息,在停止命令延迟到xterm窗口内的程序后,按照计划运行的脚本。这会导致清理和保存功能自动运行。 一旦程序关闭,我可以轻松地恢复它,但我不知道如何发送警告并先停止命令。

直接输入xterm命令是:

广播在2分钟内重启

(然后等待2分钟,然后简单地说):

停止

不需要/或其他字符。

任何帮助?

2 个答案:

答案 0 :(得分:0)

您是否还需要从xterm本身(不时)输入内容?或者您是否希望服务器完全由外部命令驱动?

您的程序是否面向行?你可以先尝试一下:

mkfifo /tmp/f
tail -f /tmp/f | myprogram

然后尝试使用

将命令发送到您的程序(来自另一个xterm)
echo "mycommand" > /tmp/f

您也可以考虑使用netcat将程序转换为服务器:

然后你可以编写一个shell脚本来将所需的命令发送到你的“服务器”。

如果你对C编程有一点了解;我记得曾经攻击script程序(这很容易做到:代码很短),以便启动另一个程序,但是从FIFO文件中读取命令(然后shell脚本很容易写入推动你的计划。)

答案 1 :(得分:0)

您可能尝试的是在screen会话中运行您的程序。 然后,您可以从cron向会话发送命令 就像你输入它们一样。

在你的xterm中,在启动程序之前执行:

screen -S myscreen bash

(或者你甚至可以用你的程序替换bash)。然后从你的cron

screen -S myscreen -X stuff 'broadcast Reboot in 2 minutes\n'
sleep 120
screen -S myscreen -X stuff 'stop\n'

将输入该文字。您可以使用screen -S myscreen -X quit退出会话 或者输入 ctrl-a \

屏幕旨在透明。要轻松看到你在屏幕内,你可以 在xterm的底部配置一个永久状态栏:

echo 'hardstatus alwayslastline' >~/.screenrc

现在,当你运行屏幕时,你会看到一个反向视频底线。根据 在你的操作系统上它可能是空的。