ในโอกาสที่หายากมากสิ่งนี้เกิดขึ้นกับฉันในอดีตฉันเริ่มเล่นซอกับdtrace
สคริปต์เพื่อรู้ว่าเกิดอะไรขึ้น opensnoop
หนึ่งพร้อมที่จะใช้สคริปต์
ดังนั้นในครั้งต่อไปที่คุณพบปัญหานี้ให้ลองแก้ไขดังนี้:
$ sudo opensnoop -ve
หรือ จำกัด ผลลัพธ์ที่คุณคาดหวัง:
$ sudo opensnoop -ve | grep -i chrome
กระบวนการสั้นอาจจะไม่แสดงในของคุณออกเพื่อให้ตัวเลือกอื่นให้เราขอบเขตฟังก์ชั่นการติดตามกรอบที่สามารถใช้ได้ps
dtrace
ส่วนใหญ่แล้วเวอร์ชั่น OSX ของคุณจะมีจุดเข้าใช้งานที่เรียบง่ายที่กำหนดไว้สำหรับเลเยอร์ VFS (เรียกว่า dump_vfs.d):
#!/usr/sbin/dtrace -s
#pragma D option quiet
#pragma D option switchrate=10hz
dtrace:::BEGIN {
printf("%-12s %6s %6s %-12.12s %-12s %s\n", "TIME(ms)", "UID",
"PID", "PROCESS", "CALL", "DIR/FILE");
}
fbt::VNOP_CREATE:entry,
fbt::VNOP_REMOVE:entry {
this->path = ((struct vnode *)arg0)->v_name;
this->name = ((struct componentname *)arg2)->cn_nameptr;
printf("%-12d %6d %6d %-12.12s %-12s %s/%s\n",
timestamp / 1000000, uid, pid, execname, probefunc,
this->path != NULL ? stringof(this->path) : "<null>",
stringof(this->name));
}
การเรียกมันคล้ายกับข้างบน:
$ sudo dtrace -s dump_vfs.d
สามารถใช้fs_usage
คำสั่งปิดการทำงานที่มีฟังก์ชั่นได้โดยเฉพาะอย่างยิ่งหากคุณสงสัยว่ากระบวนการดังกล่าวแขวนอยู่ในลูปเหตุการณ์แม้ว่าจะยังเข้าถึงเลเยอร์ fs โดยใช้การเรียกระบบ
นี่อาจเป็นเรื่องที่เกินความเป็นจริงเพราะตัวเลือกที่ใช้งานได้จริงส่วนใหญ่น่าจะกดปุ่มเปิดปิด เนื่องจากคุณกล่าวว่าคุณส่งรายงานไปยัง Apple คุณอาจต้องการตรวจสอบอีกครั้งภายใต้ตำแหน่งที่ตั้งต่อไปนี้:
~/Library/Logs/DiagnosticReports/
/Library/Logs/DiagnosticReports/
สิ่งนี้จะให้คำแนะนำเพิ่มเติมแก่คุณว่าทำไมแอปพลิเคชันดังกล่าวจึงขัดข้องในลักษณะดังกล่าว
อยากรู้อยากเห็นของคุณเกี่ยวกับการจัดการสถานการณ์เช่นระบบปฏิบัติการที่มีความสามารถอาจจะดับบางส่วนจากการมองเข้าไปในแหล่ง XNU bsd/kern/kern_shutdown.c
เคอร์เนลที่ เมื่อถึงจุดหนึ่งกระบวนการปิดระบบที่เริ่มต้นผ่าน Finder จะหมดเวลาซึ่งจะบันทึกความพยายามของ SIGTERM ที่ล้มเหลว (คัดลอกมาจากสำเนาภายในรุ่น 2782.1.97 ของแหล่งเคอร์เนลดาร์วิน):
[...]
for (p = allproc.lh_first; p; p = p->p_list.le_next) {
if (p->p_shutdownstate == 1) {
printf("%s[%d]: didn't act on SIGTERM\n", p->p_comm, p->p_pid);
sd_log(ctx, "%s[%d]: didn't act on SIGTERM\n", p->p_comm, p->p_pid);
}
}
[...]
สิ่งนี้บ่งชี้ว่าConsole
แอปพลิเคชันอาจแสดงรายการบันทึกที่เกี่ยวข้องให้คุณ เคอร์เนลจะเข้าสู่ช่วงรอ 100 ถึง 200 วินาทีทั้งนี้ขึ้นอยู่กับสถานการณ์ล็อกสดที่อาจเกิดขึ้นเกี่ยวกับไฟล์ที่อยู่ในพาร์ติชันที่เมาท์เครือข่ายซึ่งเพิ่งสูญเสียสัญญาณเลเยอร์ 1
ในฐานะที่เป็น sidenote: ฉันมีความสุขน้อยมากกับ Chrome ใน MBP ของฉันเพราะฉันเชื่อว่าการอัปเดตล่าสุดของไดรเวอร์หลัก nvidia ภายในOSX >= 10.9
พร้อมกับฟังก์ชั่นการจัดการพลังงานที่สูงขึ้นและตอนนี้ appnap รวมกับความก้าวหน้าล่าสุดในการจัดการปลั๊กอิน เบราว์เซอร์กล่าวว่าก่อให้เกิดความเสียหายซ้ำ ๆ ยิ่งไปกว่านั้น Chrome ในปี 2014 สำหรับฉันนั้นเป็นเบราว์เซอร์ที่แรงที่สุดในโลก
อาจมีสถานการณ์อีกครึ่งโหลว่าทำไมคุณถึงได้รับการต้อนรับด้วย GUI ข้อเสนอแนะที่ไม่มีการกระตุ้น ไม่มีสิ่งใดมาแม้แต่ระยะไกลใกล้กับปัญหาที่คุณเรียกสั้น ๆ โดยการพูดถึง Win95 :)
เพิ่งกดปุ่มเพาเวอร์แล้ว!
killall 'Google Chrome'
(ระวังจำเป็นต้องใช้เครื่องหมายคำพูดเดี่ยวเหล่านั้น) สิ่งนี้จะฆ่ากระบวนการเป้าหมายด้วยสัญญาณ TERM ไม่ว่าจะใช้งานได้เมื่อ "Force Quit" ล้มเหลวฉันไม่แน่ใจทั้งหมด (แต่killall
ควรใช้งานได้ตลอด)