CentOS 7,用户的 cronjob 不运行脚本

CentOS 7,用户的 cronjob 不运行脚本

我的虚拟机上有 CentOS 7.6。有一些 bash 脚本,/opt我需要用这个用户运行它们dbuser。这些脚本将其输出写入文件夹中。使用crontab -e我将它们放入dbusercrontab 中,以便它们每分钟运行:

* * * * * /opt/share/scripts/Connections
* * * * * /opt/share/scripts/Memory
* * * * * /opt/share/scripts/Regular

当我检查输出文件夹时,它们并不是每分钟都改变。当我手动运行脚本时,它们运行没有问题,并且它们的输出被正确更新。
我检查了这些脚本的所有目录和子目录,它们都具有完全x权限。
其中/var/log/cron表示命令已运行并且没有错误。每次更改后
我也重新启动服务。 我也尝试过这些:crond

 * * * * * /usr/bin/bash /opt/share/scripts/Connections
 * * * * * /usr/bin/sh /opt/share/scripts/Connections
 * * * * * dbuser /opt/share/scripts/Connections

我在输出文件夹中仍然没有更新(这些命令手动工作正常)。
最后我在 root crontab 中添加了它,它工作正常,没有错误,并更新了输出文件:

* * * * * /usr/sbin/runuser -l dbuser -c '/opt/share/scripts/Connections'  

我无法将每个用户的 crontab 添加到 root 。我希望他们在自己的 crontab 中。为什么会发生这种情况以及我该如何解决它?

更新
dbuser脚本写入用户有权写入 的位置。我测试过。
该用户是数据库用户,因此在脚本中我有数据库命令的路径:
DB2PATH=/home/$username/sqllib/bin/db2
我应该将其添加到 cronjob 使用的路径中吗?
不,它不发送任何邮件。他们生成数据库状态报告以供以后参考。

答案1

您可以通过语句定义用户su -。我最初在用户脚本方面遇到了同样的问题 - 这对我有用:

* * * * *   root    su - <username> -c "bash <script to run>"

相关内容