今早在设置Crontab定时任务时,发现shell脚本没跑起来。返回查指令一切OK。打开/var/log/cron,发现报了错误。
错误信息:FAILED to open PAM security session (Permission denied)
可以看出是权限问题。
解决方法
vim /etc/pam.d/crond,将pam_loginuid.so改为sufficient,保存退出。
顺便记录下另一个问题
删除了/var/log/cron文件后,重新新建cron日志文件,要记得systemctl restart rsyslog,不然crontab日志是不会记录的。
crontab基础
格式:crontab [Options] file
Options:可选参数
描述
-u
指定某个用户的crontab
-e
编辑指定/当前用户的crontab
-l
显示指定/当前用户的crontab任务列表
-r
删除指定/当前用户的crontab任务列表
-i
删除前提示
例1:显示用户名为muq的crontab列表
crontab -u muq -l
例2:编辑用户名为muq的crontab列表
crontab -u muq -e
例3:编辑当前用户的crontab列表
crontab -e
例4: 删除当前用户的crontab列表
crontab -r
命令格式:
范式: * * * * * /usr/local/hello.sh
列
描述
第1个*
指定分钟,取值0~59
第2个*
指定小时,取值0~23
第3个*
指定每个月的第几天,取值1~31
第4个*
指定第几个月,取值1~12,或者用英文简写,jan,feb,mar,apr
第5个*
指定星期几,取值0~6,(星期天等于0或者7),或者用英文简写,sun,mon,tue,wed,thu,fri,sat
第6列
指定执行的命令或者shell脚本路径
以上是最基本的,要想组合复杂的命令,可以使用下面操作符。
逗号(,) : 使用逗号可以指定选择一个范围,例如我要每天的9点,12点,20点都执行命令
00 9,12,20 * * * /usr/local/hello.sh
横杆(-) : 使用横杆可以指定一个区间,例如我要每天的12点到16点都执行命令
00 12-16 * * * /usr/local/hello.sh
正斜线(/) : 使用正斜线可以指定间隔的频率,例如我要每2小时执行一次命令
00 0-23/2 * * * /usr/local/hello.sh