我遇到了一个奇怪的问题。 Ubuntu 16 上的 Cron 调用与 CLI 调用。它检查 5 个不同的 docker 容器。
requestLogExistsInCon=$(docker exec -it myapp_${_docker_container_count}_1 sh -c "test -f /myapp/request-logger/requestLogger.log")
检查日志文件是否存在的简单测试。但在 Cron 作业中以 Root 身份运行它时,它会得到“1”。直接以 Root 身份运行 shell 脚本会收到“0”。我知道该文件存在,因此“0”是正确的(CLI 调用)。
Cron 调用:
*/3 * * * * root bash /mnt/backup/scripts/check_getSug.sh
以 root 身份调用 CLI:
bash /mnt/backup/scripts/check_getSug.sh
好吧,这太愚蠢了,我想通了并验证了它。我所要做的就是删除 docker 命令中的“-i”。可以理解的是,离开 -i 会使其成为交互式的,而 Cron 调用则不然。在 Cron 调用期间保持 STDIN 打开会造成混乱。我希望这对某人有帮助。