Tạo một tập lệnh sẽ thực thi một chương trình và nếu nó thoát mà không gặp sự cố, sẽ chạy lại tập lệnh đó


1

Tôi đã hỏi câu hỏi này trong trao đổi UNIx nhưng tôi cũng được yêu cầu hỏi về AppleScripts nếu vỏ tiêu chuẩn không hoạt động.

Tôi yêu cầu một kịch bản sẽ mở một ứng dụng. Đợi nó thoát, nếu ứng dụng thoát một cách duyên dáng (IE: không gặp sự cố) hãy khởi chạy lại. Nếu không, hãy giữ báo cáo sự cố mở và thoát khỏi tập lệnh. Tôi muốn tập lệnh này chạy cho đến khi tôi thoát nó bằng tay.

Cho đến nay những điều sau đây đã được đề xuất:

while open -W /path/to/application.app
do
    :
done

Nhưng điều này sẽ mở ứng dụng và sau đó khi gặp sự cố hoặc thoát sẽ tự động chạy lại ứng dụng. Tôi cho rằng điều này là do mở bất kể chờ đợi hay không sẽ chấm dứt với mã thoát 0 thông thường. Tất nhiên trừ khi sự cố mở nhưng trong trường hợp này thì không.

Bất kỳ trợ giúp với điều này được đánh giá cao.

Cảm ơn.

Câu trả lời:


1

Để tiếp tục khởi động lại công việc khi thoát thành công Bạn có thể sử dụng launchdtrên OSX. Đối với điều này, bạn phải chuẩn bị tệp * .plist để "nói" launchd cách ứng xử. Để khởi động lại ứng dụng khi thoát thành công, vui lòng xem tại KeepAlive-> SuccessfulExitkey (thông tin thêm: https://developer.apple.com/l Library / mac / documentation / Darwin / Reference / Manager / man5 / launchd.plist.5.html ). Để bắt đầu công việc của bạn, bạn sẽ cần bắt đầu nó thông qua launchctllệnh, ví dụ:

launchctl load path/to/file.plist

Để ngăn chặn nó:

launchctl unload path/to/file.plist

Thêm thông tin về launchctl/ launchdlập trình ở đây:

http://alvinalexander.com/mac-os-x/launchd-examples-launchd-plist-file-examples-mac

http://launchd.info

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.