ฉันจะเรียกใช้ / หยุด / เปิดใช้งานแอปพลิเคชันใหม่โดยอัตโนมัติอย่างไรในตอนบูท / เข้าสู่ระบบ / เวลาอื่น


42

คุณจะสร้างสคริปต์หรือแอพให้ทำงานหรือหยุดทำงานโดยอัตโนมัติเมื่อระบบถูกบูทผู้ใช้ล็อกออนในเวลาที่กำหนดเมื่อมีการต่อดิสก์ ฯลฯ


3
Lingon เป็นเพียงแอพที่จะสร้างไฟล์. plist เพื่อให้ผู้ใช้เปิดใช้งานได้ง่ายขึ้น นอกจากนี้ยังมีคนสร้างเว็บผู้สร้าง plist ตาม: plist.spotmac.de
Chealion

Boo! plist.spotmac.de ดูเหมือนว่าจะหายไป :-(
docwhat

คำตอบ:


44

วิธีการ Gui

หากคุณต้องการให้บางสิ่งบางอย่างทำงานเมื่อผู้ใช้เข้าสู่ระบบวิธีที่ง่ายที่สุดคือการใช้ GUI คุณสามารถ

  • ไปที่System Prefs > Accounts > Login Itemsหน้าจอและเพิ่มรายการโดย
    • คลิกที่+สัญลักษณ์
    • ลากและวาง.appลงบนบานหน้าต่าง
  • ใน Dock ให้เปิดเมนูบริบทสำหรับแอพเลือกOptionsจากนั้นเลือกOpen at Login

วิธีการเปิดตัว

หากคุณต้องการเปิดตัวสิ่งที่ไม่ใช่.appหรือคุณต้องการควบคุมการเปิดใช้งานเช่น:

  • ในเวลาที่แน่นอนหรือในช่วงเวลาที่กำหนด
  • เรียกใช้งานอีกครั้งอย่างต่อเนื่องหากระบบขัดข้อง
  • ไม่เกี่ยวข้องกับการเข้าสู่ระบบของผู้ใช้
  • เป็นฟังก์ชั่นการเข้าถึงเครือข่าย
  • ทำงานต่อเมื่อกระบวนการอื่นกำลังทำงานอยู่
  • เมื่อไฟล์ถูกเพิ่มเข้าไปในโฟลเดอร์
  • เป็นต้น

แล้วคุณต้องการที่จะใช้แก้ปัญหาทางเทคนิคlaunchdที่เป็น

วิธีที่ง่ายที่สุดในการตั้งค่าlaunchdไฟล์กำหนดค่าคือการใช้เครื่องมือช่วย ในขณะที่เขียนวิธีที่ได้รับความนิยมมากที่สุดคือLingon (ซึ่งมีเวอร์ชั่นฟรีเก่ากว่าจาก SourceForge) หรือเครื่องมือเว็บไซต์ PList

การเข้ารหัสด้วยมือ

หากคุณไม่ต้องการที่จะใช้ Lingon หรือ plist เว็บไซต์และเพียงต้องการที่จะใช้เครื่องมือดิบที่มีอยู่ในระบบคุณสามารถเขียนของคุณเองlaunchd plistด้วยมือ

นี่คือสคริปต์เรียกใช้ของฉันเพื่อเรียกใช้ SomeApp อย่างต่อเนื่องหลังจากบูทระบบ (ขึ้นอยู่กับการล็อกอินของผู้ใช้) มันอยู่ใน / System / Library / LaunchAgents / และเรียก SomeApp.restart.plist หากทำงานตามการล็อกอินของผู้ใช้มันจะถูกเก็บไว้ใน ~ / 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>

โหลดครั้งเดียวด้วย

launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
  • RunAtLoadตัวเลือกที่จะเปิดตัวแอพลิเคชัน launchctl ครั้งแรกที่ทำงานนี้
  • KeepAliveตัวเลือกที่จะ re-เปิดโปรแกรมถ้ามันเกิดปัญหา
  • StartCalendarIntervalจะใช้มันในเวลาที่แน่นอน สันนิษฐานว่านี่เป็นสิ่งที่ไม่เกิดร่วมกันกับสองรายการก่อนหน้า แต่รวมอยู่ด้วยเพื่อแสดงสิ่งที่สามารถทำได้launchd
  • Launchctl จะทำงานหลังจากรีบูต

มีตัวเลือกอีกมากมายที่สามารถพบได้โดยการทดสอบกับ Lingon หรือโดยการอ่านหน้าคนสำหรับเป็นlaunchctl, launchd.plist, plist, launchd.confฯลฯ


ขอบคุณมีประโยชน์จริงๆ คุณยังสามารถใช้launchctl load -w ...เพื่อทำการเปลี่ยนแปลงแบบถาวร จากความคิดเห็นของคุณฉันได้อัปเดตสคริปต์ตัวกำหนดค่า OSX poweruser
sorin

8

Lingon ยังคงใช้งานได้ ฉันเพิ่งใช้เมื่อสัปดาห์ที่แล้วเพื่อสร้าง "งานที่กำหนด" หลังจากฉันดาวน์โหลดฉันต้องใช้ตัวอัปเดตอัตโนมัติเพื่อรับเวอร์ชันล่าสุด แต่ใช้งานได้ดี


1
Lingon ยังอยู่ใน App Store
user151019

1
แต่เพื่อค้นหาเวอร์ชันโอเพนซอร์ซฟรีคุณต้องขุดมันออกมาจาก Sourceforge เวอร์ชั่นโฆษณาล่าสุดยังไม่สามารถใช้กับ Leopard (10.5) ได้ แต่ 2.1.1 ทำ - ดูsourceforge.net/projects/lingon/files/Lingon/2.1.1
nealmcb

7

หากจำเป็นเท่านั้นที่จะเรียกใช้เมื่อระบบถูกบูตเพียงใช้แท็บรายการเข้าสู่ระบบของบานหน้าต่างการตั้งค่าบัญชีของคุณในการตั้งค่าระบบ

ข้อความแสดงแทน

หากเป็นสคริปต์ให้ใช้ AppleScript Editor เพื่อบันทึกเป็นแอปพลิเคชัน หากไม่ใช่สคริปต์ AppleScript คุณยังสามารถใช้ AppleScript เพื่อเรียกใช้สคริปต์ดังนี้:

do shell script "your script here"


อืม คุณแน่ใจหรือไม่ มีข้อความระบุว่าใน UI ของภาพหน้าจอของคุณ "รายการเหล่านี้จะเปิดโดยอัตโนมัติเมื่อคุณลงชื่อเข้าใช้" - ไม่แตกต่างจากเมื่อระบบบู๊ตหรือไม่ นอกจากนี้ดูเหมือนว่าลิงก์ของคุณจะ 404
ssc

5

อย่าลืม Loginhooks

แม้ว่ามันจะทำงานเป็นรูท แต่คุณก็ควรที่จะให้มันรันสคริปต์ $ HOME / .loginhook โดยใช้บางสิ่งเช่นนี้:

#!/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

จากนั้นเพิ่มคำสั่งใดก็ได้ที่คุณต้องการใน ~ / .loginhook

นอกจากนี้แม้ว่า 'launchd' จะเป็น "วิธีของ Mac" crontab ยังคงเป็นตัวเลือกที่ทำงานได้อย่างสมบูรณ์แบบและง่ายต่อการแก้ไขด้วยมือมากกว่าไฟล์ launchd XML

ส่วนตัวผมมีความสุขที่จ่าย $ 5 สำหรับLingon


ดังนั้นสคริปต์ในบล็อกรหัสควรบันทึกเป็น/path/to/scriptและsudo defaults write com.apple.loginwindow LoginHook /path/to/script? และจุดในการเรียกใช้สคริปต์ในไดเรกทอรีบ้านคือผู้ใช้แต่ละคนสามารถมีกำหนดเอง (หรือไม่) ~/.loginhook?
Lri

@Lri - ใช่แน่นอน ขออภัยที่ไม่ชัดเจน รหัสบล็อกอาจเป็น /usr/local/bin/loginhook.sh และเนื่องจากมันถูกเรียกใช้โดยรูทมันจะมองหา $ HOME / .loginhook เมื่อผู้ใช้ล็อกอินและเรียกใช้ในฐานะผู้ใช้นั้น
TJ Luoma

4

การเรียกใช้แอพตามเวลาที่กำหนดสามารถทำได้อย่างง่ายดายใน iCal เพราะฉันเพิ่งค้นพบต้องขอบคุณฟอรัมอื่น!

  1. สร้างกิจกรรมใหม่ใน iCal ในเวลาที่คุณต้องการให้แอปเปิด
  2. ที่ 'Alert' ให้เลือก 'Open File' ดังนั้นคุณสามารถตั้งค่าให้เปิดไฟล์ได้ซึ่งจะเป็นการเปิดแอปพลิเคชั่นเริ่มต้นสำหรับไฟล์ประเภทนั้น
  3. หากต้องการเปิดแอปแทนไฟล์ให้เปลี่ยนเมนูแบบเลื่อนลง 'iCal' เป็น 'อื่น ๆ ... ' และเลือกแอพที่คุณต้องการเรียกใช้!

สิ่งหนึ่งที่ควรระวังคือถ้าคุณมี Mac หลายเครื่องที่แชร์ข้อมูลผ่าน iCloud กิจกรรมนี้จะทำงานบนแอพเหล่านั้นซึ่งคุณอาจต้องการหรือไม่ต้องการ ในการทำให้สิ่งนี้เกิดขึ้นได้ใน Mac เครื่องเดียวคุณต้องสร้างกิจกรรมในปฏิทิน 'บน My Mac' ซึ่งคุณสามารถทำได้ดังนี้ ...

  1. ซ่อน iCloud หรือปฏิทินที่แชร์อื่น ๆ ทั้งหมดบนแถบด้านซ้ายโดยโฮเวอร์เหนือชื่อปฏิทินและคลิกปุ่ม 'ซ่อน' ซึ่งจะปรากฏขึ้น
  2. ตอนนี้คลิกขวา (หรือคลิกตัวเลือกหากคุณเป็น cretin ที่สมบูรณ์และยังไม่ทราบว่าคุณมีนิ้วมากกว่าหนึ่งนิ้วและสามารถเปลี่ยนการตั้งค่าเมาส์ของคุณเพื่อให้มีประโยชน์มากกว่าการใช้อิฐ cretinous สำหรับสถานะ cretins เล็กน้อย ) และเลือก 'ปฏิทินใหม่'
  3. เนื่องจากปฏิทินที่แชร์ทั้งหมดถูกซ่อนไว้ปฏิทินใหม่นี้จะถูกสร้างเป็น 'บน My Mac' และจะอยู่ในเครื่องของ Mac เครื่องนี้

ฉันเพิ่งค้นพบสิ่งนี้ด้วยตัวเองและรู้สึกประหลาดใจกับเคล็ดลับทั้งสองดังนั้นฉันคิดว่าฉันจะแบ่งปันที่นี่

ฉันได้รับข้อมูลจากคนที่เป็นประโยชน์เหล่านี้ที่นี่ ... ดังนั้นขอบคุณคน! ...

http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.