Skip to main content

pythonic wrapper for OS X launchd

Project description

python-launchd - pythonic interface for launchd

https://badge.fury.io/py/launchd.png https://pypip.in/d/launchd/badge.png

launchd is a pythonic interface to interact with OS X’s launchd. It provides access to basic querying and interaction with launchd. It is implemented using the Objective C ServiceManagement framework as well as the launchd command line utility. Therefore, this python package can only be used on OS X

The python objective C bridge contains some special types. This package strips off all non built-in type information and returns pure python data.

Examples

The relevant import statement is:

import launchd

Listing all launchd jobs:

for job in launchd.jobs():
    print(job.label, job.pid, job.status, job.properties, job.plistfilename)

Find the pid and laststatus of a job:

>>> launchd.LaunchdJob("com.apple.Finder").pid
278

>>> launchd.LaunchdJob("com.apple.Finder").laststatus
0

>>> launchd.LaunchdJob("com.example.fubar").pid
Traceback (most recent call last):
  File "launchd/launchctl.py", line 78, in refresh
    raise ValueError("job '%s' does not exist" % self.label)
ValueError: job 'com.example.fubar' does not exist

Detect if a job exists:

>>> launchd.LaunchdJob("com.example.fubar").exists()
False

launchd job properties (these come directly from launchd and NOT the .plist files):

>>> launchd.LaunchdJob("com.apple.Finder").properties
{'OnDemand': 1, 'PID': 278, 'PerJobMachServices': {'com.apple.coredrag': 0, 'com.apple.axserver': 0, 'com.apple.CFPasteboardClient': 0, 'com.apple.tsm.portname': 0}, 'LimitLoadToSessionType': 'Aqua', 'Program': '/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder', 'TimeOut': 30, 'LastExitStatus': 0, 'Label': 'com.apple.Finder', 'MachServices': {'com.apple.finder.ServiceProvider': 10}}

>>> launchd.LaunchdJob("com.apple.Finder").properties["OnDemand"]
1

Find all plist filenames of currently running jobs:

for job in launchd.jobs():
   if job.pid is None or job.plistfilename is None:
      continue
   print(job.plistfilename)

Job properties of a given job (this uses the actual .plist file):

>>> launchd.plist.read("com.apple.kextd")
{'ProgramArguments': ['/usr/libexec/kextd'], 'KeepAlive': {'SuccessfulExit': False},
'POSIXSpawnType': 'Interactive', 'MachServices': {'com.apple.KernelExtensionServer':
{'HostSpecialPort': 15}}, 'Label': 'com.apple.kextd'}

Installation

# NOT YET AVAILABLE
$ pip install launchd

or, if you want to work using the source tarball:

$ python setup.py install

Requirements

  • OS X >= 10.6

  • Python 2.7, 3.2 or 3.3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

launchd-0.1.tar.gz (8.3 kB view details)

Uploaded Source

File details

Details for the file launchd-0.1.tar.gz.

File metadata

  • Download URL: launchd-0.1.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for launchd-0.1.tar.gz
Algorithm Hash digest
SHA256 19b15b6ba4c8acef0c4ee017279fde1b6252c7030c29b77797811c902fa6d689
MD5 f62b853ff019a593c8e0c2d5a0b12713
BLAKE2b-256 ac4879bf175c7f03b976e9509e129ba13d5e0a7e6c07ec5c9205f2e3f98c9437

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page