Bash

為什麼以下方式不會改變核心文件限制大小?

  • October 27, 2018

為了解決 https://unix.stackexchange.com/a/446428/674 中的問題,我關注了https://stackoverflow.com/a/17483998/156458它沒有設置核心文件限制大小?

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

$ ulimit -c
0
  1. 這種方式是否會臨時更改目前 shell 的核心文件限制大小,還是永久更改所有使用者或目前使用者的所有 shell?
  2. **更新:**原始文章https://stackoverflow.com/a/17483998/156458>和<https://unix.stackexchange.com/a/238413/674>和<https://unix.stackexchange.com/a/169035/674都推薦使用 sudo sh -c "ulimit -c 1024 && exec su $LOGNAME"。但是兩者ulimit -c 1024都只exec su $LOGNAME" 影響由 創建的shell sudo,那麼該命令的目的是什麼?exec su $LOGNAME"也沒有做任何有意義的事情來利用更改的限制。

**注意:**我關注的是為什麼上述方法不起作用,儘管還有其他方法可以解決這個問題:

  1. 我應該將使用新限制值的命令放在 sudo 執行的 shell 中

例如

$ sudo sh -c "ulimit -c 1024 && sleep 100"
^\Quit
$ ls
core
  1. 我也可以嘗試修改/etc/security/limits.conf.

根據手冊頁,ulimit“提供對 shell 可用資源和由它啟動的程序的控制”。因此該ulimit值對目前 shell 有效。

您正在呼叫ulimit子shell,當它終止時,您將返回預設ulimit值。

[root@centos7 ~]# ulimit -c
0
[root@centos7 ~]# ulimit -c 1024
[root@centos7 ~]# ulimit -c
1024

ulimit命令適用於呼叫它的 shell 及其後代。

該命令su將具有您設置的限制。父外殼不受影響。

引用自:https://unix.stackexchange.com/questions/446472