线上的memcached又挂了,仍然没有得到core文件。排查原因,同事发现启动memcached的脚本存在可疑问题。
问题一:没有设置memcached工作目录,有可能core dump时没有工作目录写权限
这些脚本由crontab启动。脚本中没有设置工作目录,而这是非root用户的crontab。启动memcached时,工作目录不是memcached可执行文件所在目录。实验证明,这个是用户的home目录,crontab运行的脚本中打印pwd,结果是"home/work",work是当前用户。
问题二:在/etc/profile中设置的ulimit -c unlimited对crontab的脚本是无效的
在查阅相关资料后得知,/etc/profile中的设置只对Login Shell生效,而crontab运行脚本的shell环境是non-login的,不会加载/etc/profile的设置。
在这里,需要总结一下/etc/profile与/etc/bashrc的区别,以及交互式与非交互式、login与non-login shell概念的区别。