I would like to increase the maximum size limit for core dump files as a regular user. Using
bash, I can set it like this:
$ ulimit -c 100
which works well the first time I set it. However, the next time I use this command, I can only set this limit to a value not exceeding 100. In general, I can set it to an arbitrary value only the first time I use this command since login. All the next times, the possible values are limited from above by the initially set value.
At first, I thought this is an error and that's why I started this question. But it turned out it's simply a perfectly correct behavior. It turns out that RTFM saying applies here as well.
man bash reveals, the
ulimit built-in command has additional parameters:
-H for setting the so-called hard limits and
-S for setting the so-called soft limits.
Moreover, if none of these options are given, the default behavior is that
ulimit tries to set both the soft and the hard limits to the same value at once.
And that was the problem.
Now there is a quote from the
bash man page:
A hard limit cannot be increased by a non-root user once it is set;
So, there we go.
The correct usage of
ulimit command should always have this in mind.
Most importantly, it should never be used without
-S options unless you are sure to know what you are doing (which at the time I obviously wasn't).
What I should have done is something like this:
ulimit -H -c unlimited
Each time I want to change maximum core dump size limit
ulimit -S -c <new size>
So, that's about it. I hope it could help someone who might struggle with a similar problem.