从终端启动APP
open /Applications/App-name.app
设置MAC的Daemon启动项
Crontab在OSX上不是很好使,因为一旦重启的话,cron记录就会丢失,因此使用系统自带的Launchd Daemon来启动必要的服务。配置Launchd Daemon只需要一个plist文件,简单而且放便,适用于对系统已经安装过的服务设置自启动。OSX另外一种自启动的方式为StartupItems,这种方式不进需要使用plist来这设置,而且需要在plist的文件夹下指定可执行文件,比如一个脚本。因此Launchd Daemon是比较简单和方便的。配置Launchd是Mac OS下用于初始化系统环境的关键进程,它是内核装载成功之后在OS环境下启动的第一个进程。
以下以设置ngrok自启动为例
通常Launchd Daemon 放置在 /System/Library/LaunchAgents目录下
<?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.localhost.ngrok.plist</string>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/Users/nz/Documents/Crons/ngrok/ngrok-err.log</string>
<key>StandardOutPath</key>
<string>/Users/nz/Documents/Crons/ngrok/ngrok.log</string>
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string><![CDATA[/usr/local/bin:/usr/bin:/bin]]></string>
</dict>
<key>WorkingDirectory</key>
<string>/Users/nz/Documents/Crons</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/ngrok</string>
<string>start</string>
<string>ssh</string>
</array>
</dict>
</plist>
载入启动项
launchctl load /System/Library/LaunchAgents/com.localhost.ngrok.plist
取消启动项
launchctl unload /System/Library/LaunchAgents/com.localhost.ngrok.plist
如何不用任何第三方工具挂载系统的隐藏分区如EFI分区等
# 这里主要用到系统的命令行工具
# 使用以下命令打印系统已经识别的可以挂载的分区信息,如下面的列表显示,我的分区比较多可能列表有点长
sudo diskutil list
#: TYPE NAME SIZE IDENTIFIER
# 0: GUID_partition_scheme *120.0 GB disk0
# 1: EFI NO NAME 314.6 MB disk0s1
# 2: Microsoft Reserved 314.6 MB disk0s2
# 3: Microsoft Basic Data 42.4 GB disk0s3
# 4: Windows Recovery 502.3 MB disk0s4
# 5: Apple_APFS Container disk1 76.5 GB disk0s5
# /dev/disk1 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
# 0: APFS Container Scheme - +76.5 GB disk1
# Physical Store disk0s5
# 1: APFS Volume OSX 51.9 GB disk1s1
# 2: APFS Volume Preboot 45.0 MB disk1s2
# 3: APFS Volume Recovery 522.7 MB disk1s3
# 4: APFS Volume VM 3.2 GB disk1s4
# /dev/disk2 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
# 0: GUID_partition_scheme *1.0 TB disk2
# 1: Microsoft Reserved 134.2 MB disk2s1
# 2: Microsoft Basic Data Programs 85.9 GB disk2s2
# 3: Microsoft Basic Data Documents 107.4 GB disk2s3
# 4: Microsoft Basic Data Others 214.7 GB disk2s4
# 5: EFI 314.6 MB disk2s5
# 6: Apple_HFS osxhd1 107.2 GB disk2s6
# 7: Apple_HFS osxhd2 214.6 GB disk2s7
# 8: Apple_HFS osxhd3 269.5 GB disk2s8
# 使用 mount命令挂载你想挂载的分区,OSX默认的会挂载一般的分区,如APFS、NTFS文件系统的分区。默认的为了系统安全着想,EFI分区或是双系统Windows的DOS文件分区是隐藏的,如要查看这些隐藏分区的文件,就需要手动来挂载。这里我们以挂载EFI分区为例。
# 如要挂载EFI分区,这里 EFI 分区对应的就是标识符是 disk0s1
# 第一步 -> 新建一个目录作为磁盘的挂载位置
mkdir /Users/user-name/Documents/efi_temp
# 第二步 -> 挂载 EFI 分区到目录 /Volumes/efi
mount -t msdos /dev/disk0s1 /Users/user-name/Documents/efi_temp
# 第三步 -> 操作完成后取消挂载,防止误操作
diskutil unmount /dev/disk0s1
如何从OSX中移出已删除的重复的APP链接
很多时候当我们更新OSX系统中的某个软件,比如我把Microsoft office 从 15.0 更新到 16.0, 在卸载了15.0的版本之后,当我在Finder中用右键选择打开xlsx表格文件时,Finder还是回显示已经卸载的15.0版本的链接。显然在我们非正常卸载APP后(直接将旧版本APP删除到回收站),系统并没有自动实时更新内置的软件列表,这样就会导致这样的问题。
So 问题是 怎么办?
以下给出命令行的解决办法,简单粗暴。
# 重置系统的内置软件索引,去除旧版本和重复软件的注册
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user
# 重启Finder使设置生效
killall Finder
之后再查看,发现右键烦人的重复老版本软件全都拜拜了。:)