launchd守护进程
2016-04-21 21:16
309 查看
原文出处:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%9F%A5%E9%81%93/4476.shtml
1. launchd
mac系统下通用的进程管理器,是mac系统下非常重要的一个进程,一般来说该进程不允许直接以命令行的形式调用。只能通过其控制管理界面,launchctl来进行控制。
launchd主要功能是进程管理。可以理解成是一个常驻在后台的进程,根据用户的配置,来响应特定的系统事件。launchd既可以用于系统级别的服务,又可以用于个人用户级别的服务。
2. 在launchd的语境中,常驻进程有两种:
3. 守护进程(daemon)
是指在unix或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。
通常,守护进程没有任何存在的父进程(即pid=1),且在unix系统进程层级中直接位于init之下。守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程调用fork,然后使其父进程立即终止,使得这个子进程能在init下运行。这种方法通常被称为“脱壳”。
系统通常在启动时一同起动守护进程。守护进程为对网络请求,其他硬件 活动等进行响应,或其他通过某些任务
此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com
对其他应用程序的请求进行回应提供支持。守护进程也能够对其他硬件 进行配置(如在某些linux系统上的devfsd),运行计划任务(例如cron),以及运行其他任务。
在dos环境中,此类应用程序被称为驻留程序(tsr)。在windows系统中,由称为windows服务的应用程序来履行守护进程的职责。
在原本的mac
os系统中,此类应用程序被称为“extensions”。而作为unix-like的 mac
os x有守护进程。(在mac os x中也有“服务”,但他们与windows中类似的程序在概念上完全不相同。)
4. mac的守护进程目录有以下几处:
另:/library/startupitems
这个目录下也有可能存在开机启动项目的配置
以上是launchd的相关配置的存放目录,可以看到,一般我们个人编写的守护进程,都应该放到~/library/launchagents目录里面。
5.
举个例子,我以jenkins为例来讲。
macosx系统下,守护进程文件都是存在library文件夹,用户相关的library可能存在于以下三处:
上面3处均有可能存在jenkins的守护进程文件(xxx.plist)。根据上面讲的几处守护进程的目录,找到jenkins的启动配置文件是/library/launchdaemons/org.jenkins-ci.plist。
另外,查的过程中我还发现jenkins的uninstall脚本存放于'/library/application
\support/jenkins/'下,uninstall.command和jenkins-runner.sh。我想一些其他通过dmg或者pkg安装的app也是如此,要卸载的话,依次从上头的几个目录中删除配置文件即可。
1. launchd
mac系统下通用的进程管理器,是mac系统下非常重要的一个进程,一般来说该进程不允许直接以命令行的形式调用。只能通过其控制管理界面,launchctl来进行控制。
launchd主要功能是进程管理。可以理解成是一个常驻在后台的进程,根据用户的配置,来响应特定的系统事件。launchd既可以用于系统级别的服务,又可以用于个人用户级别的服务。
2. 在launchd的语境中,常驻进程有两种:
daemon # 也就是我们常说的守护进程,这种一般对所有用户都有相同的行为,响应相同的事件,始终运行于后台,没有前台交互界面。 agent # 这种是用户级别的服务进程,一般以用户的身份运行。
3. 守护进程(daemon)
是指在unix或其他多任务操作系统中在后台执行的电脑程序,并不会接受电脑用户的直接操控。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。
通常,守护进程没有任何存在的父进程(即pid=1),且在unix系统进程层级中直接位于init之下。守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程调用fork,然后使其父进程立即终止,使得这个子进程能在init下运行。这种方法通常被称为“脱壳”。
系统通常在启动时一同起动守护进程。守护进程为对网络请求,其他硬件 活动等进行响应,或其他通过某些任务
此文来自: 马开东博客 转载请注明出处 网址: http://www.makaidong.com
对其他应用程序的请求进行回应提供支持。守护进程也能够对其他硬件 进行配置(如在某些linux系统上的devfsd),运行计划任务(例如cron),以及运行其他任务。
在dos环境中,此类应用程序被称为驻留程序(tsr)。在windows系统中,由称为windows服务的应用程序来履行守护进程的职责。
在原本的mac
os系统中,此类应用程序被称为“extensions”。而作为unix-like的 mac
os x有守护进程。(在mac os x中也有“服务”,但他们与windows中类似的程序在概念上完全不相同。)
4. mac的守护进程目录有以下几处:
~/library/launchagents # 用户的进程 /library/launchagents # 管理员设置的用户进程 /library/launchdaemons # 管理员提供的系统守护进程 /system/library/launchagents # mac操作系统提供的用户进程 /system/library/launchdaemons # mac操作系统提供的系统守护进程
另:/library/startupitems
这个目录下也有可能存在开机启动项目的配置
以上是launchd的相关配置的存放目录,可以看到,一般我们个人编写的守护进程,都应该放到~/library/launchagents目录里面。
5.
举个例子,我以jenkins为例来讲。
macosx系统下,守护进程文件都是存在library文件夹,用户相关的library可能存在于以下三处:
/system/library /library $home/library
上面3处均有可能存在jenkins的守护进程文件(xxx.plist)。根据上面讲的几处守护进程的目录,找到jenkins的启动配置文件是/library/launchdaemons/org.jenkins-ci.plist。
另外,查的过程中我还发现jenkins的uninstall脚本存放于'/library/application
\support/jenkins/'下,uninstall.command和jenkins-runner.sh。我想一些其他通过dmg或者pkg安装的app也是如此,要卸载的话,依次从上头的几个目录中删除配置文件即可。
相关文章推荐
- php守护进程 加linux命令nohup实现任务每秒执行一次
- Python守护进程(daemon)代码实例
- C语言编写Linux守护进程实例
- linux shell实现守护进程脚本
- linux下的守护进程
- Windows使用bat批处理实现守护进程脚本分享
- Linux守护进程的启动方法
- 分享PHP守护进程类
- PHP守护进程实例
- PHP程序级守护进程的实现与优化的使用概述
- PHP扩展程序实现守护进程
- shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
- PHP高级编程实例:编写守护进程
- 如何写php守护进程(Daemon)
- 使用Python编写Linux系统守护进程实例
- linux 创建守护进程的相关知识
- Python守护进程用法实例分析
- 进程管理工具supervisor简介及使用技巧
- PHP守护进程实例
- Linux操作系统下守护进程的编程方法