随笔 - 119  文章 - 290  trackbacks - 0

博客搬家了哦,请移步
叫我abc

常用链接

留言簿(12)

随笔分类

我的博客

搜索

  •  

积分与排名

  • 积分 - 301930
  • 排名 - 84

最新评论

阅读排行榜

这两天遇上了一个问题,可惜解决晚了,导致场景服务器的一个未知隐患要留到下次外部测试才能查出来了.
一个通过ssh连接启停指定服务器程序的管理程序,其中一组启动的程序发生崩溃后无法dumpcore文件,但是改用手动启动的方式程序则会在崩溃后dumpcore.
在shell环境下检测core文件大小设置:
$ulimit -c
unlimited

让管理程序读取core文件大小设置:
o = machine.StartApp('ulimit -c');
print(o.readline());

$python test.py
0
设置值是0,不是预期的.但是在终端看到的却是unlimited.其中ulimit -c的初始设置是写在.bash_profile里的.

很幸运的看到.bashrc里提到2种类型的shells:login shell,interactive shell.其中login shell加载.bash_profile,interactive shell加载.bashrc.
管理程序连接到机器后,没有使用tty或者bash,因为不需要交互,同时,管理程序执行命令的方式是bash -c,所以管理程序没有执行.bash_profile中的设置,以致于子进程继承的core文件大小设置不符合期望.
其中的一个解决办法是在每个执行命令前添加 ulimit -c unlimited,但是这写得有点死.另一个解决办法是发现bash -c每次都会加载.bashrc,将core文件大小设置写入.bashrc便可.
问题看起来解决了,但是我觉得这里面的一个细节和man对不上:
An interactive shell is one started without non-option arguments and without the -c option whose standard input and error are both connected to terminals
管理程序执行命令时候的bash -c表示的是non-interactive shell,应该不会加载.bashrc才是,类似于用crontab运行的脚本就不会加载.bashrc,但是管理程序执行命令的时候设置竟然生效了...求解.
.

PS:最近2个月没写blog,好忙.................
posted on 2010-12-20 23:07 LOGOS 阅读(2125) 评论(2)  编辑 收藏 引用

FeedBack:
# re: bash的不同启动方式导致不同的设置 2010-12-21 09:23 zuhd
vi /etc/security/limits.conf
我是在这里配置core文件的大小的  回复  更多评论
  
# re: bash的不同启动方式导致不同的设置 2010-12-21 10:52 LOGOS
@zuhd
limits.conf也可以,不过比较容易接受的还是用户自配置  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理