Пытаюсь заставить выполниться скрипт с помощью cron.
Есть юзер на сервере, назовем vpsuser
Есть в его домашней папке скрипт backup.sh
Если запустить
$ sudo ~/backup.sh >> ~/backup.log
, то все ОК, а вот так
* * * * * /home/vpsuser/backup.sh >> /home/vpsuser/backup.log
создается пустой /home/vpsuser/backup.log с правами root:root.
ЧЯДНТ?
======================================
#UPD1: Добавил скрипт backup.sh
/home/vpsuser/backup_sources
/home/vpsuser/backup.sh
/home/vpsuser/backup_sources
/home/vpsuser/createbare.sh
/home/vpsuser/.bash_aliases
/home/vpsuser/.bashrc
/home/vpsuser/.cdargs
/home/vpsuser/.gitconfig
/home/vpsuser/.profile
/home/vpsuser/.ssh
/home/vpsuser/.config
/home/vpsuser/crontab.backup
/home/vpsuser/letsencrypt
/home/vpsuser/mongodb
/etc/letsencrypt
/etc/ssh
/etc/nginx
/var/log/nginx
/var/www
/home/vpsuser/backup.sh
#!/bin/bash
set -e
shopt -s dotglob
# Цвет текста сообщения об ошибке
red=$(tput setf 4)
# Цвет текста сообщения об успешном выполнении
green=$(tput setf 2)
# Стандартный цвет текста консоли
reset=$(tput sgr0)
# Параметры, которые помещают уведомление о выполнении операции вправо
toend=$(tput hpa $(tput cols))$(tput cub 6)
TIMESTAMP=$(date +'%F_%R:%S' -d "-24 hour")
HOME=/home/vpsuser
NOW=$(date +%d-%m-%Y)
PROCESS_NAME=$(basename $0)
SOURCE_FILE="${HOME}/backup_sources"
BACKUP_FILE="${HOME}/backup_${NOW}.tar.gz"
CRONTAB_FILE="${HOME}/crontab.backup"
PID_FILE="$$.lock"
MONGO_DIR="${HOME}/mongodb"
PID_DIR=/var/run/${PROCESS_NAME}
TAR="$(which tar)"
if [ -f ${PID_DIR}/${PID_FILE} ]; then
echo "${PROCESS_NAME} уже запущен!"
exit 1
fi
function print_status {
if [ $? -eq 0 ]; then
echo -n "${green}${toend}[OK]"
else
echo -n "${red}${toend}[ERROR]"
fi
echo -n "${reset}"
echo
}
function create_lock_file() {
mkdir -p ${PID_DIR} && touch ${PID_DIR}/${PID_FILE}
}
function remove_lock_file() {
[ -d ${PID_DIR} ] && rm -rf ${PID_DIR}
}
function create_mongo_dump() {
mkdir -p ${MONGO_DIR}
mongodump --gzip --out=${MONGO_DIR} &> /dev/null
}
function remove_mongo_dump() {
if [ -d "${MONGO_DIR}" ]; then
rm -rf ${MONGO_DIR}
fi
}
function create_crontab_dump() {
crontab -l > ${CRONTAB_FILE}
}
function remove_crontab_dump() {
if [ -f "${CRONTAB_FILE}" ]; then
rm -f ${CRONTAB_FILE}
fi
}
function backup() {
echo -n "Сохраняем бэкап в файл ${BACKUP_FILE}"
${TAR} -czvf "${BACKUP_FILE}" -N"${TIMESTAMP}" -T"${SOURCE_FILE}" &> /dev/null
print_status;
}
create_lock_file;
create_mongo_dump;
create_crontab_dump;
backup;
remove_crontab_dump;
remove_mongo_dump;
remove_lock_file;