问题:

java代码运行,日志默认写/data/logs目录,mac系统提示 只读文件系统 Read-only file system

macOS Catalina 终端 sudo mkdir -p /data/logs 提示 // Read-only file system

解决办法:

关闭mac的系统完整性保护 (System Integrity Protection)

1. 禁用 SIP (系统完整性保护)重启机器,按住 command + R ,进入恢复模式,打开终端,执行
  1. -bash-3.2# csrutil disable
  2. Successfully disabled System Integrity Protection.
  3. Pelase restart the machine for the changes to take effect.
  4. // 系统完整性保护 已禁用
  5. -bash-3.2#

2. 重启电脑后,打开 终端 执行
  1. $ csrutil status
  2. System Integrity Protection status: disabled.
  3. // 检查 系统完整性保护状态 已禁用
  4. $ sudo mount -uw /
  5. Password:
  6. // 挂载写权限
  7. $ mkdir ~/data
  8. // 在用户目录创建data目录
  9. $ sudo ln -s ~/data /data
  10. // 将~/data软链接到/data
  11. // 这一步很重要
  12. // 如果直接在/下创建data目录那么即使关闭了系统完整性保护每次开机依然要挂载写权限才能对目录进行写操作,还要输密码很麻烦
  13. // 通过软链接的形式即使再打开完整性保护也一样可以对/data执行写操作
  14. $ whoami
  15. // 查看你的用户名
  16. $ sudo chown -R 你的用户名 /data
  17. // 权限设置

3. SIP 是避免软件任意修改或覆盖任意系统文件或应用,日常还是建议保持开启状态的。

目录创建完成后,我们再次进入到 macOS实用工具 中,运行终端,执行 csrutil enable 命令,开启 SIP ,重启电脑即可。
正常进入 终端 执行 csrutil status 查看当前 SIP状态: 结果显示 enabled 为打开。