【发布时间】:2021-09-30 17:05:33
【问题描述】:
每分钟(用于测试)我正在运行一个 cronjob 来创建一个容器,在其中运行一个 nodejs 进程,然后也删除该容器。
它按常规命令运行,但通过 crontab 运行时无法产生任何结果或输出。
这是我的 crontab
*/1 * * * * sh /location_to_cron/cron.sh >> /location_to_cron/backup.log
这里是 cron shell 脚本的内容
CONTAINER_NAME="node_backup_repo"
echo "Creating Container to create backup, name: $CONTAINER_NAME"
docker run --name $CONTAINER_NAME -v /location_to_backup_dir:/app --dns="my_custom_dns" -w /app node:16 "backupscript.js" >> /location_to_cron/backup.log
echo "Removing container $CONTAINER_NAME"
docker rm $CONTAINER_NAME
echo "All done..."
Syslog 条目表明 crontab 正在以我的用户身份执行,这符合预期。这里有什么问题?
编辑: 修改的工作脚本 - 修复是添加到 docker 二进制文件的路径。
CONTAINER_NAME="node_backup_repo"
echo "Creating Container to do Backup, name: $CONTAINER_NAME"
/snap/bin/docker run --name $CONTAINER_NAME -v /location_to_backup_dir:/app --dns="my_custom_dns" -w /app node:16 "backupscript.js" >> /location_to_cron/backup.log
echo "Removing container $CONTAINER_NAME"
/snap/bin/docker rm $CONTAINER_NAME
echo "All done..."
【问题讨论】:
-
没有
-it,标准输出将没有结果。 -
它不应该是交互式的。但是它确实需要连接到 STDOUT 才能执行 cron 吗?
-
cron不在乎,显然很高兴地运行它。但是如果没有我认为至少-t,你不会得到任何结果,但也许你也需要-i。 -
你可以
cd /location_to_backup_dir; node backupscript.js代替尝试运行 Docker 容器吗?