Cron и Bash скрипт: невозможно выполнить - PullRequest
0 голосов
/ 26 февраля 2019

Я создал скрипт bash, который выполняет команду docker для выгрузки базы данных MySQL:

dump_db.sh

#!/bin/bash

time=$( date +%Y%m%d%H%M )

currdir=$( pwd )

cat $currdir/container_list | while read container; do
        echo "" | docker exec -i $container mysqldump -u <user> -p<password> <dbname> > $currdir/$container-$time.sql
done

Если япопробуйте запустить скрипт вручную, все отлично работает , но если я использую cron, скрипт не выполняется.

Мой crontab:

PATH=<same environment>

26 17 * * * /bin/sh /path/to/script/dump_db.sh

, как вы можетевидите, я пытался также экспортировать PATH (и проверил его с помощью команды env в crontab), но ничего.Я также пробовал с этими строками

26 17 * * * /bin/bash /path/to/script/dump_db.sh
26 17 * * * /path/to/script/dump_db.sh

Кроме того, также не работает простой скрипт bash, такой как:

#!/bin/bash

touch test_touch.txt

, а простая команда touch через cron это нормально.

Где я не прав?

1 Ответ

0 голосов
/ 26 февраля 2019

Пожалуйста, проверьте, есть ли у сценария разрешение на выполнение для другого пользователя.Когда вы работаете вручную, вы работаете с пользователем, который вошел в систему. Но когда он работает из Cron, это другой пользователь.Таким образом, этот пользователь должен иметь разрешение на выполнение этого сценария.

Вы можете проверить этот пост для получения дополнительной помощи

...