Bash
為什麼以下方式不會改變核心文件限制大小?
為了解決 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
- 這種方式是否會臨時更改目前 shell 的核心文件限制大小,還是永久更改所有使用者或目前使用者的所有 shell?
- **更新:**原始文章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"
影響由 創建的shellsudo
,那麼該命令的目的是什麼?exec su $LOGNAME"
也沒有做任何有意義的事情來利用更改的限制。**注意:**我關注的是為什麼上述方法不起作用,儘管還有其他方法可以解決這個問題:
- 我應該將使用新限制值的命令放在 sudo 執行的 shell 中
例如
$ sudo sh -c "ulimit -c 1024 && sleep 100" ^\Quit $ ls core
- 我也可以嘗試修改
/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
將具有您設置的限制。父外殼不受影響。