Выполнение сценария оболочки с cronjob делает проблемы, выполняясь вручную нет. Идеи?

Я сделал сценарий оболочки названным /home/root/cron_grads.sh (chmodded 755) на моем сервере.

В этом каталоге больше сценариев выпускников как 500hPa_p0.gs (644). Мой основной сценарий создает временный файл grads_exec.gs, заливки это с некоторым содержанием и затем пытаются скопировать содержание 500hPa_p0.gs на конец его прежде, чем выполнить все это Это хорошо работает, даже на сервере, если я запускаю его вручную.

Но использование crontab -e с:

42 0,6,12,18 * * * /home/root/grads/cron_grads.sh

... ошибка происходит. Сценарий запускается, но выпускники говорят:

cat: 500hPa_p0.gs: File or directory not found

Я использую, избивают cron_grads.sh с #!/bin/bash наверху в нем. crontab -e также содержит SHELL=/bin/bash.

Какие-либо идеи?

1
задан 30 May 2014 в 17:07

2 ответа

Это - проблема в Вашем cron_grads.sh сценарий. Когда Вы называете его вручную, я предполагаю, что Вы находитесь в /home/root таким образом, это выполнило бы что-то как:

echo test > grads_exec.gs
cat 500hPa_p0.gs >> grads_exec.gs

Но если Вы выполнили это от в то время как в /home/oli/, это попыталось бы записать в /home/oli/grads_exec.gs и читайте из /home/oli/500hPa_p0.gs. Вот почему кошка аварийно завершается в Вашем случае.

Зафиксировать, любой явно CD в правильный каталог (и использовать полный путь):

cd /home/root
echo test > grads_exec.gs
cat 500hPa_p0.gs >> grads_exec.gs

Или используйте полные пути везде:

echo test > /home/root/grads_exec.gs
cat /home/root/500hPa_p0.gs >> /home/root/grads_exec.gs

Или в целях безопасности, оба.

0
ответ дан 24 December 2019 в 04:55
0
ответ дан 24 December 2019 в 04:55

Другие вопросы по тегам:

Похожие вопросы: