launchd dường như bỏ qua StartCalWikiInterval trên Yosemite


9

Tôi đã cố gắng cập nhật Homebrew đúng giờ với launchd. Tập tin plist của tôi được trình bày ở đây:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>ms.liu.homebrew.update</string>
  <key>UserName</key>
  <string>LiuMS</string>
  <key>ProcessType</key>
  <string>Background</string>
  <key>EnvironmentVariables</key>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/brew</string>
    <string>update</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Hour</key>
    <integer>20</integer>
    <key>Minute</key>
    <integer>0</integer>
  </dict>
  <key>StandardOutPath</key>
  <string>/usr/local/logs/ms.liu.homebrew.update.out</string>
  <key>StandardErrorPath</key>
  <string>/usr/local/logs/ms.liu.homebrew.update.err</string>
</dict>
</plist>

Nó hoạt động bằng cách nào đó: tôi có thể thực thi launchctl start ms.liu.homebrew.update thủ công để cập nhật Homebrew của tôi. Tuy nhiên, launchd không thực hiện dịch vụ này định kỳ: những thay đổi cuối cùng đối với tệp mà thiết bị xuất chuẩn chuyển hướng đến là hai ngày trước.

Tôi đã cố gắng để có được thông tin về dịch vụ này nhưng không có gì:

> launchctl print user/%MyPID%/ms.liu.homebrew.update`` 
Could not find service "ms.liu.homebrew.update" in domain for uid: %MyPID%

Có vẻ như tôi chưa tải thành công dịch vụ của mình. Làm sao? Tôi đã sử dụng launchctl load nhưng có vẻ như nó đã bị phản đối Thay vào đó, trang Man khuyên bạn nên bootstrap:

> launchctl bootstrap user/%MyPID% %Path-to-plist%
> %Path-to-plist%: Service cannot load in requested session

Tôi nên làm gì? Cách sử dụng đúng cách launchctl bootstraplaunchctl print?

Tôi đang chạy OS X Yosemite GM Candidate 1 trên MacBookPro với màn hình Retina (2013).

Câu trả lời:


2

Tôi chỉ mới bắt đầu làm việc này, vì vậy câu trả lời này chỉ là dự kiến ​​- nhưng tôi hy vọng nó có ích hơn là không có câu trả lời nào cả. (Tôi sẽ để lại nó như một bình luận nếu tôi có đủ đại diện.)

Đây có phải là trong ~/Library/LaunchAgents danh mục? Có vẻ như những thứ này được bootstrapping vào gui tên miền, không phải của bạn user miền. Vì vậy, bạn có thể làm:

launchctl print gui/%UID%/ms.liu.homebrew.update

và nó nên hoạt động. (Phải không?)

Có lẽ là lý do bạn có thể khởi động nó vào user tên miền là nó đã được bootstraged vào gui miền.

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.