crontab 以特定用户身份运行

crontab 以特定用户身份运行

我需要每天运行一个脚本。该脚本应该以特定用户(例如 user1)的身份运行,而不是以 root 身份运行。因此,我将 cron 文件放在 /etc/cron.d 中,并将用户名放在行中(第二列)。但它给出了一个错误,说找不到该命令。我怀疑该脚本不是以 user1 的环境运行的。我是不是漏掉了什么?

答案1

只有/etc/crontab和 中的文件/etc/cron.d/才有用户名字段。在该文件中,您可以执行以下操作:

1 1 * * * username /path/to/your/script.sh

您可以从 root 的 crontabsudo crontab -e使用:

1 1 * * * su username -c "/path/to/your/script.sh"

或者你可以像这样使用用户的实际 crontab:

sudo crontab -u username -e

第二列在任何 crontab 文件中,都是您希望作业运行的小时数。您指的是第六个字段吗?

答案2

如果您使用的可执行文件位于 /usr/local/bin 中,则可能需要为该用户设置 PATH。要设置 PATH,请在 cronjobs 之前放置如下内容:

PATH=/bin:/usr/bin:/usr/local/bin

*/5 * * * * user1 sample_executable

另一种方法是在你的 cronjob 中完整指定 sample_executable 的路径,因此:

*/5 * * * * user1 /path/to/sample_executable

如果 sample_executable 引用的可执行文件不在标准 PATH 中,则应使用第一个选项。

答案3

用户 crontabs 的典型目录位于 /var/spool/cron/crontabs。文件格式不包含用户名。用户 crontabs 由用户拥有并以用户模式 ​​0600 命名。最好的处理方法是编写 tab 文件,然后使用它crontab -u username filename为该用户设置所需的任何 cron 条目。

相关内容