【shell】shell脚本设置ulimit -c unlimited但脚本结束后系统ulimit -c未生效

2024-04-05 00:04

本文主要是介绍【shell】shell脚本设置ulimit -c unlimited但脚本结束后系统ulimit -c未生效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

问题现象

  • 在程序启动脚本中设置了ulimit -c unlimited,但是查看系统环境ulimit -c却未生效,仍显示0

  • 脚本如下

    #! /bin/bash
    ulimit -c unlimited
    echo "password" | sudo -S sysctl -w kernel.core_pattern=/your_path/core.%e.%p.%t.%s./test/main	# 执行程序
    

问题原因

  • shell脚本中执行该命令,shell中内置命令只会影响当前shell会话及其子进程

  • 也就是说

    • 如果在脚本内设置了ulimit -c unlimited并同时启动程序,程序出现coredump是能记录core文件的
    • 但是脚本结束后再单独启动程序,ulimit -c unlimited可能没生效,程序奔溃后也未能记录core文件

测试程序

  • main.cpp

    include <iostream>
    include <string>using namespace std;int main()
    {std::string my_str = “abcdef”;auto* str_ptr = &my_str;str_ptr[1] = 'g';return 0;
    }
    
  • 编译

    g++ -o main main.cc
    
  • start.sh

    #! /bin/bash
    ulimit -c unlimited
    echo "password" | sudo -S sysctl -w kernel.core_pattern=/your_path/core.%e.%p.%t.%s./main
    
  • ./start.sh启动程序出现coredump后,因为在同一会话中会保存core文件

解决方法

  • 要永久修改core文件限制,需修改系统的配置文件 /etc/security/limits.conf

    #* soft core 0修改为#* soft core unlimited       # 为所有用户设置无限制大小的core dump文件
    
  • 请注意,core dump文件可能占用大量磁盘空间,需确保指定路径有足够的可用空间

 


created by shuaixio, 2024.04.04

这篇关于【shell】shell脚本设置ulimit -c unlimited但脚本结束后系统ulimit -c未生效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/877159

相关文章

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

PyCharm如何设置新建文件默认为LF换行符

《PyCharm如何设置新建文件默认为LF换行符》:本文主要介绍PyCharm如何设置新建文件默认为LF换行符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm设置新建文件默认为LF换行符设置换行符修改换行符总结PyCharm设置新建文件默认为LF

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Flask解决指定端口无法生效问题

《Flask解决指定端口无法生效问题》文章讲述了在使用PyCharm开发Flask应用时,启动地址与手动指定的IP端口不一致的问题,通过修改PyCharm的运行配置,将Flask项目的运行模式从Fla... 目录android问题重现解决方案问题重现手动指定的IP端口是app.run(host='0.0.

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触