![我无法从 cron 使用 screen stuff 命令,但我可以从 shell 脚本中使用(同一用户)](https://linux22.com/image/548917/%E6%88%91%E6%97%A0%E6%B3%95%E4%BB%8E%20cron%20%E4%BD%BF%E7%94%A8%20screen%20stuff%20%E5%91%BD%E4%BB%A4%EF%BC%8C%E4%BD%86%E6%88%91%E5%8F%AF%E4%BB%A5%E4%BB%8E%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%EF%BC%88%E5%90%8C%E4%B8%80%E7%94%A8%E6%88%B7%EF%BC%89.png)
我在 FreeBSD 上有一个 shell 脚本,它会向正在运行的 screen 会话(运行 Minecraft 服务器)发送一些 screen stuff 命令。当我手动执行它时,这些命令会起作用。
但是,如果我将相同的脚本放入同一用户的 crontab,它确实会执行,但屏幕内容命令无法到达正在运行的屏幕进程。
我已经检查了 /var/log/cron 甚至 >> 输出到日志文件,我发现与屏幕命令无关的脚本部分确实执行了。
我的 shell 脚本如下所示:
screen -S minecraft -X stuff "say Server is going to render the world now.
"
screen -S minecraft -X stuff "say You might feel some slight turbulence.
"
screen -S minecraft -X stuff "save-all
"
screen -S minecraft -X stuff "save-off
"
cd /home/minecraft/bin/mcmap-src
./mcmap /srv/minecraft/cascada
screen -S minecraft -X stuff "save-on
"
谁能帮我这个?
[编辑]
哎呀,事实证明这与执行用户无关,但与必须使用路径“/usr/local/bin/screen”而不是“screen”有关。
固定的!
答案1
从编辑到问题。
事实证明,这与执行用户无关,但与必须使用路径“/usr/local/bin/screen”而不是“screen”有关。