需求:用户xiaoming 需要自己的用户下建立crontab事件,该事件是每个小时的0分和30分执行脚本UserScript来进行某项操作。
于是root用户为xiaoming 添加了该事件: crontab -u xiaoming -f /home/xiaoming/UserScript
然后用crontab查看已经添加成功
~ # crontab -u xiaoming -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/home/xiaoming/UserScript installed on Tue Jul 16 04:36:02 2013)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
0,30 * * * * /home/xiaoming/UserScript
可是很遗憾,事件没有按照预料中执行...
开始怀疑系统使用root身份来执行UserScript脚本,导致找不到脚本中的变量而执行失败,于是在UserScript中第一行添加了以下命令
#!/bin/sh
su xiaoming
脚本还是不能正确执行,后来证明是我理解错了,crontab -u xiaoming -f /home/xiaoming/UserScript 添加的脚本再执行的时候也会以xiaoming的身份来执行
后来我已xiaoming登录查看crontab时间是否建立成功,结果显示
xiaoming~ $ crontab -l
cannot chdir(/var/spool/cron), bailing out.
/var/spool/cron: 权限不够
原来xiaoming没有执行crontab的权限,使用root身份来修改xiaoming获得crontab的权限
$chmod 777 /var/spool/cron/crontabs/
然后,一切就和预料的一样了