Appearance
系统管理
系统信息
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 # 启用 SIPFileVault
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 # 关机历史