Làm cách nào để sử dụng các lệnh launchctl không phải là di sản trực tuyến để tải và hủy tải plists?


13

Tôi có một số tập tin plist trong ~/Library/LaunchAgents.

Tôi đã vui vẻ sử dụng launchctl load -wlaunchctl unload -wbật và tắt chúng trong nhiều năm. Tuy nhiên, tôi nhận thấy rằng bây giờ loadunloadđược chuyển xuống phần "di sản" của trang người đàn ông. Hãy gọi một trong số họ com.example.service.plist.

Tuy nhiên, khi tôi cố gắng tương tác với các plists này qua launchctl enable "gui/$(id -u)/com.example.service"launchctl disable "gui/$(id -u)/com.example.service", các lệnh launchd khác dường như báo cáo thành công - ví dụ, launchctl print "gui/$(id -u)"hoàn toàn hiển thị cho tôi các cờ bị vô hiệu hóa tương ứng với trạng thái mà tôi đã đặt - các dịch vụ không thực sự bắt đầu và dừng hoặc lắng nghe và không niêm yết trên các cổng của họ.

Có một số bước tôi đang thiếu? Hiện tại tôi đang gắn bó loadunloadnhưng tôi muốn tìm hiểu cách tương tác không bị phản đối với những thứ này trước khi Apple cuối cùng đóng sầm cửa theo cách cũ / xấu ...


Di sản có nghĩa là một sự thay đổi đang diễn ra - bạn vẫn có thể sử dụng tải và dỡ xuống nội dung trái tim của bạn vào ngày 10.11 trở xuống. Giả định của tôi là Apple sẽ có tài liệu tại WWDC năm nay và mốc thời gian để di chuyển ...
bmike

1
Tôi đoán có thể chưa có câu trả lời cho điều này, nhưng nó chắc chắn trông giống như enabledisableđược dự định để thay thế loadunload. Tôi không thể khiến họ làm việc như tôi mong đợi.
Glyph

1
Bạn đã thử làm theo launchctl enablevới launchctl kickstart?

Tôi không có, nhưng không launchctl kickstartnên chỉ kích hoạt công việc đang đề cập? Tôi đang sử dụng launchd đặc biệt vì tôi muốn kích hoạt hoàn toàn theo yêu cầu.
Glyph

2
Điều này có vẻ như có thể giúp: babodee.wordpress.com/2016/04/09/launchctl-2-0-syntax
TJ Luoma

Câu trả lời:


6

Tôi đã hỏi người dùng Twitter @launchderp :

@launchderp Có launchctl loadvà không tải vẫn an toàn để sử dụng, ít nhất là cho đến ngày 10.12 hoặc bất cứ điều gì tiếp theo?

cf Làm cách nào để sử dụng các lệnh launchctl không "kế thừa" để tải và hủy tải plists?

@launchderp đã trả lời

@tjluoma Vâng họ vẫn an toàn. Quá nhiều năm phụ thuộc để phá vỡ chúng.

Mặc dù điều này có vẻ không giống như một tuyên bố chính thức của Apple, tôi tin rằng người này là một người đang tích cực làm việc launchdcho Apple và tin tưởng vào những gì họ nói. YMMV.

Đạo đức của câu chuyện: Nếu tải / dỡ tải đang hoạt động cho bạn, hãy tiếp tục sử dụng chúng :-)


2
Không đánh dấu là "được chấp nhận" vì nó không hoàn toàn giải quyết câu hỏi về enabledisablenhưng được đánh giá cao vì tôi vẫn đánh giá cao thông tin :).
Glyph

1

Bài viết được giới thiệu bởi TJ Luoma là rất hữu ích. Các bước để khởi chạy Daemon:

  1. Lưu tập tin plist của bạn /Library/LaunchDaemons/như bình thường. Giả sử tập tin là com.example.mysrv.plistvà Nhãn theo nguyên tắc là com.example.mysrv.
  2. sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist. Lưu ý rằng đường dẫn có thể là tương đối (đến $PWD) hoặc tuyệt đối.
  3. Kiểm tra dịch vụ với sudo launchctl print system/com.example.mysrv. Nó sẽ nói "chạy".

Đại lý khởi động nên tương tự. Hãy cẩn thận: Tôi không biết làm thế nào để dừng một dịch vụ mà không tải nó qua bootout.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.