crontab作为特定用户运行

我需要每天运行一个脚本。 该脚本应作为特定用户(例如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条目。