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