为什么以下方式不会改变核心文件限制大小?

Tim*_*Tim 4 bash core-dump ulimit

为了解决https://unix.stackexchange.com/a/446428/674 中的问题,我遵循了/sf/answers/1223879891/,但它没有设置核心文件限制大小?

$ sudo sh -c "ulimit -c 1024 && exec su t"

$ ulimit -c
0
Run Code Online (Sandbox Code Playgroud)
  1. 这种方式是暂时只为当前shell更改核心文件限制大小,还是永久更改所有用户或当前用户的所有shell?

  2. 更新:原帖/sf/answers/1223879891/https://unix.stackexchange.com/a/238413/674https://unix.stackexchange.com/a/169035/674都推荐使用 sudo sh -c "ulimit -c 1024 && exec su $LOGNAME". 但是两者ulimit -c 1024exec su $LOGNAME" 只影响由创建的shell sudo,那么命令的目的是什么?exec su $LOGNAME"也没有做任何有意义的事情来利用更改后的限制。


注意:我关注的是为什么上述方法不起作用,尽管还有其他方法可以解决这个问题:

  1. 我应该将使用新限制值的命令放在 sudo 执行的 shell 中

    例如

    $ sudo sh -c "ulimit -c 1024 && sleep 100"
    ^\Quit
    $ ls
    core
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我也可以尝试修改/etc/security/limits.conf.

dr_*_*dr_ 8

根据联机帮助页,ulimit“提供对 shell 可用资源和由它启动的进程的控制”。因此该ulimit值对当前 shell 有效。

ulimit在子shell中调用,当它终止时,您将返回到默认ulimit值。

[root@centos7 ~]# ulimit -c
0
[root@centos7 ~]# ulimit -c 1024
[root@centos7 ~]# ulimit -c
1024
Run Code Online (Sandbox Code Playgroud)