Skip to content

系统管理

系统信息

sw_vers - 系统版本

bash
sw_vers                          # 显示系统版本
sw_vers -productName             # 产品名称
sw_vers -productVersion          # 版本号
sw_vers -buildVersion            # 构建版本

system_profiler - 系统信息

bash
system_profiler                  # 完整系统信息
system_profiler SPHardwareDataType   # 硬件信息
system_profiler SPSoftwareDataType   # 软件信息
system_profiler SPMemoryDataType     # 内存信息
system_profiler SPStorageDataType    # 存储信息
system_profiler SPUSBDataType        # USB 设备
system_profiler SPNetworkDataType    # 网络信息
system_profiler SPDisplaysDataType   # 显示器信息
system_profiler -detailLevel mini    # 简要信息
system_profiler -xml > report.xml    # XML 格式

sysctl - 系统参数

bash
sysctl -a                        # 所有参数
sysctl hw.model                  # 硬件型号
sysctl hw.memsize                # 内存大小
sysctl hw.ncpu                   # CPU 核心数
sysctl machdep.cpu.brand_string  # CPU 信息
sysctl kern.version              # 内核版本
sysctl kern.hostname             # 主机名
sysctl -w kern.maxfiles=65536    # 设置参数(临时)

uname - 系统信息

bash
uname                            # 内核名称
uname -a                         # 所有信息
uname -r                         # 内核版本
uname -v                         # 内核编译信息
uname -m                         # 硬件架构
uname -p                         # 处理器类型
uname -s                         # 内核名称

hostname - 主机名

bash
hostname                         # 显示主机名
hostname -f                      # FQDN
hostname -s                      # 短主机名
scutil --get HostName            # 获取主机名
scutil --set HostName newname    # 设置主机名
scutil --get LocalHostName       # 获取本地主机名
scutil --set LocalHostName newname  # 设置本地主机名
scutil --get ComputerName        # 获取计算机名
scutil --set ComputerName "New Name"  # 设置计算机名

用户管理

dscl - 目录服务

bash
dscl . list /Users               # 列出用户
dscl . read /Users/username      # 查看用户信息
dscl . create /Users/newuser     # 创建用户
dscl . create /Users/newuser UserShell /bin/bash
dscl . create /Users/newuser NFSHomeDirectory /Users/newuser
dscl . create /Users/newuser RealName "New User"
dscl . create /Users/newuser UniqueID 1001
dscl . create /Users/newuser PrimaryGroupID 20
dscl . delete /Users/username    # 删除用户

创建用户

bash
sudo dscl . -create /Users/newuser
sudo dscl . -create /Users/newuser UserShell /bin/bash
sudo dscl . -create /Users/newuser NFSHomeDirectory /Users/newuser
sudo dscl . -create /Users/newuser RealName "New User"
sudo dscl . -create /Users/newuser UniqueID 1001
sudo dscl . -create /Users/newuser PrimaryGroupID 20
sudo dscl . -passwd /Users/newuser password
sudo createhomedir -c -u newuser

组管理

bash
dscl . list /Groups              # 列出组
dscl . read /Groups/groupname    # 查看组信息
dscl . create /Groups/newgroup   # 创建组
dscl . create /Groups/newgroup PrimaryGroupID 1001
dscl . append /Groups/admin GroupMembership username  # 添加用户到组
dscl . delete /Groups/groupname  # 删除组

id - 用户信息

bash
id                               # 当前用户信息
id username                      # 指定用户信息
id -u                            # UID
id -g                            # GID
id -G                            # 所有组 ID
id -un                           # 用户名

who/w - 登录用户

bash
who                              # 登录用户
w                                # 详细登录信息
whoami                           # 当前用户名
users                            # 登录用户列表
last                             # 登录历史
last username                    # 指定用户历史
last -n 20                       # 最近20条

权限管理

chmod - 修改权限

bash
chmod 755 file                   # rwxr-xr-x
chmod 644 file                   # rw-r--r--
chmod 700 file                   # rwx------
chmod -R 755 dir                 # 递归修改
chmod u+x file                   # 所有者添加执行权限
chmod g-w file                   # 组移除写权限
chmod o=r file                   # 其他人只读
chmod a+x file                   # 所有人添加执行权限

