线上的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概念的差别。

熟悉Linux的程序猿应该有过在~/.profile文件里环境变量设置的经验,在~/.profile设置的环境变量仅仅会对那一个用户有效。而假设要对所有的用户有效,则要设置/etc/profile。/etc/profile就是~/.profile的全局版本号。其实。一旦打开一个交互式login shell,或者以--login选项登录的非交互式shell。都会首先载入并运行/etc/profile中的命令,然后再依次载入~/.bash_profile,
~/.bash_login, 和~/.profile中的命令。


这里又涉及到交互式shell与非交互式shell,login shell与non-login shell的概念。依照这两个维度划分,那么共同拥有四种shell:交互式login shell,交互式非login shell,非交互式login shell。非交互式非login shell。

交互式的:顾名思义。这样的shell中的命令时由用户从键盘交互式地输入的,执行的结果也可以输出到终端显示给用户看。

非交互式的:这样的shell可能由某些自己主动化过程启动,不能直接从请求用户的输入。也不能直接输出结果给终端用户看。输出最好写到文件。

login的:意思是这样的是在某用户由/bin/login登陆进系统后启动的shell,跟这个用户绑定。这个shell是用户登陆后启动的第一个进程。login进程在启动shell时传递第0个參数指明shell的名字,该參数第一个字符为"-",指明这是一个login shell。比方对bash而言,启动參数为"-bash"。

当bash以login
shell启动时,它会运行/etc/profile中的命令,然后/etc/profile调用/etc/profile.d文件夹下的全部脚本。然后运行~/.bash_profile。~/.bash_profile调用~/.bashrc,最后~/.bashrc又调用/etc/bashrc。

要识别一个shell是否为login shell。仅仅需在该shell下运行echo $0:
# echo $0
假设输出为该shell名字,加上一个'-'前缀。则说明该shell为login shell。比如-bash,-su等等。实验一下。在本人的Ubuntu系统下。打开Terminal,输入echo $0,得到的是"bash",说明这不是一个login shell。而由SSH登陆到server上,运行相同命令。得到了"-bash"的结果,说明由SSH登陆的为login
shell。

非login的:不需login而由某些程序启动的shell。

传递给shell的參数,是没有'-'前缀的。还以Bash为例。当以非login方式启动时,它会调用~/.bashrc。随后~/.bashrc中调用/etc/bashrc。最后/etc/bashrc调用全部/etc/profile.d文件夹下的脚本。

这个有兴趣的能够打开这些文件看一看。非login的shell主要包含以"#su","#su USERNAME"启动的shell。和图形终端(比如Ubuntu的Terminal),运行的脚本等等。

识别非login的shell方法还是运行#echo
$0命令,得到的结果假设没有'-'前缀。即为非login的。


回到我们遇到的问题,在crontab中启动的脚本的shell都是非login的。那么就不会载入/etc/profile中的命令。从而我们在/etc/profile中设置的"ulimit -c unlimited"命令对crontab中启动的脚本也是无效的了,因此这些脚本中启动的memcached意外挂掉后也不会有core文件了。

/etc/profile与/etc/bashrc、交互式与非交互式、login与non-login shell的差别的更多相关文章

  1. 《学渣Linux笔记》——关于.bashrc与profile(涉及交互式与非交互式、登录与非登录shell)

    <学渣Linux笔记>--关于.bashrc与profile(涉及交互式与非交互式.登录与非登录shell) 1.基本概念(个人理解) 交互式shell:等待用户输入,并执行相应操作的sh ...

  2. 登录式与非登录式&交互式与非交互式shell及其环境初始化过程

    交互式shell和非交互式shell(interactive shell and non-interactive shell) 交互式模式就是在终端上执行,shell等待你的输入,并且立即执行你提交的 ...

  3. shell的交互式和非交互式登录

    工作中经常碰见环境变量加载问题,归根结底就是配置文件的加载问题. 一般会有四种模式:交互式登陆.非交互式登陆.交互式非登陆.非交互非登陆. 交互式和非交互式对环境变量的加载: +----------- ...

  4. mysql交互式连接&非交互式连接

    交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tom ...

  5. 【转】mysql交互式连接&非交互式连接

    交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tom ...

  6. 交互式shell和非交互式shell、登录shell和非登录shell的区别

    交互式shell和非交互式shell.登录shell和非登录shell的区别.首先,这是两个不同的维度来划分的,一个是是否交互式,另一个是是否登录. 交互式shell和非交互式shell(intera ...

  7. shell脚本分为三类:登录脚本、交互式脚本、非交互式脚本

    shell脚本分为三类:登录脚本.交互式脚本.非交互式脚本 一. 登录脚本类似于windows下的计算机设置中的登录脚本和账户设置下的登录脚本的合集(我是这么理解的哈). 其配置文件的关键词为pref ...

  8. python SSH客户端的交互式和非交互方式

    使用python中有一个paramiko模块来实现python SSH客户端,与SSH服务器交互时,需要注意有交互式和非交互式的区别. 只执行单条命令,之后就断开链接,可以使用非交互方式.执行多条命令 ...

  9. (转)SSH批量分发管理&非交互式expect

    目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3. ...

随机推荐

  1. Linux基础测试

    目 录 第1章 文件及目录课后作业    1 第2章 Linux打包与压缩习题    1 第3章 Linux系统VIM编辑器习题    1   文件及目录课后作业 从/proc/meminfo中过滤出 ...

  2. 部署安装lnmp

    链接:http://pan.baidu.com/s/1skMSgDv 密码:h8rn 此安装包可在阿里云所有linux系统上部署安装.此安装包包含的软件及版本为:nginx:1.0.15.1.2.5. ...

  3. 基于flask的网页聊天室(二)

    基于flask的网页聊天室(二) 前言 接上一次的内容继续完善,今天完成的内容不是很多,只是简单的用户注册登录,内容具体如下 具体内容 这次要加入与数据哭交互的操作,所以首先要建立相关表结构,这里使用 ...

  4. Feedback on Ch5 paper based on CFD-RANS

    It is encouraging that you took the initiative to write this journal manuscript, but it needs a lot ...

  5. [转]Selenium-Webdriver系列Python版教程(1)————快速开始

    elenium的历史,selenium2与WebDriver的关系本文就不讲了,想了解的同学们百度一下就可以Ok.     本系列教程是以Selenium-WebDriver的Python版本,首先从 ...

  6. 复(学)习化学时突然的一个 idea

    期中考试成功探底...但是某些化学问题还是很有信息学价值的... n 烷同分异构体计数. 这个题 fanhq666 出过,就是一个 dp. 设 f[i] 表示含有 i 个节点的无标号不同构的度数限制为 ...

  7. COJ 1208 矩阵快速幂DP

    题目大意: f(i) 是一个斐波那契数列 , 求sum(f(i)^k)的总和 由于n极大,所以考虑矩阵快速幂加速 我们要求解最后的sum[n] 首先我们需要思考 sum[n] = sum[n-1] + ...

  8. HDU 3062 简单的2-SAT问题

    在2-SAT,最让我纠结的还是添加有向线段的函数了 void add_clause(int i,int a,int j,int b){    int m=2*i+a;    int n=2*j+b;  ...

  9. COdevs 1251 括号

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 计算乘法时,我们可以添加括号,来改变相乘的顺序,比如计算X1, X2, X3, X4 ...

  10. CODEVS5565 二叉苹果树

    n<=100个点的根为1的二叉树,树边上有苹果,求保留Q<=n条边的最多苹果数. 树形DP,f[i][j]--节点i为根的子树保留j条边最优方案,f[i][0]=0,f[i][j]=max ...