Как сделать cronjobbable скрипт для загрузки часов? - PullRequest
3 голосов
/ 01 октября 2009

Я задал похожий вопрос здесь: ( Загрузить скрипт синхронизации ), но затем изменил его и понял, что теперь это другой вопрос.

Я хочу создать скрипт с именем uploadtimer.sh, который загружает файлы на различные хосты, а затем записывает время, которое загрузка занимает в файле журнала. Спасибо тем, кто мне помог, у меня есть частичное решение, но я застрял:

Я использовал это как crontab (тестирование в течение первых десяти минут после 11 часов утра)

1,2,3,4,5,6,7,8,9,10     11     *     *     *          /usr/bin/time -a /usr/local/apache/sites/$MYEMPLOYER/upload_test/output.log  /usr/local/apache/sites/$MYEMPLOYER/upload_test/uploadtimer.sh

upload_test / содержит следующие файлы:

upload_test / output.log upload_test / uploadtest.gif upload_test / uploadtimer.sh

output.log - это текстовый файл, который я переименовал в файл .log. Это пусто Прежде чем поместить его туда, я получал сообщения, в которых говорилось, что «этот файл не существует». Я думал, что это создаст для меня, но я думаю, нет. После того, как я его создал, он продолжал говорить в письмах crontab, что я не могу писать в него, пока я не изменил его разрешения, поэтому я сделал.

uploadtest.gif - это рисунок

uploadtimer.sh это:

#!/bin/sh

HOST='--myhost--'
USER='--login--'
PASSWD='--password--'
FILE='uploadtest.gif'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE

quit
END_SCRIPT
exit 0

Сообщение, которое отправляет мне cron:

0.00user 0.00system 0:00.02elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+253minor)pagefaults 0swaps

Но ftp не выполнялся и ничего не записывалось в output.log.

Ответы [ 3 ]

0 голосов
/ 01 октября 2009

Ваши вопросы:

  • Куда я помещаю эту часть, которая говорит ей сохранить данные в журнал?

    Вы редактируете свой файл crontab, чтобы добавить запись cron. Запись cron содержит информацию о том, какую команду запускать и когда ее запускать. Например, вот запись cron, которую вы можете использовать:

    0 2 * * * /usr/bin/time -a ~/output.log ~/uploadtimer.sh

    Эта запись гласит: запускать команду в 2 часа ночи каждый день (минута 0, час 2, каждый день месяца, каждый месяц, каждый день недели). Для получения дополнительной информации о синтаксисе crontab вы можете проверить http://www.adminschoice.com/docs/crontab.htm.

    Чтобы сделать запись cron, используйте команду crontab -e, которая загрузит текстовый редактор vi. Введите строку выше и затем сохраните ее. Это создает работу cron. Если вы не знаете vi, просто следуйте этому:

    • из оболочки введите crontab -e, чтобы начать редактирование
    • нажмите i , чтобы войти в режим вставки
    • введите строку, как указано выше
    • нажмите ESC для выхода из режима вставки
    • нажмите : , чтобы переключиться в командный режим - вы увидите курсор внизу экрана
    • введите wq и нажмите Enter - это W обряды и Q файл. Вы должны увидеть сообщение типа crontab: installing new crontab.

    Если у вас возникнут какие-либо проблемы с использованием vi, несколько раз используйте ESC , чтобы выйти из любого режима, введите : , чтобы войти в командный режим, а затем q! , чтобы принудительно завершить работу (то есть выйти без сохранения чего-либо), а затем повторить попытку с самого начала.

  • Это относится к самому сценарию, поэтому его нужно отделить от сценария?

    Да.

0 голосов
/ 02 октября 2009

Возможно, вы захотите проверить "ncftp". Он будет сжимать вашу команду загрузки в "ncftpput -u $ USER -p $ PASSWD $ HOST / $ FILE", и тогда вам вообще не понадобится скрипт, просто поместите всю команду в ваш crontab:

0 2 * * * /usr/bin/time -a ~/output.log ncftpput -u $USER -p $PASSWD $HOST / $FILE
0 голосов
/ 01 октября 2009

Создайте еще один скрипт, который запускает вторую команду. Вызовите второй скрипт из cron.

Вам необходимо убедиться, что вы используете абсолютные пути для всего, потому что cron запускается в другом каталоге, чем скрипт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...