chown - 修改所有者

bash
chown user file                  # 修改所有者
chown user:group file            # 修改所有者和组
chown :group file                # 只修改组
chown -R user dir                # 递归修改

chflags - 文件标志

bash
chflags hidden file              # 设置隐藏标志
chflags nohidden file            # 取消隐藏标志
chflags uchg file                # 设置不可变标志
chflags nouchg file              # 取消不可变标志
chflags schg file                # 设置系统不可变(需要 root)
ls -lO file                      # 查看标志

xattr - 扩展属性

bash
xattr file                       # 列出属性
xattr -l file                    # 显示属性值
xattr -w attr_name value file    # 设置属性
xattr -d attr_name file          # 删除属性
xattr -c file                    # 删除所有属性
xattr -cr dir                    # 递归删除所有属性
xattr -d com.apple.quarantine file  # 移除隔离属性

系统偏好设置

defaults - 偏好设置

bash
defaults read                    # 读取所有偏好设置
defaults read com.apple.finder   # 读取 Finder 设置
defaults read com.apple.dock     # 读取 Dock 设置
defaults write com.apple.finder AppleShowAllFiles -bool true  # 显示隐藏文件
defaults write com.apple.dock autohide -bool true  # 自动隐藏 Dock
defaults write com.apple.screencapture location ~/Pictures/  # 截图位置
defaults write com.apple.screencapture type -string png  # 截图格式
defaults delete com.apple.finder AppleShowAllFiles  # 删除设置
defaults domains                 # 列出所有域

常用设置

bash
defaults write com.apple.finder ShowPathbar -bool true  # 显示路径栏
defaults write com.apple.finder _FXShowPosixPathInTitle -bool true  # 标题显示路径
defaults write com.apple.dock showhidden -bool true  # 显示隐藏应用
defaults write com.apple.dock static-only -bool true  # 只显示运行中的应用
defaults write NSGlobalDomain AppleShowAllExtensions -bool true  # 显示所有扩展名
defaults write NSGlobalDomain NSNavRecentPlacesLimit -int 10  # 最近文件夹数量

应用设置

bash
killall Finder                   # 重启 Finder
killall Dock                     # 重启 Dock
killall SystemUIServer           # 重启系统 UI

系统更新

softwareupdate - 软件更新

bash
softwareupdate --list            # 列出可用更新
softwareupdate --install --all   # 安装所有更新
softwareupdate --install "update_name"  # 安装指定更新
softwareupdate --download --all  # 下载所有更新
softwareupdate --install --restart  # 安装并重启
softwareupdate --ignore "update"  # 忽略更新
softwareupdate --reset-ignored   # 重置忽略列表
softwareupdate --schedule        # 查看更新计划

系统服务

launchctl - 服务管理

bash
launchctl list                   # 列出所有服务
launchctl load ~/Library/LaunchAgents/com.user.script.plist
launchctl unload ~/Library/LaunchAgents/com.user.script.plist
launchctl start com.user.script
launchctl stop com.user.script
launchctl print gui/$(id -u)/com.user.script
launchctl print-disabled gui/$(id -u)  # 查看禁用的服务
launchctl enable gui/$(id -u)/com.user.script
launchctl disable gui/$(id -u)/com.user.script

服务目录

目录说明
~/Library/LaunchAgents用户代理
/Library/LaunchAgents系统代理
/Library/LaunchDaemons系统守护进程
/System/Library/LaunchAgents系统代理(Apple)
/System/Library/LaunchDaemons系统守护进程(Apple)

launchd plist 示例

xml
<?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>Label</key>
    <string>com.user.script</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/user/script.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>3600</integer>
    <key>StandardOutPath</key>
    <string>/tmp/script.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/script.err</string>
</dict>
</plist>

系统安全

Gatekeeper

bash
spctl --status                   # 查看 Gatekeeper 状态
spctl --master-enable            # 启用 Gatekeeper
spctl --master-disable           # 禁用 Gatekeeper
spctl --add /Applications/app.app  # 添加应用
spctl --remove /Applications/app.app  # 移除应用
spctl --assess --verbose /Applications/app.app  # 评估应用

