C++程序作为Linux服务启动时出core的位置
来源:互联网 发布:如何开网络主播公司 编辑:程序博客网 时间:2024/06/05 00:50
首先,要确保生成core,需要运行命令
ulimit -c unlimited
这个在脚本中设置还是很简单的,比如在/etc/init.d/data_service脚本中:
PROGRAM=/home/dist/tcp/data_service_dtest -x $PROGRAM || exit 0case "$1" in start) log_begin_msg "Starting data service" ulimit -c unlimited $PROGRAM /home/dist/tcp/config.xml & cd - log_end_msg 0 ;; stop) PID=`pidof data_service_d` log_begin_msg "Stopping data service" if [ ! -z "$PID" ]; then kill -15 $PID fi log_end_msg 0 ;; restart) $0 stop $0 start ;; *) log_success_msg "Usage: service data_service {start|stop|restart}" exit 1esacexit 0
但是很快就发现,core文件的位置不在/home/dist/tcp目录下,而是在/ 目录下。
这是通过pidof data_service_d 找到进程id,然后查到cwd链接指向的是/
ot@vm6:/# pidof data_service_d12326root@vm6:/# ls /proc/12326/cwd -alhlrwxrwxrwx 1 root root 0 Sep 24 11:41 /proc/12326/cwd -> /
我希望能够改变目录所在的位置,直接放到/home/dist/tcp目录下。其实很简单,在启动脚本中先进入/home/dist/tcp/目录,然后再启动程序,即可。
!/bin/sh ### BEGIN INIT INFO # Provides: chenshu # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: dataservice # Description: dataservice server ### END INIT INFO . /lib/lsb/init-functionsPROGRAM=/home/dist/tcp/data_service_dtest -x $PROGRAM || exit 0case "$1" in start) log_begin_msg "Starting data service" cd /home/dist/tcp ulimit -c unlimited ./data_service_d ./config.xml & cd - log_end_msg 0 ;; stop) PID=`pidof data_service_d` log_begin_msg "Stopping data service" if [ ! -z "$PID" ]; then kill -15 $PID fi log_end_msg 0 ;; restart) $0 stop $0 start ;; *) log_success_msg "Usage: service data_service {start|stop|restart}" exit 1esacexit 0
再检查一下:
root@vm6:/# pidof data_service_d12680root@vm6:/# ls /proc/12680/cwd -alhlrwxrwxrwx 1 root root 0 Sep 24 12:01 /proc/12680/cwd -> /home/dist/tcp
- C++程序作为Linux服务启动时出core的位置
- 将linux下c程序移植到windows并作为服务启动
- 如何把java程序作为Linux服务启动
- C语言,如何打印出程序中出错的位置
- 让Java程序作为linux的Daemon后台运行 和 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
- [C++] [win32] [DLL] 把DLL作为程序内置资源,需要时放到适合的位置
- 将jar 作为linux服务程序运行的方法.
- 作为linux服务随开机启动
- linux中将mongo作为系统服务启动
- linux中将mongo作为系统服务启动
- Linux中将mongo作为系统服务启动
- redis在linux系统作为服务启动
- 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
- 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
- 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动
- 最新发现-想让你的程序作为系统服务启动吗?
- Linux设置程序的开机自启动与Linux服务
- linux程序自启动和新建linux 服务的方法
- 在Struts2的Action中获得request response session几种方法
- Java IO流学习总结
- Miku Miku Dance DxOpenNI for OpenNI 2
- 做一个好男人,逐渐让自己成为一个情商高的人
- Qt QtreeWidget树形控件右键菜单
- C++程序作为Linux服务启动时出core的位置
- 【官方文档】《暗黑世界V1.4》API说明!
- 黑马程序员<.net纯静态页的生成>
- 把XCode带的SVN版本替换为系统中的SVN
- #和##使用
- 戒烟第一周
- 松鼠书读书笔记(二)——HTTP报文
- 松鼠书读书笔记(三)——HTTP连接管理
- 松鼠书读书笔记(四)——http proxy