首页 > 解决方案 > 为什么我的 shell 脚本('docker exec')中的特定行无法作为 cron 作业运行?

问题描述

一直在撕扯我的头发......对于设置背景 - 我有一个运行无纸化-ng的docker容器,并且正在尝试自动化备份。我正在运行 rsync,将一个文件夹镜像到我的备份驱动器上。

我有一个简短的 shell 脚本/home/user/paperless-backup.sh

#!/bin/sh -i
# Paperless backup shell script

cd /home/user/paperless-ng 
docker-compose exec -T webserver document_exporter ../export
echo 'The paperless backup shell script job has run. Runtime:' >> /home/user/cron-test.txt
date >> /home/user/cron-test.txt

我使用以下行在我的用户 cron 作业列表中包含crontab -e

SHELL=/bin/bash
* * * * * /home/user/paperless-backup.sh

所以:

但是当作为 cron 作业运行时,它似乎只是跳过了开始的那一行docker-compose……</p>

任何帮助将不胜感激!

标签: linuxbashdockershellcron

解决方案


As helpfully pointed out by @Barmar and @Ted Lyngmo, the cron environment didn't have the same PATH variables as my user, so just needed it explicitly setting out.

Added a line using export PATH="$PATH:/path/to/container and seems all good now.


推荐阅读