Files
cours/sources/clippings/github/sosedofflunchy-go OSX Launch Manager.md
T
2026-06-05 01:05:58 +02:00

161 lines
3.2 KiB
Markdown

---
link: "https://github.com/sosedoff/lunchy-go"
created: 2026-06-05
tags:
- "#t/clippings/github"
---
## lunchy-go
A friendly wrapper for launchctl. Start your agents and go to lunch!
This is a port of original [lunchy](https://github.com/mperham/lunchy) ruby gem by Mike Perham with extra functionality.
## Overview
Don't you hate OSX's launchctl? You have to give it exact filenames. The syntax is annoying different from Linux's nice, simple init system and overly verbose. It's just not a very developer-friendly tool.
Lunchy aims to be that friendly tool by wrapping launchctl and providing a few simple operations that you perform all the time:
- ls \[pattern\]
- start \[pattern\]
- stop \[pattern\]
- restart \[pattern\]
- status, ps \[pattern\]
- install \[file\]
- show \[pattern\]
- edit \[pattern\]
- remove, rm \[pattern\]
- scan \[path\]
where pattern is just a substring that matches the agent's plist filename.
So instead of:
```
$ launchctl load ~/Library/LaunchAgents/io.redis.redis-server.plist
```
you can do this:
```
$ lunchy start redis
```
and:
```
$ lunchy ls
com.danga.memcached
com.google.keystone.agent
com.mysql.mysqld
io.redis.redis-server
org.mongodb.mongod
```
## Install
You can install binary by running the following bash command:
```
curl -s https://raw.githubusercontent.com/sosedoff/lunchy-go/master/install.sh | bash
```
#### Homebrew
Install using [Homebrew](https://brew.sh/):
```
brew install lunchy-go
```
#### Binary Releases
Precompiled binaries are available on Github: [https://github.com/sosedoff/lunchy-go/releases](https://github.com/sosedoff/lunchy-go/releases)
#### Build from source
Build source code with Go 1.2+:
```
git clone https://github.com/sosedoff/lunchy-go.git $GOPATH/src/lunchy
cd lunchy
go build
mv ./lunchy-go /usr/local/bin/lunchy
```
## Usage
Add a new plist:
```
# Install plist
$ lunchy install /usr/local/Cellar/redis/2.8.1/homebrew.mxcl.redis.plist
```
Manage services:
```
$ lunchy start redis
$ lunchy stop redis
$ lunchy restart redis
$ lunchy status redis
```
If you have multiple plists from homebrew, you can simple control all of them:
```
$ lunchy status
homebrew.mxcl.elasticsearch
homebrew.mxcl.mysql
homebrew.mxcl.postgresql
homebrew.mxcl.redis
# Will stop all processes prefixed by "homebrew"
$ lunchy stop homebrew
```
Manage plists:
```
$ lunchy show redis
$ lunchy edit redis
```
Scan directory for existing plists:
```
$ lunchy scan /usr/local/Cellar
```
Scan all homebrew plists:
```
$ lunchy scan homebrew
```
## Profiles
When switching between different projects you might find yourself stopping and starting lots of different daemons in order to reduce memory usage. This is all good but there's a better way of doing it. Enter lunchy profiles.
Profile file `.lunchy` should be placed under your project's root directory and include a list of services that needs to be started or stopped. Example:
```
postgres
redis
elasticsearch
```
Then you can simply run the following command to start/stop/restart ALL of them at once:
```
lunchy start
lunchy stop
lunchy restart
```
## License
The MIT License (MIT)
Copyright (c) 2013-2015 Dan Sosedoff, [dan.sosedoff@gmail.com](mailto:dan.sosedoff@gmail.com)