2012-05-18 3 views
0

вероятно простой вопрос, но я запутался:Shell-Script: Cronjob против прав пользователей

Когда я запускаю следующий сценарий вручную, она отлично работает. Хотя я не запускаю этот скрипт как пользователь git, но как пользователь X, я могу использовать команды ls и du, которые применяются к домашнему каталогу пользователей git. Если я пытаюсь запустить этот скрипт в cronjob, эти две команды не вызывают регулярные вызовы, не знаю почему. Первый «extern» вызов cmd-файла отлично работает в обоих случаях и дает регулярный вывод.

Что я заметил: я просто могу запустить скрипт как пользователь X с ./runbackup.sh и он хранится в домашнем каталоге пользователей.

Cron работает с привилегиями пользователя X.

Confusing ...:/... любые идеи?

Сценарий: runbackup.sh:

#!/bin/bash 

/cygdrive/e/xp-batches/backup.cmd > info.log 
echo "### CURRENT HOMEDIR ###" >> info.log 
ls -gh --block-size=K /home/git >> info.log 
echo "### SIZE ###" >> info.log 
du -hs /home/git >> info.log 
email -s "Backup Status" [email protected] < info.log 
+0

Задача cron запускается с исходным текущим каталогом, установленным в домашний каталог владельца задания cron. Но что именно вы подразумеваете под «Cron работает с привилегиями пользователя X»? –

ответ

1

Лучше ничего об окружающей среде, которая хрон снабжает вас не принять. Используйте полные пути:

/бен/LS -gh --block размер = K/дома/мерзавец >> info.log

, а не только "LS".

О, и, возможно, используйте абсолютный путь, а не info.log.

+0

Можно с уверенностью предположить, что '/ bin' находится в' $ PATH' процесса, вызванного 'cron'. –

+0

... но в этом случае янки были правы. Я должен указать весь путь к «ls» и «du». Спасибо за вашу помощь! –

Смежные вопросы