สถานะ "การขัดจังหวะการนอนหลับ" หมายถึงอะไร


18

ฉันให้ Firefox ทำงานบน Liveed Magic LiveCD จากนั้น (อาจเป็นไปได้) ซึ่งเป็นผลมาจากการผสมผสานที่สำคัญที่ฉันจำไม่ได้มันหายไปอย่างรวดเร็วจากหน้าจอและแถบงาน / รายการหน้าต่าง

อย่างไรก็ตาม:

  1. ps ax | grep firefoxส่งคืนด้านล่าง (และgrep firefoxบรรทัดที่ไม่จำเป็น) ทั้งสองpsและ GUI Task Manager แสดง firefox ด้วยการใช้งาน RSS, VM-SIZE และ 0% CPU ที่ดูเหมือนไม่มีการเปลี่ยนแปลง

    johndoe 1916 36.6 14.0 923772 504372 tty1 Sl 13:30 12:15 firefox


  2. pstree | grep firefox ผลตอบแทน:

    init─┬─2 * [ROX-Filer───firefox───25 * [{Firefox}]]


  3. strace -p 1916 ส่งคืนและดูเหมือนจะอยู่ในบรรทัดนี้ตลอดไป:

    futex(0xac975608), FUTEX_WAIT_PRIVATE, 1, NULL

ฉันเข้าใจจากคำตอบของคอลัมน์ STAT ใน ps หมายความว่าอย่างไร ที่S(ในSl) บ่งชี้ว่ากระบวนการอยู่ในinterruptible sleepสถานะ

ใครสามารถอธิบายรายละเอียดของสิ่งที่รัฐเป็นโดยละเอียด?

แก้ไข

ฉันจะเริ่มต้นคำถามใหม่โดยเฉพาะเจาะจงมากขึ้นใน distro ของฉันเพื่อตอบคำถามที่ 2 เดิม


@Braiam - เสร็จสิ้น ฉันลังเลที่จะทำเช่นนี้เป็นครั้งแรกที่ฉันทำอย่างใดความช่วยเหลือหันเหปัญหาจากการอภิปรายตามความเชื่อที่ฉันใช้ Parted Magic เป็น distro เต็มเวลาของฉัน ฉันหวังเป็นอย่างยิ่งว่าจะไม่เกิดขึ้นในเวลานี้ :(
user66001

คำตอบ:


18

@msw ทำงานได้ดีในการอธิบายคำถามที่ 2 ของคุณและคำถามที่ 1 ของคุณบางส่วน:

B) แนะนำวิธีที่ค่อนข้างง่ายในการฟื้นรูปแบบการควบคุมใด ๆ เพื่อ (อย่างน้อยที่สุด) บันทึกแท็บที่ฉันเปิดขึ้นอย่างน่ารำคาญในโหมดการดูเว็บส่วนตัว?

ดังนั้นฉันจะลองตอบคำถามแรกของคุณอีกสักนิด:

A) รายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่รัฐเป็นโดยละเอียด?

ค่าสถานะSl(นั่นคือตัวพิมพ์เล็ก L):

   S    Interruptible sleep (waiting for an event to complete)
   l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

                 วงจรชีวิตของกระบวนการ

PROCESS STATE CODES
   R  running or runnable (on run queue)
   D  uninterruptible sleep (usually IO)
   S  interruptible sleep (waiting for an event to complete)
   Z  defunct/zombie, terminated but not reaped by its parent
   T  stopped, either by a job control signal or because
      it is being traced
   [...]

รายละเอียดเพิ่มเติมสามารถเห็นได้ในหน้าคนสัญญาณman 7 signalเช่นเดียวกับในการกวดวิชานี้ชื่อ: รัฐกระบวนการลินุกซ์


มีประโยชน์มาก (!) สำหรับการทำความเข้าใจการทำงานภายใน ขอบคุณ! +1
user66001

@ user66001 ยอมรับคำตอบและยังช่วยฉันด้วย
muneeb_ahmed

8

คุณไม่ได้ทำอะไรกับกระบวนการ Firefox มันอยู่ในสถานะ S มาก่อนแล้ว “ การนอนหลับขัดจังหวะ” หมายถึงการไม่ใช้งาน กระบวนการกำลังรอและจะตื่นขึ้นเมื่อได้รับอินพุต นั่นเป็นสถานะปกติของกระบวนการยกเว้นว่าคุณจับได้ในขณะที่ไม่ว่าง

