2015-02-22 1 views
-2

Я определяю работу с кронтабом как этогоПочему моя запланированная работа не работает?

0 2 * * * dbadmin . /home/dbadmin/back.sh 

не корня Я хочу, чтобы запустить этот .sh файл с dbadmin пользователя.

но когда я проверил, он не работает.

в журнале это дает следующее:

Feb 22 21:16:01 localhost crond[14634]: (*system*) BAD FILE MODE (/etc/crontab) 
Feb 22 21:16:01 localhost crond[14634]: (dbadmin) RELOAD (cron/dbadmin) 
Feb 22 21:16:01 localhost crond[28451]: (dbadmin) CMD (dbadmin . /home/dbadmin/back.sh) 

Как я могу это исправить? заранее спасибо

+0

перенаправить стандартный вывод и стандартную ошибку для регистрации, чтобы проверить ошибку, если таковая имеется? – SMA

ответ

1

Сделать кронтаб запись как dbadmin без имени пользователя в нем:

0 2 * * * /home/dbadmin/movefolder.sh > /home/dbadmin/cron.out 2>@1 

Каждый день файл_журнала /home/dbadmin/cron.out должен быть заменен на новый. Когда вы уверены в перемещаемой папке cron +, замените выходной файл на /dev/null.
Если выше не удается, проверьте вызов сценария в качестве dbadmin:

sh /home/dbadmin/movefolder.sh 

Когда один работает и хроны не удается, это может быть средой. Попробуйте что-то вроде

0 2 * * * . /home/dbadmin/.profile; /home/dbadmin/movefolder.sh > /home/dbadmin/cron.out 2>@1 
+0

привет, спасибо за ответ, он дает этот журнал, но он не делает то, что я ожидаю от него: 22 февраля 21:37:01 localhost crond [14634]: (dbadmin) RELOAD (cron/dbadmin) Feb 22 21:37:01 localhost crond [31546]: (dbadmin) CMD (sh /home/dbadmin/back.sh) –

+0

Вы снова начали его с корневого cron. Попробуйте выполнить небольшие шаги, сначала из командной строки, а затем из местного cron. замените ваш сценарий 'date' и перенаправляйте вывод снова. –

+0

спасибо за ответ –

1

Используя программу crontab, вы обычно имеете доступ только к 5 полям планирования (минуты, час, день месяца, месяц и день недели). Однако с помощью Vixie cron (обычно в Linux), редактируя систему crontab файл (/ etc/crontab, а также файлы в /etc/cron.d), вы можете использовать 6-е поле для имени пользователя. Например, см How to specify in crontab by what user to run script?

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

0 2 * * * dbadmin . /home/dbadmin/back.sh 
      ^^^^^^^ 

имя пользователя, «dbadmin» трактуется как команда для выполнения. Вы можете (как указано на странице руководства crontab) использовать эту строку в/etc/crontab. Я указал, что это Vixie (также известный как ISC) crontab. У устаревших систем, таких как Solaris, есть менее способный crontab, который не позволяет указывать пользователя для запуска.

Согласно странице руководства пользователя cron, он будет отправлять выходные данные по электронной почте. Возможно, не было электронной почты, потому что команда «dbadmin» потерпела неудачу.

+0

спасибо за ответ, но он не работает, где находится журнал? Я не могу найти журналы –

+0

Обычно cron настроен для отправки по электронной почте всех сообщений, которые были записаны в стандартную ошибку. Глядя на описание Vixie cron (manpage), он не делает этого различия, но электронная почта - это то место, где я бы посмотрел. –

+0

Я отредактировал свой вопрос, пожалуйста, просмотрите еще раз –

0

Вы должны использовать команду ш для выполнения ш file.like следующего

0 2 * * * dbadmin sh /home/dbadmin/movefolder.sh 

Надеется, что это работает. Спасибо.

+0

спасибо за ответ, я попробую в ближайшее время и вернусь назад –

+0

приветствуется –

+0

не работает :(Как я могу понять, почему он не работает, я не вижу журнала –