我有一个在xterm窗口中运行的游戏服务器。 每天一次,我想向任何玩家发送一条警告消息,在停止命令延迟到xterm窗口内的程序后,按照计划运行的脚本。这会导致清理和保存功能自动运行。 一旦程序关闭,我可以轻松地恢复它,但我不知道如何发送警告并先停止命令。
直接输入xterm命令是:
广播在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
现在,当你运行屏幕时,你会看到一个反向视频底线。根据 在你的操作系统上它可能是空的。