我需要每天运行一个脚本。 该脚本应作为特定用户(例如user1)而不是作为root运行。 所以我把cron文件放在/etc/cron.d并把用户名放在一行(第二列)。 但它给出了一个错误,说没有find该命令。 我怀疑该脚本没有作为user1的环境运行。 我错过了什么?
只有/etc/crontab和/etc/cron.d/的文件有一个用户/etc/cron.d/段。 在那个文件中你可以这样做:
1 1 * * * username /path/to/your/script.sh
从root的crontab sudo crontab -e你可以使用:
1 1 * * * su username -c "/path/to/your/script.sh"
或者你可以像这样使用用户的实际crontab:
sudo crontab -u username -e
任何crontab文件中的第二列都是您希望作业运行的小时。 你的意思是第六场?
如果您正在使用的可执行文件位于/ usr / local / bin中,则可能需要为该用户设置PATH。 要设置PATH,请在cronjobs之前加上这样的内容:
PATH=/bin:/usr/bin:/usr/local/bin */5 * * * * user1 sample_executable
另一种方法是在cronjob中完全指定sample_executable的path,所以:
*/5 * * * * user1 /path/to/sample_executable
如果sample_executable引用不在标准PATH中的可执行文件,则应使用第一个选项。
用户crontabs的典型目录位于/ var / spool / cron / crontabs中。 文件格式是不包含用户名的文件格式。 用户crontabs由用户拥有,并以模式0600的用户命名。最好通过编写标签文件并使用crontab -u username filename来设置该用户所需的任何cron条目。