系统完整性保护 (SIP)

bash
csrutil status                   # 查看 SIP 状态

禁用/启用 SIP 需要在恢复模式下运行:

bash
csrutil disable                  # 禁用 SIP
csrutil enable                   # 启用 SIP

FileVault

bash
fdesetup status                  # 查看 FileVault 状态
fdesetup enable                  # 启用 FileVault
fdesetup disable                 # 禁用 FileVault
fdesetup list                    # 列出授权用户
fdesetup add -usertoadd user     # 添加用户
fdesetup remove -user user       # 移除用户

防火墙

bash
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/app.app
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --remove /Applications/app.app
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --blockapp /Applications/app.app
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/app.app

系统日志

log - 系统日志

bash
log show                         # 显示日志
log show --last 1h               # 最近1小时
log show --predicate 'process == "kernel"'  # 按进程过滤
log show --predicate 'eventMessage contains "error"'  # 按内容过滤
log show --predicate 'subsystem == "com.apple.system"'  # 按子系统过滤
log show --predicate 'messageType == error'  # 按类型过滤
log show --predicate 'process == "kernel"' --last 1h
log stream                       # 实时日志
log stream --predicate 'process == "kernel"'
log stream --level debug         # 调试级别
log collect --output logs.logarchive  # 收集日志

syslog

bash
syslog -k Sender kernel          # 内核日志
syslog -k Level Error            # 错误日志
syslog -k Time ge -1h            # 最近1小时

电源管理

pmset - 电源管理

bash
pmset -g                         # 当前设置
pmset -g custom                  # 自定义设置
pmset -g batt                    # 电池状态
pmset -g assertions              # 断言状态
pmset -g log                     # 电源日志
sudo pmset -a displaysleep 10    # 显示器睡眠时间
sudo pmset -a sleep 30           # 系统睡眠时间
sudo pmset -a disksleep 10       # 磁盘睡眠时间
sudo pmset -a hibernatemode 0    # 休眠模式
sudo pmset -a powernap 0         # 关闭 Power Nap
sudo pmset -a womp 1             # 启用网络唤醒

caffeinate - 防止睡眠

bash
caffeinate                       # 防止系统睡眠
caffeinate -d                    # 防止显示器睡眠
caffeinate -i                    # 防止系统空闲睡眠
caffeinate -s                    # 防止系统睡眠(仅 AC 电源)
caffeinate -t 3600               # 防止睡眠1小时
caffeinate -w 1234               # 等待进程结束
caffeinate -i command            # 运行命令时防止睡眠

系统备份

Time Machine

bash
tmutil status                    # 查看状态
tmutil destinationinfo           # 查看目标
tmutil setdestination /Volumes/Backup  # 设置目标
tmutil startbackup              # 开始备份
tmutil stopbackup               # 停止备份
tmutil latestbackup             # 最新备份
tmutil listbackups              # 列出备份
tmutil deletebackup /path/to/backup  # 删除备份
tmutil local snapshot           # 创建本地快照
tmutil listlocalsnapshots /     # 列出本地快照
tmutil deletelocalsnapshots /   # 删除本地快照

系统重启与关机

shutdown

bash
sudo shutdown -h now            # 立即关机
sudo shutdown -r now            # 立即重启
sudo shutdown -h +60            # 60分钟后关机
sudo shutdown -h 23:00          # 23:00 关机
sudo shutdown -c                # 取消关机

reboot/halt

bash
sudo reboot                     # 重启
sudo halt                       # 关机

系统诊断

sysdiagnose

bash
sudo sysdiagnose                # 生成诊断报告
sudo sysdiagnose -f /path       # 指定输出路径

kextstat - 内核扩展

bash
kextstat                        # 列出内核扩展
kextstat | grep -v com.apple    # 非 Apple 扩展
kextload /path/to.kext          # 加载扩展
kextunload /path/to.kext        # 卸载扩展

systemstats

bash
sysctl kern.boottime            # 启动时间
uptime                          # 运行时间
last reboot                     # 重启历史
last shutdown                   # 关机历史

下一步学习