คุณทำให้หน้าต่างหายไป บางทีคุณอาจส่งไปยังเดสก์ท็อปอื่น วิธีนำกลับมาใช้วิธี "ปกติ" นั้นทั้งหมดขึ้นอยู่กับตัวจัดการหน้าต่างของคุณซึ่งคุณไม่ได้ระบุ

คุณอาจสามารถเรียกคืนหน้าต่างด้วยเครื่องมืออื่น ๆ แต่มันก็ขึ้นอยู่กับว่าเกิดอะไรขึ้นกับหน้าต่างและเครื่องมือจัดการหน้าต่างของคุณจะให้ความร่วมมือหรือไม่ ลองwmctrl รายการแรกหน้าต่าง Firefox wmctrl -l | grep Firefoxด้วย จดบันทึก ID หน้าต่างในคอลัมน์แรกพูด 0x12345678 หากต้องการนำหน้าต่างกลับไปที่เดสก์ท็อปปัจจุบันให้ใช้wmctrl -R 0x12345678; หรือใช้wmctrl -a 0x12345678เพื่อสลับไปยังเดสก์ท็อป เพื่อเพิ่มความมัน (ซึ่งดูแลนอกหน้าต่างหน้าจอหรือหดเพื่อ pixel เดียว) wmctrl -r 0x12345678 -b add,maximized_vert,maximized_horzวิ่ง wmctrl -r 0x12345678 -e 1,50,100,1000,800อีกทางเลือกหนึ่งย้ายและปรับขนาดหน้าต่างด้วย คุณอาจต้อง unshade หรือยกเลิกการซ่อนหน้าต่างที่มีหรือwmctrl -r 0x12345678 -b remove,shadedwmctrl -r 0x12345678 -b remove,hidden


ขอบคุณ Gilles - นี่อาจฟังดูแปลก แต่ฉันไม่แน่ใจว่า Window Manager ตัวใดที่ฉันใช้อยู่ มันอาจเป็น LXDE (อยู่ในกล่องประมาณ LXPanel)? นอกจากนี้ดูเหมือนว่า wmctrl จะไม่สามารถใช้งานได้ใน distro ของฉัน - โปรดยกโทษให้ความเขลาของฉัน แต่สามารถดาวน์โหลดและเรียกใช้ wmctrl ได้หรือไม่หรือจะต้องติดตั้ง (การอ้างอิง ฯลฯ )
user66001

@ user66001 LXDE เป็นสภาพแวดล้อมเดสก์ทอป ตัวจัดการหน้าต่างเริ่มต้นคือ Openbox (ฉันไม่แน่ใจว่ารองรับตัวอื่นหรือไม่) หากการกระจายของคุณไม่มี wmctrl คุณสามารถลองดาวน์โหลดแหล่งที่มาและรวบรวม ขึ้นอยู่กับห้องสมุดไม่กี่แห่ง แต่ไม่มีห้องสมุดใดที่แปลกใหม่พวกเขาควรได้รับการแจกจ่ายจากคุณ หากคุณมีxdotoolอาจเป็นไปได้ที่จะทำสิ่งเหล่านี้หรืออย่างน้อยก็มีประโยชน์ลองใช้ดู (ดูที่คำสั่งหน้าต่างและคำสั่งเดสก์ท็อปและหน้าต่างในคู่มือ)
Gilles 'หยุดชั่วร้าย'

อ่าขอบคุณ ไม่ใช่xdotool- เมื่อคุณหมายความว่า "อาจทำสิ่งเหล่านี้ทั้งหมด" คุณกำลังพูดถึงการรวบรวมwmctrlหรือการดำเนินการที่คุณสามารถทำได้ด้วยหรือไม่? คุณช่วยชี้ทางให้ฉันไปที่คำแนะนำใด ๆ เกี่ยวกับการรวบรวมแหล่ง Linux (ใหม่ถึง Linux จากสภาพแวดล้อม Windows)
user66001

@ user66001 ฉันหมายถึงxdotoolและwmctrlมีฟังก์ชั่นที่คล้ายกัน (เท่าที่คุณต้องการที่นี่พวกเขาต่างกันในสิ่งที่พวกเขาเสนอ) หากคุณยังใหม่กับ Linux ฉันขอแนะนำให้เผยแพร่ด้วยแพ็คเกจเพิ่มเติม หากคุณกำลังใช้ RHEL หรือตัวแปรเช่น CentOS หรือวิทยาศาสตร์ลินุกซ์มีแพคเกจในRepoforge หากคุณต้องการสร้างจากแหล่งที่มาให้อ่านสิ่งนี้ - แต่จะเป็นการง่ายกว่าถ้าติดตั้งแพคเกจหากคุณสามารถหาได้
Gilles 'SO- หยุดความชั่วร้าย'

