Doron Behar Asked: 2018-07-23 01:27:14 +0800 CST2018-07-23 01:27:14 +0800 CST 2018-07-23 01:27:14 +0800 CST 在没有 root 的情况下禁用特定用户或 shell 会话的核心转储 772 我正在开发一个大型 C++ 项目。在测试它时,我经常从主进程中得到一个核心转储。这会在其中保存许多无趣的核心转储,systemd并占用有用的磁盘空间。 是否有可能在 Linux 运行systemd下禁用核心转储,使其仅为某个用户临时记录,或者仅在某个 tty 或某个 shell 会话中更好? 在我看来,如果用户要运行一个频繁转储核心的程序并且他不想填满磁盘空间,那么用户应该可以选择禁用核心转储记录,这似乎是合理的,没有 root 的干预。 linux systemd 1 个回答 Voted Best Answer schily 2018-07-23T02:37:44+08:002018-07-23T02:37:44+08:00 您是否尝试编辑/etc/profile并添加一行: ulimit -c 0 到这个?如果你不是 root,你可以告诉人们手动运行这个命令。 顺便说一句:大多数 Linux 发行版默认将 coredump 限制为 0,因此除非您键入,否则在典型的 Lnux 系统上进行调试不起作用 ulimit -c unlimited 在你的壳里。 该ulimit命令在内部调用setrlimit()系统调用,该系统调用设置所有子进程继承的进程设置。任何程序都可以调用setrlimit(),而不仅仅是 shell。 理论上任何孩子都可以更改这些设置并创建新的继承线。因此,请确保在中间没有调用任何 shell 来再次更改值。例如,如果调用ulimit是在 shell 的启动脚本之一中,这可能会发生。
您是否尝试编辑
/etc/profile
并添加一行:到这个?如果你不是 root,你可以告诉人们手动运行这个命令。
顺便说一句:大多数 Linux 发行版默认将 coredump 限制为 0,因此除非您键入,否则在典型的 Lnux 系统上进行调试不起作用
在你的壳里。
该
ulimit
命令在内部调用setrlimit()
系统调用,该系统调用设置所有子进程继承的进程设置。任何程序都可以调用setrlimit()
,而不仅仅是 shell。理论上任何孩子都可以更改这些设置并创建新的继承线。因此,请确保在中间没有调用任何 shell 来再次更改值。例如,如果调用
ulimit
是在 shell 的启动脚本之一中,这可能会发生。