Попытка запускать сценарий «R» в 00:30 каждый день. Скрипт находится в /home/username/Desktop/folder/runnow.r и which Rscript
показывает, что абсолютный путь к двоичному Rscript равен /usr/bin/Rscript
. Запись crontab, которую я сделал, использовала crontab -e
команду, а затем вставив строку:
38 14 * * * /usr/bin/Rscript /home/username/Desktop/folder/runnow.r
Сейчас, конечно, 14:36. И я жду 5 минут, чтобы увидеть, создан ли CSV-файл в моей домашней папке. Так как сценарий R runnow.r содержит инструкции для обработки некоторых данных и создания файла CSV в домашней папке.
Но в моей домашней папке нет CSV-файла. Когда я вручную запускаю этот сценарий (без использования cron), он создает CSV-файл в моей домашней папке. Так что я знаю, что со сценарием все в порядке. Я везде использую абсолютные пути, и я даже попытался перезапустить crond, используя service crond restart
. Однако не повезло. Это проблема привилегий? У crond недостаточно прав для создания CSV в моей домашней папке?
РЕДАКТИРОВАТЬ: НОВОЕ НАБЛЮДЕНИЕ
Если я изменю строку на * * * * * /usr/bin/Rscript /home/username/Desktop/foldername/runme.r
вместо того, чтобы указывать точное время, он создает правильный CSV-файл в нужном месте. Так * * * * *
работает и 54 13 * * *
нет. Зачем?
Я понял это после последнего наблюдения, которое я сделал относительно времени. Я буду выглядеть глупо, но я ошибся временем. Я тестирую это задание cron на виртуальной машине, время которой отличается от времени моей хост-машины. Я планировал задание на виртуальной машине и смотрел на время на своей главной машине. То, что оба раза были разными, означало, что сценарий не был выполнен в то время, когда я этого ожидал.