从终端启动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

之后再查看,发现右键烦人的重复老版本软件全都拜拜了。:)