ความแตกต่างของเครื่องมือใดที่ควรสร้างง่ายกว่า? นอกจากนี้หากไม่มีผู้จัดการแพคเกจใน distro ของพวกเขาสิ่งที่ประเภทของแพคเกจ? ควรที่จะมองหา (ฉันเดาว่านี่เป็นคำถามที่ไร้เหตุผล แต่ในกรณีที่ฉันคิดผิดว่าแพคเกจเป็นเพียงกลุ่มของไบนารีที่มีรายการอ้างอิงและการเปลี่ยนแปลงการกำหนดค่าคิดว่าฉันจะถาม)?
user66001

2

เป็นไปได้ที่ไคลเอ็นต์ X จะสูญเสียการเชื่อมต่อและจะไม่มีการแจ้งเตือน กระบวนการมักจะรอที่ซ็อกเก็ตซึ่งไม่มีอะไรจะมาทิ้งไว้ในโหมดสลีปที่ไม่หยุดชะงัก

สำหรับ Firefox เท่านั้น (และโปรแกรมอื่น ๆ เช่น Gvim หรือ Chrome ซึ่งมีบทบัญญัติพิเศษสำหรับการจัดเก็บสถานะที่ล้มเหลว) ง่าย ๆ :

$ kill -TERM pid

จะให้โอกาสในการบันทึกรายการของแท็บที่เปิดอยู่ แต่ฉันจะไม่นับในเนื้อหาของฟอร์มหรือสถานะอื่นที่จะถูกเก็บไว้


ไม่น่าเป็นไปได้ที่ไคลเอ็นต์ X ในพื้นที่จะสูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ X โดยเฉพาะอย่างยิ่งเนื่องจากการกดคีย์ การฆ่า Firefox จะไม่บันทึกข้อมูลเกี่ยวกับ windows ในโหมดการเรียกดูแบบส่วนตัว
Gilles 'หยุดความชั่วร้าย'

ฉันใช้Lazarusและ (เมื่อไม่ได้ใช้โหมดการท่องเว็บส่วนตัวเพื่อลองและสลับไปมารอบ ๆ บัญชี Gmail หลักของฉันเพื่อเปิด gdocs เพื่อดู / แก้ไขเอกสารโดยใช้ข้อมูลจากเว็บไซต์ที่อยู่ติดกับแท็บโดยไม่ต้องออกจากบัญชี Gmail ทั้งหมดของฉัน - Grr, Google) มี FF "จดจำ windows & แท็บของฉันจากครั้งที่แล้ว" ดังนั้นฉันจึงสนใจเฉพาะแท็บที่เปิดในโหมดดูเว็บส่วนตัว ดังนั้นในขณะที่เป็นการดีที่จะรู้ว่ามีการโต้แย้งข้างต้นkillฉันสงสัยว่า FF จะบันทึกแท็บของฉันในสถานการณ์นี้ มีวิธีใดที่ FF จะใส่กลับเข้าไปที่ X อีกครั้ง?
user66001

"มีวิธีใดที่ FF จะใส่กลับไปที่ X" เนื่องจากฉันไม่เคยสามารถคิดได้ว่าหน้าต่างจะไม่ได้รับการแมปหรือทำลายโดยที่กระบวนการไคลเอนต์รับสัญญาณได้อย่างไรฉันคิดว่าซ็อกเก็ตจากโปรแกรม FF ไปยัง UI ยังคงเปิดอยู่ ตราบใดที่กระบวนการเชื่อมต่อกับซ็อกเก็ตฉันก็รู้ว่าไม่มีกระบวนการใด ๆ (ตอนนี้คุณทำให้ฉันคิดเกี่ยวกับเรื่องนี้ฉันสงสัยว่านี่เป็นข้อผิดพลาดของโปรโตคอลระหว่างเซิร์ฟเวอร์ X และไคลเอนต์ซึ่งเป็นเรื่องยากอย่างบ้าคลั่ง (เช่นฉันไม่เคยลอง) เพื่อทำการดีบัก)
msw
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.