Shell

如何在 Mac 上添加持久化 shell ulimit 設置?

  • January 11, 2018

我想在重啟時預設啟用核心轉儲生成。

執行:

ulimit -c unlimited

在終端中似乎可以工作,直到電腦重新啟動。

想我想出了一些可行的方法。

我使用了一個名為LaunchControl的程序來創建一個名為enable core dumps.plistat的文件/System/Library/LaunchDaemons,其內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>GroupName</key>
   <string>wheel</string>
   <key>InitGroups</key>
   <true/>
   <key>Label</key>
   <string>core dumps launchctl</string>
   <key>ProgramArguments</key>
   <array>
       <string>launchctl</string>
       <string>limit</string>
       <string>core</string>
       <string>unlimited</string>
       <string>unlimited</string>
   </array>
   <key>RunAtLoad</key>
   <true/>
   <key>UserName</key>
   <string>root</string>
</dict>
</plist>

具有以下權限:

$ ls -al enable\ core\ dumps.plist 
-rw-r--r--  1 root  wheel  582 Dec 30 15:38 enable core dumps.plist

這似乎可以解決問題:

$ launchctl limit core
   core        unlimited      unlimited 
$ ulimit -a core
core file size          (blocks, -c) unlimited
...
<output snipped>
...

我創建了一個崩潰的小測試程序:

$ ./a.out 
Segmentation fault: 11 (core dumped)

而且,瞧,生成了一個核心轉儲:

$ # ls -al /cores/
total 895856
drwxrwxr-t@  3 root  admin        102 Dec 30 15:55 .
drwxr-xr-x  31 root  wheel       1122 Oct 18 10:32 ..
-r--------   1 root  admin  458678272 Dec 30 15:55 core.426

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