Làm thế nào để kiểm tra xem cờ OS Xiên bị vô hiệu hóa cho các dịch vụ launchd được thiết lập chưa?


8

Theo trang người đàn ông cho launchctl(nhấn mạnh của tôi):

   -w Ghi đè phím Vô hiệu hóa và đặt thành sai. Trong các phiên bản trước, tùy chọn này sẽ sửa đổi tệp cấu hình. Bây giờ trạng thái của Khóa bị vô hiệu hóa được lưu trữ ở nơi khác trên đĩa.

Vì trạng thái hiện tại của cờ bị vô hiệu hóa không còn được đặt trong .plisttệp, nên việc kiểm tra Disabledkhóa không còn là cách chính xác để biết liệu dịch vụ có chạy trong lần khởi động tiếp theo hay không.

Đâu là "nơi khác trên đĩa"? Quan trọng hơn (và quan trọng hơn), làm thế nào để kiểm tra xem cờ này có được đặt không?

Ngoài ra, là nó có thể thiết lập một dịch vụ để chạy khi khởi động tiếp theo mà không cần buộc nó để bắt đầu ngay lập tức (như với launchctl load -w /Library/LaunchDaemons/my-service.plist)?

Câu trả lời:


8

Hiện tại, vô hiệu hóa (kể từ 10.6.x) được lưu trữ trong /private/var/db/launchd.db/com.apple.launchd/overrides.plist, dưới dạng các mục như:

<key>com.apple.AppleFileServer</key>
<dict>
    <key>Disabled</key>
    <true/>
</dict>

Bạn có thể phân tích tệp này để xem các mục launchd nào bị ghi đè, nhưng tệp chỉ được đặt thành quyền truy cập gốc ("-rw ------- 1 bánh xe gốc") và không có gì đảm bảo rằng Apple sẽ không thay đổi như thế nào mọi thứ được lưu trữ lại trong 10.7 ...

Ngoài ra, tôi không biết cách nào để kích hoạt một mục launchd hiện có để tải vào lần khởi động tiếp theo mà không tải nó ngay lập tức. (Nếu đó là một mục mới, không có vấn đề gì: hãy đảm bảo rằng nó đã bị Vô hiệu hóa = sai trong đó và thả nó vào / Library / LaunchDaemons.)


2
có vẻ như nó di chuyển vào ngày 10.11 :( có ý tưởng nào cho câu trả lời được cập nhật vào ngày 10.11 không?
Peter Lapisu

0

Đối với các phiên bản mới của macOS, launchctl cú pháp và lệnh đã thay đổi .

Sau đây đã được thử nghiệm trên macOS High Sierra ( 10.13.4):

launchctl print user/$(id -u)
# For GUI domain (effectively "flat" with login domain)
# See man launchctl for details
launchctl print gui/$(id -u)

Bạn có thể xem nhiều thuộc tính của dịch vụ trên hệ thống được đính kèm với người dùng của bạn với các biến thể của lệnh launchctl printlaunchctl listlệnh. Ví dụ: để xem trạng thái của cờ bị vô hiệu hóa, hãy tìm một phần như thế này:

disabled services = {
{
    "com.apple.macbuddy.icloudsetup.user" => false
    "com.apple.ManagedClientAgent.enrollagent" => true
    "com.apple.FileStatsAgent" => false
    "com.apple.FolderActionsDispatcher" => true
    "homebrew.mxcl.postgresql" => false
    "com.apple.appleseed.seedusaged.postinstall" => true
    "homebrew.mxcl.mysql" => false
}

cũng cólaunchctl print system/{service-name}
wvducky
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.