У меня проблема с разрешениями на сервере CentOS.
Я создал приложение NetCore, которое считывает некоторые значения из dmidecode. Когда я развернул приложение на своем сервере CentOS, я выполнил следующую команду:
chmod 777 ApplicationName
Затем я выполняю ее, и все работает нормально.
Моя проблема заключается в том, что я пытаюсь установить это приложение в crond, для этого я делаю следующее:
1) service crond stop
2) crontab -e
3) * * * * * cd /ApplicationFolder && ./ApplicationName
4) service crond start
Мое приложение выполняется, но я не могу получить значения dmidecode, которые я пытаюсь прочитать, я предполагаю, что я имеет проблему с разрешением, потому что он отлично работает при выполнении в качестве консольного приложения.
Я попытался установить пользователя в строке crond, выполнив:
* * * * * root cd /ApplicationFolder && ./ApplicationName
Но ничего не происходит, приложение даже не запускается ...
Кто-нибудь знает, что я делаю неправильно?
EDIT
Как было предложено в комментариях, я изменил crontab на:
* * * * * /ApplicationFolder/ApplicationName
Но происходит то же самое ...
Причина, по которой я думаю, что у меня проблема, связанная с разрешениями, заключается в том, что если я запускаю программу как значения приложения записываются в текстовый файл, а когда я запускаю приложение с помощью crond, в журнал записывается та же информация, но значения пусты.
Я также читал, что при чтении серийных номеров из dmidecode нам потребуются привилегии root, но моя текущая учетная запись, использующая crontab, уже является учетной записью root.
Всем, у кого есть такая проблема, мне удалось решить мою проблему, используя абсолютные пути.
Кажется, у cron есть проблемы с относительными путями...
Обычно вместо:
dmidecode
У меня есть:
/usr/sbin/dmidecode
Это помогло мне.