Shell
如何在 Mac 上添加持久化 shell ulimit 設置?
我想在重啟時預設啟用核心轉儲生成。
執行:
ulimit -c unlimited
在終端中似乎可以工作,直到電腦重新啟動。
想我想出了一些可行的方法。
我使用了一個名為LaunchControl的程序來創建一個名為
enable core dumps.plist
at的文件/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