我的问题是:
如何让cron知道用户的实际主目录是什么?
Cron尝试将chdir设置为错误的目录。
我想将cron转换为$(getent passwd someone | awk -F':' '{ print $6 }')
按现状,计划在/var/spool/cron/someone
中执行的cronjob在/var/log/cron
中造成cron日志错误。
cronjob是:
0 5 * 2,5,8,11 1 [ $(date +\%d) -le 07 ] && /opt/someone/script.py
错误是:
Nov 5 05:00:01 localhost CROND[17130]: (CRON) ERROR chdir failed (/home/someone): No such file or directory
在/home/someone
上确实没有这样的文件或目录。
Cron不应期望会有一个。我需要将cron chdir到用户的实际目录,即/opt/someone
。
-bash-4.2$ getent passwd someone
someone:x:989:986:someone:/opt/someone:/bin/bash
为someone
:
-bash-4.2$ echo $HOME
/opt/someone
曾经使用/home/someone
作为其主目录创建用户。
这可能是一个缓存问题吗?我无权重新启动cron服务。
-bash-4.2$ egrep 'shadow|passwd' /etc/nsswitch.conf
passwd: files sss
shadow: files sss
cron守护程序软件包详细信息:
$ rpm -qa | grep cronie
cronie-1.4.11-19.el7.x86_64
$ uname -r
3.10.0-862.el7.x86_64
这表明我需要在crontab文件之外进行修复:https://unix.stackexchange.com/a/442550
亲切的问候, Joost