يستخدم macOS launchd بدل systemd أو SysV. كل خدمة طويلة العمر هي .plist يديرها launchctl. يغطي هذا الدليل التحميل، التفريغ، السرد، وكتابة plist خاص.
المتطلبات المسبقة
- macOS 12 Monterey أو أحدث.
- سكربت/ثنائي لتشغيله كـ daemon.
الخطوة 1: مواقع plist
/Library/LaunchDaemons/— طرف ثالث، يعمل كـ root.~/Library/LaunchAgents/— شخصي، للمستخدم الحالي.
الخطوة 2: اكتب plist
/Library/LaunchDaemons/com.skyline.collector.plist:
<?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>com.skyline.collector</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/skyline-collector</string>
<string>--config</string>
<string>/etc/skyline/collector.yaml</string>
</array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
<key>StandardOutPath</key>
<string>/var/log/skyline-collector.out.log</string>
<key>StandardErrorPath</key>
<string>/var/log/skyline-collector.err.log</string>
<key>UserName</key><string>skyline</string>
</dict>
</plist>
sudo chown root:wheel /Library/LaunchDaemons/com.skyline.collector.plist
sudo chmod 644 /Library/LaunchDaemons/com.skyline.collector.plist
الخطوة 3: التحميل والبدء
sudo launchctl bootstrap system /Library/LaunchDaemons/com.skyline.collector.plist
sudo launchctl kickstart -k system/com.skyline.collector
sudo launchctl bootout system /Library/LaunchDaemons/com.skyline.collector.plist
الخطوة 4: فحص الحالة
sudo launchctl print system/com.skyline.collector | head -30
sudo launchctl list | grep skyline
الخطوة 5: التشغيل على جدول
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key> <integer>2</integer>
<key>Minute</key> <integer>30</integer>
</dict>
أو كل N ثانية:
<key>StartInterval</key>
<integer>300</integer>
الخطوة 6: LaunchAgents للمستخدم
launchctl bootstrap gui/$UID ~/Library/LaunchAgents/com.you.tunnel.plist
التحقق
sudo launchctl print system/com.skyline.collector
sudo log show --predicate 'subsystem == "com.skyline.collector"' --last 1h
tail -f /var/log/skyline-collector.err.log
الخاتمة
launchd أكثر تعبيرًا من cron — جداول وفواصل ومراقبة ملفات مع إعادة تشغيل تلقائية.
Comments
0 total · 0 threads