Làm thế nào để bạn tạo một tập lệnh hoặc ứng dụng để chạy hoặc dừng chạy tự động khi hệ thống được khởi động, người dùng đăng nhập vào một thời điểm cụ thể, khi đĩa được gắn, v.v.?
Làm thế nào để bạn tạo một tập lệnh hoặc ứng dụng để chạy hoặc dừng chạy tự động khi hệ thống được khởi động, người dùng đăng nhập vào một thời điểm cụ thể, khi đĩa được gắn, v.v.?
Câu trả lời:
Nếu bạn muốn một cái gì đó chạy khi người dùng đăng nhập, cách dễ nhất là sử dụng GUI. Bạn có thể
System Prefs > Accounts > Login Items
màn hình và thêm mục ở đó bằng cách
+
biểu tượng.app
vào khungOptions
, sau đó chọnOpen at Login
Nếu bạn muốn khởi chạy một cái gì đó không phải là a .app
hoặc bạn muốn có quyền kiểm soát nhiều hơn đối với việc khởi chạy nó, chẳng hạn như:
sau đó bạn muốn sử dụng các giải pháp kỹ thuật đó là launchd
.
Cách dễ nhất để thiết lập launchd
tệp cấu hình là sử dụng một công cụ để trợ giúp. Tại thời điểm viết phương pháp phổ biến nhất là Lingon (có phiên bản miễn phí cũ hơn có sẵn từ SourceForge) hoặc công cụ Trang web PList .
Nếu bạn không muốn sử dụng Lingon hoặc Trang web PList và chỉ muốn sử dụng các công cụ thô có sẵn trên hệ thống, bạn có thể tự viết launchd
plist
bằng tay
Đây là tập lệnh launchd của tôi để chạy một số ứng dụng liên tục sau khi hệ thống khởi động (độc lập với người dùng đăng nhập). Nó nằm trong / System / Library / LaunchAgents / và được gọi là someApp.restart.plist. Nếu nó được chạy dựa trên thông tin đăng nhập của người dùng, nó có thể được lưu trữ trong ~ / Library / LaunchAgents /
<?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>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>SomeApp.restart</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
Tải một lần với
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
RunAtLoad
tùy chọn sẽ khởi chạy ứng dụng lần đầu tiên launchctl chạy này.KeepAlive
tùy chọn sẽ tái khởi động các ứng dụng nếu nó bị treo.StartCalendarInterval
sẽ chạy nó tại một thời điểm nhất định. Có lẽ điều này là loại trừ lẫn nhau với hai phần trước, nhưng được đưa vào để hiển thị những gì có thể được thực hiện vớilaunchd
Có rất nhiều tùy chọn bổ sung có thể được tìm thấy bằng cách thử nghiệm với Lingon hoặc bằng cách đọc các trang người đàn ông cho launchctl
, launchd.plist
, plist
, launchd.conf
vv
launchctl load -w ...
để thực hiện thay đổi liên tục. Dựa trên phản hồi của bạn, tôi đã cập nhật tập lệnh cấu hình bộ cung cấp năng lượng OSX
Lingon vẫn hoạt động. Tôi vừa sử dụng nó tuần trước để tạo ra một "nhiệm vụ theo lịch trình". Sau khi tôi tải xuống, tôi phải sử dụng trình cập nhật tự động để có phiên bản mới nhất nhưng nó hoạt động tốt.
Nếu chỉ cần chạy khi hệ thống được khởi động, chỉ cần sử dụng tab Mục đăng nhập của ngăn tùy chọn Tài khoản của bạn trong Tùy chọn hệ thống.
Nếu đó là tập lệnh, hãy sử dụng AppleScript Editor để lưu tập tin dưới dạng một ứng dụng. Nếu đó không phải là tập lệnh AppleScript, bạn vẫn có thể sử dụng AppleScript để chạy tập lệnh như thế này:
do shell script "your script here"
Đừng quên Loginhooks.
Mặc dù chúng chạy bằng root, nhưng bạn phải có khả năng để nó thực thi tập lệnh $ HOME / .loginhook bằng cách sử dụng cái gì đó như thế này:
#!/bin/sh
home=`eval echo ~$user`
if [ -x "$home/.loginhook" ]; then
logger -t $0 "executing .loginhook of user $user"
su - $user -c "$home/.loginhook"
fi
Sau đó, chỉ cần thêm bất kỳ lệnh nào bạn muốn vào ~ / .loginhook
Ngoài ra, mặc dù 'launchd' là "cách Mac", crontab vẫn là một tùy chọn hoàn toàn khả thi và dễ dàng chỉnh sửa bằng tay hơn nhiều so với các tệp launchd XML.
Cá nhân tôi đã vui vẻ trả 5 đô la cho Lingon .
/path/to/script
, và sudo defaults write com.apple.loginwindow LoginHook /path/to/script
? Và điểm quan trọng trong việc chạy một tập lệnh trong thư mục chính là mỗi người dùng có thể có một tùy chỉnh (hoặc không) ~/.loginhook
?
Chạy một ứng dụng tại một thời điểm nhất định có thể được thực hiện dễ dàng trong iCal, vì tôi vừa tìm ra nhờ vào một diễn đàn khác!
Một điều cần lưu ý là nếu bạn có nhiều máy Mac chia sẻ qua iCloud, sự kiện này cũng sẽ chạy trên các ứng dụng mà bạn có thể muốn hoặc không muốn. Để thực hiện điều này chỉ xảy ra trên một máy Mac, bạn cần tạo sự kiện trong lịch 'Trên máy Mac của tôi' mà bạn có thể làm như sau ...
Tôi chỉ mới phát hiện ra điều này một mình, và được ngạc nhiên bởi cả hai mẹo, vì vậy tôi nghĩ rằng tôi sẽ chia sẻ chúng ở đây.
Tôi đã nhận được thông tin từ những người hữu ích ở đây ... cảm ơn mọi người! ...
http://osxdaily.com/2013/04/15/launch-file-app-schediated-date-mac-os-x/