我在 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
但什么也没发生,应用程序甚至没有启动......
有谁知道我做错了什么?
编辑
根据评论的建议,我将 crontab 更改为:
* * * * * /ApplicationFolder/ApplicationName
但同样的事情正在发生……
我认为我遇到与权限相关的问题的原因是,如果我将程序作为应用程序运行,则值会记录到文本文件中,而当我使用 crond 执行应用程序时,会记录相同的信息,但值是空的。
我还读到,当从 dmidecode 读取序列号时,我们需要 root 权限,但我当前使用 crontab 的帐户已经是 root 帐户。
答案1
对于遇到此类问题的任何人,我设法通过使用绝对路径解决我的问题。
看起来 cron 在相对路径方面存在一些问题......
基本上而不是有:
dmidecode
我有:
/usr/sbin/dmidecode
这对我来说很有效。