Root Cron не запустить скрипт (у дозволі відмовлено)


17

Я редагував свою вкладку root cron, щоб періодично виконувати скрипт, розташований у папці конкретного користувача, використовуючи цю команду:

sudo crontab -e

Коли cron запускає скрипт, це вихід:

sh: 1: /home/user/Location/Of/Script: Permission denied

Я думав, що кореневий крон має дозвіл робити що-небудь. У мене немає проблем, коли я вручну запускаю цей скрипт як root.

Я прочитав у документації, що подальшу інформацію про помилки можна знайти тут:

sudo cat /var/log/syslog

Ось що я знайшов:

Jan 30 12:30:01 backup CRON[17702]: (CRON) info (No MTA installed, discarding output)

Однак, я думаю, це, мабуть, не пов'язане з видачею дозволу, яким заборонено.

То що мені насправді потрібно робити?


3
Чи можете ви перелічити дозволи /home/user/Location/Of/Script? Напр la -l /home/user/Location/Of/Script. Між іншим, вам потрібен MTA, встановлений для нормального внутрішнього використання, навіть якщо ви не надсилаєте / отримуєте електронну пошту зовні. Я здивований, що ваша система не має її вже встановлена.
Faheem Mitha

1
Це може бути пов’язано з усілякими речами. Будь ласка, опублікуйте запит команди @FaheemMitha, а також відповідний рядок у вашому crontab
terdon

-rw-r - r-- (це було проблемою)
-Благодаря

Ви кажете, що ви вирішили це за допомогою "-rw-r - r--", але я не знаю, що це, або як ним користуватися, і у мене є те саме питання, що описано в цій темі. Чи можете ви бути трохи більш конкретними у своєму рішенні щодо нащадків? Такі люди, як я, будуть дуже вдячні за це. Дякую!
Джонсон Джейсон

@JohnsonJason: Проблема полягала в тому, що дозволи на файл сценарію не дозволяють виконувати. Подивіться на прийняту відповідь, яка показує, як дати дозвіл сценарію на виконання.
Lonniebiz

Відповіді:


19

Я думаю, що ваш сценарій не виконується. Отже, використовуйте таку команду, щоб зробити це:

chmod +x /home/user/Location/Of/Script

Або якщо ви не є власником цього сценарію:

sudo chmod +x /home/user/Location/Of/Script

Отже, щоб запустити сценарій cron, він повинен бути виконуваним, але вручну, оскільки root не потребує цього прапора, правда?
Lonniebiz

1
Залежить від запуску сценарію вручну. Якщо ви запускаєте сценарій, використовуючи ./Sciptабо /home/user/Location/Of/Scriptце не нормально. Як правило, будь-який сценарій повинен бути виконаним. Див. Розділ Як запустити скрипт оболонки в Linux .
Radu Rădeanu

Це має сенс, але я справді запускаю цей скрипт вручну в. Дякую за допомогу.
Lonniebiz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.