เมื่อเร็ว ๆ นี้ Mac ของฉันแสดงข้อความแปลก ๆ เช่น "เดือนที่ 13 พ้นขอบเขต"
ฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไรฉันไม่สามารถไปที่ศูนย์ซ่อมที่ได้รับอนุญาตของ apple ได้เพราะอยู่ไกลจากศูนย์ Apple มาก
เมื่อเร็ว ๆ นี้ Mac ของฉันแสดงข้อความแปลก ๆ เช่น "เดือนที่ 13 พ้นขอบเขต"
ฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไรฉันไม่สามารถไปที่ศูนย์ซ่อมที่ได้รับอนุญาตของ apple ได้เพราะอยู่ไกลจากศูนย์ Apple มาก
คำตอบ:
ข้อผิดพลาดนี้ถูกบันทึกไว้ใน iOS 11 และใน macOS 10.13 แน่นอนและฉันไม่เห็นมันทำให้เกิดการทำงานหรือปัญหาเฉพาะบนแพลตฟอร์มใด ๆ
ฉันจะเชื่อมโยงกับคำถามหลักที่นี่เกี่ยวกับ "ทำบันทึก macOS มากเกินไป" เนื่องจากเป็นความคิดเห็นและความประทับใจที่ควรค่าแก่การอภิปราย บางคนอาจรู้สึกดีขึ้นถ้าไม่มีข้อความหากไม่ได้รับการแก้ไข คนอื่นต้องการรายละเอียดเพิ่มเติมเพื่อให้พวกเขาสามารถรู้ว่าเกิดอะไรขึ้น / เรียนรู้ / วัด ดังนั้นมันจะเป็นการแลกเปลี่ยนว่าสิ่งเหล่านี้เป็นปัญหา / จัดหมวดหมู่ / ใช้อย่างไร
ผู้พัฒนาที่น่าสนใจรายหนึ่งที่มีเครื่องมือบางอย่างคือ Howard Oakley ซึ่งบล็อกที่https://eclecticlight.co/
หน้าดาวน์โหลดของเขามีสองแอพที่น่าสนใจ (ใช้ลิงค์ดาวน์โหลดด้านซ้ายเนื่องจากรุ่นผลิตภัณฑ์ด้านล่างเป็นรุ่นเบต้าและอาจไม่เป็นปัจจุบันในหนึ่งวันหรือหนึ่งสัปดาห์):
ฉันสามารถตรวจสอบความถูกต้องของปัญหานี้ได้ ฉันมีปัญหาเดียวกันเมื่อวานนี้และหลังจากรีสตาร์ทคอมพิวเตอร์แสดงผลเกือบไร้ประโยชน์เนื่องจากข้อผิดพลาดนี้ ด้วยเหตุผลบางอย่างคอมพิวเตอร์ไม่สามารถจัดการกับเดือนนี้และส่งข้อผิดพลาดที่ใดก็ตามที่มีฐานข้อมูลหรือ plists
ในการแก้ไขปัญหานี้:
เปิดการตรวจสอบกิจกรรมและบังคับให้ออกจากสองกระบวนการ: lsd
,UserEventAgent
เปิดการตั้งค่าระบบและไปที่ "วันที่และเวลา"
ยกเลิกการเลือก "ตั้งวันที่และเวลาอัตโนมัติ"
ในปฏิทินเลือกวันที่ก่อนเดือนธันวาคม 2017 และกดบันทึก
หากUserEventAgent
หรือlsd
ยังคงทำให้เกิดปัญหาอยู่ให้บังคับให้ออกจากโปรแกรมอีกครั้งหลังจากตั้งค่าวันที่
ทำไม?
ดูเหมือนว่าฉัน UserEventAgent พยายามใช้ไฟล์ plist สองไฟล์:
System/Library/LaunchAgents/com.apple.UserEventAgent-Aqua.plist
และ
System/Library/LaunchAgents/com.apple.UserEventAgent-LoginWindow.plist
เมื่อพยายามใช้ Plists มันก็มีข้อผิดพลาด:
Month 13 is out of bounds
ฉันไม่แน่ใจว่าสิ่งที่เกิดขึ้นจริงใน UserEventAgent แต่เห็นได้ชัดว่าเมื่อได้รับข้อผิดพลาดมันไม่สามารถจัดการกับมันและทำให้เกิดการใช้งาน CPU และ RAM สูง
ฉันมีปัญหาเดียวกันกับการใช้งาน CPU และหน่วยความจำที่สูงมาก UserEventAgent เริ่มต้นเมื่อต้นเดือนธันวาคม 2560 คอนโซลแสดงข้อผิดพลาด "หมดเดือน" ตามที่อธิบายไว้ข้างต้น
ฉันลองใช้ยูทิลิตี้ของดิสก์ "การปฐมพยาบาล" รีบูตเครื่องเซฟโหมด (เพื่อล้างแคชของระบบ) การล้าง NVRAM และ SMD ไม่ช่วยอะไรเลย ฉันสังเกตเห็นว่าการใช้งาน CPU และหน่วยความจำไม่ได้ขัดขวางในเซฟโหมด
เช่น @tgray และu / kidtexasในบางครั้งฉันก็พบว่าถ้าฉันปิดการใช้งาน launchd ที่กำหนดเองทั้งหมดของฉันว่าปัญหาไม่ได้เกิดขึ้น
ในที่สุดฉันก็เขียนสคริปต์เล็กน้อยด้านล่างเพื่อช่วยในการแก้ไขข้อผิดพลาดซึ่งเป็นสาเหตุให้เกิดปัญหา มันจบลงด้วยการเป็นคนที่ทำงานในวันแรกของทุกเดือน:
<key>StartCalendarInterval</key>
<dict>
<key>Day</key>
<integer>1</integer>
<key>Hour</key>
<integer>03</integer>
<key>Minute</key>
<integer>00</integer>
</dict>
Plists ของฉันหลายคนใช้StartCalendarInterval
กุญแจและใช้สคริปต์ด้านล่างฉันสามารถแสดงให้เห็นว่าพวกเขาดูเหมือนจะไม่ทำให้เกิดปัญหา RAM และหน่วยความจำ spiking ดังนั้นจึงไม่ชัดเจนเลยสำหรับฉันว่าเหตุใดคนหนึ่งที่เฉพาะเจาะจงทำให้เกิดปัญหา นี่เป็นวิธีที่ฉันแยกออก
ฉันขอแนะนำให้ผู้อ่านตรวจสอบสคริปต์เพื่อพยายามทำความเข้าใจว่ามันทำอะไรแทนที่จะคัดลอกและวาง โดยเฉพาะในขณะที่เขียนนี้จะทำงานใน plists ~/Library/LaunchAgents
(ไม่ได้/Library/LaunchDaemons
และอื่น ๆ ) และมันจงใจทดสอบเพียง plists ที่มีชื่อไฟล์และตามรูปแบบที่เฉพาะเจาะจง:<key>Label</key>
com.USERNAME.my_plist_name[.plist]
ก่อนใช้งานฉันใช้สายการบินหนึ่งเดียวกับbootout
ผู้วางแผนทุกรายของฉัน: for plist in com."$(whoami)".*.plist; do launchctl bootout gui/"${MYUID}"/"${plist%.plist}" || true; done
จากนั้นตรวจสอบความถูกต้องว่าพวกเขาไม่ปรากฏภายใต้launchctl list
ผลลัพธ์อีกต่อไป
#! /bin/bash
# /apple/307512/month-13-is-out-of-bounds
set -euf -o pipefail
MYUID="$(id -u)"
pushd "${HOME}"/Library/LaunchAgents
while IFS= read -r -d '' plist; do
echo "${plist}"
stats=($(ps ux | grep -v grep | grep UserEventAgent | awk '{ print $3, $5}'))
cpu="${stats[0]}"
vmem="${stats[1]}"
echo "CPU use and virtual memory size while disabled: ${stats[@]}"
launchctl bootstrap gui/"${MYUID}" "${plist}"
sleep 5
stats=($(ps ux | grep -v grep | grep UserEventAgent | awk '{ print $3, $5}'))
echo "CPU use and virtual memory size while enabled: ${stats[@]}"
echo "Change in vmem: $(( "${vmem}" - "${stats[1]}" ))"
echo
done < <(find . -iname "com.$(whoami).*.plist" -print0)
popd
bootout
(หรือคล้ายกัน) ที่ n8henrie แนะนำ
เช่นเดียวกับคนอื่น ๆ ฉันมีการใช้งาน CPU สูงและการใช้ RAM ขนาดใหญ่จาก UserEventAgent (ดูความคิดเห็นของฉันด้านบน) เปลี่ยนวันที่เป็นเดือนพฤศจิกายนและบังคับให้เลิกใช้ UserEventAgent แก้ไขสิ่งต่าง ๆ ทั้งหมดนี้เริ่มต้นในวันเสาร์หลังจากที่ฉันรีบูท
ฉันคิดออกนี้สำหรับฉัน หวังว่าสำหรับคนอื่นที่มีปัญหานี่จะใช้กับคุณได้
ปัญหาคือตัวเลือก LaunchAgent ที่ฉันมีใน ~ / Library / LaunchAgents มันเป็นไฟล์ plist อย่างง่ายที่เรียกใช้ StartCalendarInterval ซึ่งเป็นคีย์ที่ถูกต้องสำหรับ launchd plists งาน LaunchAgent เรียกเชลล์สคริปต์ที่คัดลอกไฟล์บางไฟล์ไปยังตำแหน่งสำรองในวันแรกของเดือน งานไม่ได้ถูกเรียกเลย - ฉันคิดว่ามันเป็น launchd ตรวจสอบงานที่โหลดกับปฏิทินซึ่งเป็นสาเหตุของปัญหา ทันทีที่ฉันยกเลิกการโหลดนี้และย้ายไฟล์ออกจากไดเรกทอรี UserEventAgent ก็ใช้ได้ (หลังจากบังคับให้ออก) ครั้งที่สองที่ฉันโหลด plist (launchctl load xxxx), UserEventAgent ก็หายไป
StartCalendarInterval เป็นคีย์ที่ถูกต้องสำหรับ launchd เท่าที่เห็นที่นี่ในเอกสารแอปเปิ้ล
ดังนั้นสำหรับใครก็ตามที่มีปัญหาให้ตรวจสอบไดเรกทอรี LaunchAgent ของคุณและค้นหาคีย์ StartCalendarInterval (หรือคีย์อื่น ๆ ที่เกี่ยวข้องกับปฏิทิน) ฉันไม่ได้มีปัญหาใด ๆ กับ plists ช่วงเวลาตาม
หมายเหตุ:วิธีนี้จะไม่แก้ไขข้อผิดพลาด 'เดือนที่ 13 จากขอบเขต' เพียงพฤติกรรม UserEventAgent ที่บ้าคลั่ง
หลังจากรายงานสิ่งนี้กับ Apple และปรับขนาดห่วงโซ่การเลื่อนระดับฉันได้รับแจ้งว่าสิ่งนี้ควรได้รับการแก้ไขใน macOS 10.13.3
เห็นได้ชัดว่านี้เกิดจากการประยุกต์ใช้ในการเรียกเลิก NSDate ขั้นตอน 'descriptionWithCalendarFormat'
คุณสามารถอ่านเพิ่มเติมได้ที่https://forums.developer.apple.com/thread/88417
ในบางกรณีการแก้ไขหรือลบไฟล์ plist บางตัวจะป้องกันไม่ให้โปรแกรมเรียกโพรซีเดอร์ที่เลิกใช้ แต่การแก้ไขจริงคือการอัพเดตระบบปฏิบัติการ