Назад | Перейти на главную страницу

Fedora Cron Job нужна помощь

Мне нужен совет, так как Cron сводит меня с ума на моем компьютере с Fedora 8.

у меня есть базовый сценарий, который хранится в

/tmp/myscript.sh

Вот копия кода в этом скрипте.

#!/bin/bash

AFolderName="archivefolder"
AFileName="archive.zip"

echo "setting variables"

if [ -d $AFolderName ]
then
rm -r $AFolderName
fi

echo "checked if folder exists"
mkdir $AFolderName
cd $AFolderName

echo "about to zip"
zip -r $(date +%Y%m%d)_$AFileName /var/www/*

echo "zipped"

echo "about to s3"
s3cmd put $(date +%Y%m%d)_$AFileName s3://mytestbucket

echo "s3ed"

cd ..
rm -r $AFolderName

echo "done"

Я выполнил crontab -e и добавил задание в соответствии с форматированием для него, и задание, похоже, выполняется, когда я получаю файл журнала во временной папке. однако в файле журнала ничего нет, и ничего не загружается на Amazon ...

вот что в crontab

*/10 * * * * root /tmp/myscript.sh > /tmp/ms.log

Что я делаю не так? нигде нет намека на то, в чем проблема. кстати скрипт ДОЛЖЕН запускаться от имени root.

Согласитесь, что вам нужно войти в систему как root или $ sudo su действительно стать root, тогда сделайте свой # crontab -e и извлеките "корень" из строки crontab - похоже, вы выяснили, что это не нравится.

Затем вы можете запустить свой сценарий от имени пользователя root - почти так же, как он у вас уже был.

Вы уверены, что у файла установлен флаг выполнения, (ls -l /tmp/myscript.sh) и что / tmp не смонтирован noexecute? (mount) Пустой файл журнала будет создан оболочкой просто из-за перенаправления. Но это не означает, что сценарий действительно запущен. А поскольку вы не перенаправляли вывод ошибок, вы никогда не увидите это сообщение. (Хотя, вероятно, это было отправлено по почте пользователю root?)

Помимо вышеперечисленного, стоит попробовать:
A) Запустите сценарий вручную из командной строки. Убедитесь, что он действительно что-то делает.
Б) Вы можете захотеть импортировать в файл профиля в начале скрипта. В противном случае вы можете пропустить путь и переменные среды, которые могут понадобиться вашему скрипту.
C) Перенаправить вывод ошибок из задания cron. Либо в тот же файл, с 2>&1 в конце или в отдельный файл с 2> diff_file.txt. Это, вероятно, даст вам некоторое представление о том, что пошло не так.


- Кристофер Карел

правильный способ сделать это было

Вот копия кода этого сценария, который нужен sudo в строке s3cmd.

#!/bin/bash

AFolderName="archivefolder"
AFileName="archive.zip"

echo "setting variables"

if [ -d $AFolderName ]
then
rm -r $AFolderName
fi

echo "checked if folder exists"
mkdir $AFolderName
cd $AFolderName

echo "about to zip"
zip -r $(date +%Y%m%d)_$AFileName /var/www/*

echo "zipped"

echo "about to s3"
sudo s3cmd put $(date +%Y%m%d)_$AFileName s3://mytestbucket

echo "s3ed"

cd ..
rm -r $AFolderName

echo "done"

crontab необходимо удалить ROOT.

* / 10 * * * * /tmp/myscript.sh> /tmp/ms.log