`

配置Mac OS X的启动项

 
阅读更多

在Mac OS X中,有三种方式来实现启动项的配置:1)Login Items;2)StartupItems;3)launchd daemon。

1.Login Items

打开System Preferences,选择System -> Accounts,选择Login Items选项卡,将/Applications目录下的.app直接拖进右边的列表中。重启电脑之后就会发现列表中的程序在开机之后就自动启动了。

2.StartupItems

StartupItems,顾名思义,就是在系统启动过程中运行的程序,它们可以是运行完就立即终止的程序(比如,开机清空废纸篓),也可以是一直持续在系统运行周期的后台进程。

StartupItems一般存放在以下两个路径下:

1)/System/Library/StartupItems

2)/Library/StartupItems

大部分与系统相关的StartupItems都放在/System/Library/StartupItems这个路径下,它们会先于/Library/StartupItems路径下的执行,因为前者路径下的StartupItems提供了系统级的基础服务,比如crash reporting,core graphics services,system accounting等,而后者路径在默认情况下是不存在的,需要自己手动创建。

这里我们以/Library/StartupItems目录下的IcebergControlTower为例。

简单来说,在Mac OS X上,一个StartupItems包含以下两个方面的内容:

1)可执行程序;

2)包含依赖进程关系的plist文件(StartupParameters.plist)。

2.1 The Property List

2.1.1 Plist的key值与含义

StartupParameters.plist 是一个属性列表,包含了运行可执行程序的必要条件。

该plist需要获得root权限,包含了几个方面的内容:

1)Description;

      对该服务的一个简单的描述,仅仅是描述,并不是说明实际的进程名称。

2)Provides;

      指定StartupItems提供的服务。如图plist文件Provides中说明,StartupItems开启的后台进程名为:Iceberg Control Tower。

      Provides可以指定多个服务,反映在图中就是Item0,Item1…等。这里只有Item0。

3)Uses;

     指定了在StartupItems加载之前需要开启的服务。Mac OS X系统先尝试着加载Uses中指定的服务,然后再加载StartupItems。也就是说,即使Uses中指定的服务没有加载成功,系统仍然会加载StartupItems。

4)OrderPreference;

     指定执行StartupItems的时间顺序。这个顺序的重要程度排在Uses之后,是指定执行完Uses之后的顺序。可能的取值包括:First, Early, None(default), Late, Last。

5)Messages。

2.1.2 创建一个StartupParameters.plist文件

[html] view plaincopy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"   
  3.     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
  4. <plist version="1.0">  
  5. <dict>  
  6.     <key>Description</key>  
  7.     <string>Iceberg Control Tower Initilaization</string>  
  8.     <key>Provides</key>  
  9.     <array>  
  10.         <string>Iceberg Control Tower</string>  
  11.     </array>  
  12.      <key>Uses</key>  
  13.     <array>  
  14.         <string>Disks</string>  
  15.     </array>  
  16.     <key>OrderPreference</key>  
  17.         <string>None</string>  
  18. </dict>  
  19. </plist>  


 

2.2 The Executable File

注意:1)可执行文件的名称和它所在的文件夹的文件名是一样的,这是系统默认的规则。

      2)操作可执行文件需要获得root权限。

      3)可执行文件是一个shell脚本。

打开IcebergControlTower文件目录下同名的可执行文件,可以看到脚本的具体内容:

一般的可执行文件包含这样几个方面的内容:

1)./etc/rc.common

Apple提供的一个脚本库,该脚本库里包含了为可执行文件引进参数的接口。在这里load这个库主要是调用RunService。

2)StartService(), StopService(), RestartService()

当可执行文件接收到的参数为start,stop或者restart时,执行相对应的函数。

参数含义:

start:开机过程中开启服务;

stop:关机过程中停止服务;

restart:在特定条件下重启服务。

3)RunService  “$1”

执行传递给该脚本的第一个参数指定的服务。

“$1” 表示传给该脚本的第一个参数。例如,传入的参数为start,则执行StartService()。

3. Launchd Daemon

launchd是Mac OS下用于初始化系统环境的关键进程,它是内核装载成功之后在OS环境下启动的第一个进程。

采用这种方式来配置自启动项很简单,只需要一个plist文件,通常(同时也是系统推荐)是将plist放在~/Library/LaunchAgents路径下。

3.1 plist文件格式及每个字段的含义:

1)Label【required

该项服务的名称。

2)OnDemand【optional

10.4提供的一个key值,功能与KeepAlive的基本功能相似,在10.5及之后的系统中被KeepAlive替代。KeepAlive扩展了更多的功能,除了使用单一的boolean作为key值之外,还能使用字典结合多个key值。

3)Program【ProgramArgument是required的,在没有ProgramArgument的情况下,必须要包含Program这个key】

指定可执行文件的路径。

4)RunAtLoad【optional

标识launchd在加载完该项服务之后立即启动路径指定的可执行文件。默认值为false。

5)WorkingDirectory【optional

该key在开启可执行文件之前,指定当前工作目录的路径。

6)KeepAlive【optional

这个key值是用来控制可执行文件是持续运行呢,还是满足具体条件之后再启动。默认值为false,也就是说满足具体条件之后才启动。当设置值为ture时,表明无条件的开启可执行文件,并使之保持在整个系统运行周期内。

3.2 创建一个plist文件:

[html] view plaincopy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"   
  3.     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">  
  4. <plist version="1.0">  
  5. <dict>  
  6.     <key>Label</key>  
  7.     <string>com.yourcompany.HSPA_USB_MODEM</string>  
  8.     <key>OnDemand</key>  
  9.     <false/>  
  10.     <key>Program</key>  
  11.     <string>/Application/HSPA USB MODEM.app/Running</string>  
  12.     <key>RunAtLoad</key>  
  13.     <true/>  
  14.     <key>WorkingDirectory</key>  
  15.     <string>/Application/HSPA USB MODEM.app</string>  
  16. </dict>  
  17. </plist>  

4.三种方式的区别

初步了解了系统的启动过程之后(http://blog.csdn.net/abby_sheen/article/details/7817132),再来看这三种配置启动项的方式,就很容易理解这三种方式之间的差异了。

总的来说,LoginItems 和StartupItems的区别较明显。

 

StartupItems

LoginItems

Depedency Ordering

Need

Do not Need

Load Timing

during startup

after a user logs in

Launched by WHO

by root, but not necessarily

the user

Processes types

background processes and processes that terminate after running

any Mac OS X executable

对于我们自定义的Launchd daemon,通常(同时也是系统推荐)是放在~/Library/LaunchAgents路径下。launchd进程需要在用户login之后才能加载。这种方式与LoginItems最大的区别在于,启动的进程不同。LoginItems是通过loginwindow去启动的,而Launchd daemon是通过com.apple.launchd.peruser启动。

分享到:
评论

相关推荐

    Mac OS X Snow Leopard 10A432雪豹 BT种子

    推荐使用USB移动硬盘来制作做Mac OS X 的启动安装盘,先在USB中划分一个大于6.5GB的硬盘空间分区用来制作Mac OS X硬盘启动盘,然后在PC机的硬盘中划分一个大于20GB的硬盘分区用来安装Mac OS X Snow Leopard 10.6.2...

    配置mac启动项的3种方式总结

    在Mac OS X中,有三种方式来实现启动项的配置:1)Login Items;2)StartupItems;3)launchd daemon。下面话不多说了,来一起看看详细的介绍吧。 1. Login Items 打开System Preferences,选择System -&gt; Accounts,...

    Vodacom-Data-Usage:Mac OS X菜单栏状态项,用于显示您的每日配额使用情况。 它每小时都会从Vodacom网站上直接检索您的可用余额。 如果您具有Internet网关,则它可以检索高峰和非高峰之间的使用情况分配

    Mac OS X菜单栏状态项,用于显示您的每日配额使用情况。 它每小时都会从Vodacom网站上直接检索您的可用余额。 如果您有适当的本地数据使用情况监视器,它可以检索高峰和非高峰之间的使用情况划分。 依存关系 Python ...

    tarea-1-integracion

    PostgreSQL您将需要一个具有src/config/database.js配置的名称和用户/密码的src/config/database.js Node.js LTS(10.x或12.x)项目设置克隆存储库安装依赖项: yarn install数据库设置(开发)安装PostgreSQL 在...

    spala:Spala(SPA LARAVEL):适用于Laravel和Vue开发人员的现代轻量级CMS(开源项目)

    和SPA内容管理系统入门这些说明将为您提供在本地Linux或Mac OS X计算机上启动并运行的项目的副本正在安装移至您的Web项目目录并使用Gi​​t克隆应用程序cd /var/...

    expper:专家网站源代码-Source code

    # in Mac OS X brew install redis brew install rabbitmq brew install elasticsearch redis-server rabbitmq-server elasticsearch 根据您的设置创建和修改配置文件 cp src/main/resources/config/applicat

    my-university:示例项目

    在使用Homebrew的Mac OS X上: brew install postgresql 启动服务:检查或 PostgreSQL服务管理 创建开发数据库 createdb iic2513template_dev 运行迁移 ./node_modules/.bin/sequelize db:migrate 运行应用程序! ...

    mouseterm:将 xterm 鼠标报告添加到 Terminal.app

    鼠标项MouseTerm 是 Mac OS X 的的插件,它将鼠标事件传递到终端,允许您在支持它们的应用程序中使用鼠标快捷方式。 首先,首先安装 (没有它,MouseTerm 将无法工作!)。 完成后,打开.dmg文件,运行Install ,...

    alfred powerpack3.3

    阿尔弗雷德是Mac OS X的键盘驱动的生产力应用程序,帮助你启动应用程序和搜索本地计算机和网络以极快的速度。 产品特点: *应用程序启动器:用一个快捷键启动任何应用程序。阿尔弗雷德将学习你经常使用,当你搜索...

    MySQL 5.1参考手册

    2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理...

    MySql 5.1 参考手册.chm

    2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译...

    浏览器 Vivaldi_TP_1.0.83.38

    我认为这对某些用户来说会很有用,尤其是“快速命令”功能,它能够让你像使用OS X的Spotlight一样搜索或运行命令。 Vivaldi是Opera前CEO和联合创始人谭咏文(Jon von Tetzchner)启动的一个新项目。你也许对谭咏文...

    MySQL 5.1中文手冊

    2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译...

    MySQL 5.1参考手册 (中文版)

    2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译...

    mysql官方中文参考手册

    2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译...

    MYSQL中文手册

    2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理...

    MySQL 5.1参考手册中文版

    2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理...

Global site tag (gtag.js) - Google Analytics