คำถามติดแท็ก lsof

lsof เป็นเครื่องมือในการแสดงรายการไฟล์ที่เปิดอยู่ของกระบวนการ

5
การพิจารณาว่ากระบวนการใดถูกผูกไว้กับพอร์ต
ฉันรู้ว่าใช้คำสั่ง: lsof -i TCP (หรือตัวแปรบางตัวที่มี lsof) ฉันสามารถพิจารณาว่ากระบวนการใดที่ถูกผูกไว้กับพอร์ตเฉพาะ สิ่งนี้มีประโยชน์บอกถ้าฉันพยายามเริ่มต้นสิ่งที่ต้องการผูกกับ 8080 และบางคนกำลังใช้พอร์ตนั้นอยู่แล้ว แต่ฉันไม่รู้ว่าอะไร มีวิธีง่าย ๆ โดยไม่ใช้ lsof หรือไม่ ฉันใช้เวลาในการทำงานกับหลาย ๆ ระบบและมักจะไม่ได้ติดตั้ง
90 networking  process  tcp  lsof 

7
ใครมีปลายอีกด้านของซ็อกเก็ตยูนิกซ์นี้?
ฉันต้องการตรวจสอบว่ากระบวนการใดมีส่วนอื่น ๆ ของซ็อกเก็ต UNIX โดยเฉพาะฉันถามเกี่ยวกับสิ่งที่สร้างขึ้นด้วยsocketpair()แม้ว่าปัญหาจะเหมือนกันสำหรับซ็อกเก็ต UNIX ใด ๆ ผมมีโปรแกรมparentที่สร้างsocketpair(AF_UNIX, SOCK_STREAM, 0, fds)และfork()s กระบวนการหลักปิดfds[1]และfds[0]ทำการสื่อสารต่อไป close(fds[0]); s=fds[1]เด็กไม่ตรงข้าม จากนั้นเด็กก็เข้าexec()ร่วมโปรแกรมอื่น, child1. ทั้งสองสามารถสื่อสารไปมาผ่านซ็อกเก็ตคู่นี้ได้ ตอนนี้ขอบอกว่าฉันรู้ว่าใครparentเป็น แต่ฉันต้องการที่จะคิดออกที่child1เป็น ฉันจะทำสิ่งนี้ได้อย่างไร มีเครื่องมือหลายอย่างที่ฉันจัดการ แต่ไม่มีใครสามารถบอกได้ว่ากระบวนการใดอยู่ที่ปลายอีกด้านของซ็อกเก็ต ฉันเหนื่อย: lsof -c progname lsof -c parent -c child1 ls -l /proc/$(pidof server)/fd cat /proc/net/unix โดยพื้นฐานแล้วฉันสามารถเห็นซ็อกเก็ตทั้งสองและทุกอย่างเกี่ยวกับพวกเขา แต่ไม่สามารถบอกได้ว่าพวกเขาเชื่อมต่อกัน ฉันพยายามระบุว่า FD ใดในผู้ปกครองกำลังสื่อสารกับกระบวนการลูก

2
lsof และพอร์ตการฟัง
ฉันกำลังพยายามรับฟังกระบวนการทั้งหมดสำหรับการเชื่อมต่อเครือข่ายบน Mac OS X netstatไม่มี-pตัวเลือกและฉันกำลังลองด้วย lsof lsof -i -sTCP:LISTEN ให้รายชื่อที่เป็นธรรมของกระบวนการฟัง แต่ไม่ใช่ทั้งหมด ที่ฉันสามารถทำได้เช่น Telnet ไปยังพอร์ต 10080 ที่ฉันมีกระบวนการรับฟังสำหรับการเชื่อมต่อ lsofแต่นี้จะไม่แสดงในการส่งออกของ ฉันพลาดอะไรไป $ telnet localhost 10080 Trying ::1... Connected to localhost. Escape character is '^]'. ^] telnet> Connection closed. แต่ $ sudo lsof -n -i | grep 10080 $
50 osx  lsof 

1
ฉันจะตรวจสอบไฟล์ที่เปิดของกระบวนการแบบเรียลไทม์ได้อย่างไร
ฉันรู้ว่าฉันสามารถดูไฟล์ที่เปิดของกระบวนการที่ใช้lsof ในขณะนั้นในเครื่อง Linux ของฉัน อย่างไรก็ตามกระบวนการสามารถเปิดแก้ไขและปิดไฟล์ได้อย่างรวดเร็วจนฉันไม่สามารถมองเห็นได้เมื่อทำการตรวจสอบโดยใช้เชลล์สคริปต์มาตรฐาน (เช่นwatch) ตามที่อธิบายไว้ใน"การตรวจสอบไฟล์กระบวนการเปิดบน linux (เรียลไทม์)" . ดังนั้นฉันคิดว่าฉันกำลังมองหาวิธีง่ายๆในการตรวจสอบกระบวนการและดูว่ามันทำอะไรไปบ้างเมื่อเวลาผ่านไป มันจะดีถ้ามันเป็นไปได้ที่จะเห็นว่าการเชื่อมต่อเครือข่ายมัน (พยายามที่จะ) และให้เริ่มต้นการตรวจสอบก่อนที่กระบวนการจะมีเวลาในการทำงานโดยไม่ต้องเริ่มการตรวจสอบ เป็นการดีที่ฉันต้องการทำสิ่งนี้: sh $ audit-lsof /path/to/executable 4530.848254 OPEN read /etc/myconfig 4530.848260 OPEN write /var/log/mylog.log 4540.345986 OPEN read /home/gert/.ssh/id_rsa <-- suspicious 4540.650345 OPEN socket TCP ::1:34895 -> 1.2.3.4:80 | [...] 4541.023485 CLOSE /home/gert/.ssh/id_rsa <-- would have missed 4541.023485 …

3
วิธีการตีความผลลัพธ์ของคำสั่ง lsof นี้?
root@host [/home2]# lsof /home2 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME php 3182 ctxmortg cwd DIR 8,17 4096 32858196 /home2/ctxmortg/public_html/hello php 3182 ctxmortg 3r REG 8,17 46404 55781766 /home2/ctxmortg/public_html/hello/cache/subprimemortgagemorgage.com/cache-zch-8284-cache.txt php 3185 ctxmortg cwd DIR 8,17 4096 32858196 /home2/ctxmortg/public_html/hello php 3185 ctxmortg 3r REG 8,17 4185 35962154 /home2/ctxmortg/public_html/hello/cache/curl/http%3A%2F%2Fimage.yahoo.cn%2Fs%3Fq%3DNudity%26c%3D0%26s%3D%26page%3D277 php …
33 lsof 

6
วิธีที่ดีที่สุดในการเพิ่มพื้นที่ว่างในดิสก์จากไฟล์ที่ถูกลบซึ่งเปิดค้างไว้
สวัสดีฉันมีหลายไฟล์ที่ถูกลบ แต่ด้วยเหตุผลบางประการพื้นที่ดิสก์ที่เกี่ยวข้องกับไฟล์ที่ถูกลบไม่สามารถใช้งานได้จนกว่าฉันจะฆ่ากระบวนการสำหรับไฟล์ที่สละพื้นที่ดิสก์อย่างชัดเจน $ lsof /tmp/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME cron 1623 root 5u REG 0,21 0 395919638 /tmp/tmpfPagTZ4 (deleted) พื้นที่ดิสก์ที่ถ่ายโดยไฟล์ที่ถูกลบด้านบนทำให้เกิดปัญหาเช่นเมื่อพยายามใช้ปุ่มแท็บเพื่อเติมข้อความในเส้นทางของไฟล์โดยอัตโนมัติฉันได้รับข้อผิดพลาด bash: cannot create temp file for here-document: No space left on device แต่หลังจากฉันเรียกใช้kill -9 1623พื้นที่สำหรับ PID นั้นได้รับการปลดปล่อยและฉันไม่ได้รับข้อผิดพลาดอีกต่อไป คำถามของฉันคือ: เหตุใดพื้นที่นี้จึงไม่ว่างทันทีเมื่อลบไฟล์ครั้งแรก วิธีที่ดีที่สุดในการเรียกคืนพื้นที่ไฟล์ที่เกี่ยวข้องกับไฟล์ที่ถูกลบคืออะไร? และโปรดแจ้งให้เราทราบคำศัพท์ที่ไม่ถูกต้องที่ฉันใช้หรือข้อมูลอื่น ๆ ที่เกี่ยวข้องและเกี่ยวข้องกับสถานการณ์นี้


3
ไฟล์ถูกเปิดโดยกระบวนการโหลดเข้าสู่ RAM หรือไม่
ยกตัวอย่างเช่นคำสั่งต่างๆsedคือโปรแกรมและโปรแกรมต่าง ๆ นั้นมีการประมวลผลแบบลอจิกภายในไฟล์และไฟล์เหล่านี้อยู่ในฮาร์ดดิสก์ แต่เมื่อคำสั่งจะถูกเรียกใช้สำเนาของไฟล์ของพวกเขาจากฮาร์ดดิสก์จะถูกใส่ลงไปในRAMที่พวกเขาเข้ามาในชีวิตและสามารถทำและสิ่งที่เรียกว่ากระบวนการ กระบวนการสามารถใช้ประโยชน์จากไฟล์อื่น ๆ อ่านหรือเขียนลงไปและถ้าพวกเขาทำไฟล์เหล่านั้นเรียกว่าเปิดไฟล์ มีคำสั่งให้แสดงรายการไฟล์ที่เปิดอยู่ทั้งหมดโดยกระบวนการที่ทำงานอยู่ทั้งหมด: lsof. ตกลงดังนั้นสิ่งที่ฉันสงสัยคือถ้าดับเบิ้ลไลฟ์ของคำสั่งหนึ่งคำในฮาร์ดดิสก์อีกอันใน RAM ก็เป็นจริงสำหรับไฟล์ประเภทอื่นเช่นผู้ไม่มีลอจิกโปรแกรม แต่เป็นคอนเทนเนอร์สำหรับ ข้อมูล. ข้อสันนิษฐานของฉันคือไฟล์ที่เปิดโดยกระบวนการจะโหลดเข้าสู่ RAM ด้วย ฉันไม่รู้ว่ามันเป็นเรื่องจริงหรือไม่มันเป็นเพียงสัญชาตญาณ ได้โปรดใครซักคนทำความเข้าใจกับมันได้ไหม?
24 files  memory  lsof 

1
ตรวจสอบไฟล์อย่างต่อเนื่องด้วย lsof
มีวิธีทำให้ lsof ทำงานอย่างต่อเนื่องเพื่อตรวจสอบทุกไฟล์ที่ถูกเปิดในเวลาจริงหรือไม่ ฉันไม่รู้ชื่อของกระบวนการ ฉันต้องการให้ lsof ทำงานต่อเนื่องเป็นระยะเวลาหนึ่งจนกระทั่งฉันเห็นรายการมีสิ่งที่ฉันต้องการ
23 files  lsof 

6
ทางเลือกสำหรับคำสั่ง“ lsof”?
ในหลายกรณี "lsof" ไม่ได้ติดตั้งบนเครื่องที่ฉันต้องทำงาน แต่ "function" ของ lsof จะต้องใช้อย่างมาก (เช่นบน AIX) : \ มีแอปพลิเคชั่น "lsof" ใด ๆ ในโลกที่ไม่ใช่หน้าต่างหรือไม่? อัปเดต: สำหรับตัวอย่าง: ฉันจำเป็นต้องรู้ว่ากระบวนการใดใช้ไดเรกทอรี "/ home / ชื่อผู้ใช้"?

5
ภายใต้ AIX ฉันจะรับเส้นทางแบบเต็มของโปรแกรมที่ผูกเข้ากับพอร์ตได้อย่างไร
ภายใต้ Linux ฉันสามารถใช้netstat -tulpnwและpsเช่น: # netstat -tulpnw | grep :53 tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1482/named udp 0 0 127.0.0.1:53 0.0.0.0:* 1482/named # ps aux | fgrep 1482 named 1482 0.0 1.0 93656 44900 ? Ssl Sep06 3:17 /usr/sbin/named -u named root 20221 0.0 0.0 4144 552 pts/0 R+ …
14 process  aix  socket  lsof  netstat 

2
วิธีการเรียก lsof อย่างถูกต้องเพื่อดึงการเชื่อมต่อ TCP ทั้งหมด?
# lsof -n -itcp | wc 92 919 10212 # lsof -n | grep TCP | wc 2482 27222 373861 สิ่งที่ฉันทำผิดพลาดกับlsof -itcp? การโทรดังกล่าวกำลังข้ามส่วนหนึ่งของการเชื่อมต่อดูเหมือนว่านี่เป็นการเชื่อมต่อของเธรด
14 tcp  lsof 

4
ไม่สามารถนับใหม่ / ย้อนกลับเป็นอ่านอย่างเดียวหลังจากอัปเกรดแพ็คเกจ
ฉันกำลังใช้ Debian Stretch read-onlyพาร์ทิชันรากของฉันคือการติดตั้ง เฉพาะเมื่อฉันติดตั้งหรืออัปเกรดแพ็คเกจจะ/ติดตั้งใหม่read-write(โดยใช้ apt hook) แล้วจึงติดตั้งใหม่อีกroครั้ง บางครั้งหลังจากอัปเกรดแพ็คเกจฉันไม่สามารถนับใหม่/เป็นอ่านอย่างเดียว: mount -o remount,ro / mount: / is busy สำหรับ Debian เวอร์ชั่นเก่า (Wheezy) ฉันสามารถแสดงรายการไฟล์ที่ไม่ได้ลิงก์กับlsof: lsof +L1 หรือโดยเฉพาะอย่างยิ่งไฟล์ที่ป้องกันไม่ให้/ถูกนับใหม่กลับไปเป็น ro: { lsof +L1 ; lsof|sed -n '/SYSV/d; /DEL|(path /p;' ; } | grep -Ev '/(dev|home|tmp|var)' อย่างไรก็ตามใน Debian Stretch lsof +L1จะไม่มีรายการไฟล์ใด ๆ ฉันไม่เห็นการเปลี่ยนแปลงใด ๆ+|-Lในman lsofที่จะอธิบายว่าทำไมมันหยุดทำงาน …
13 debian  files  apt  readonly  lsof 

4
lsof -p PID เทียบกับ lsof | PID ของ grep
ฉันไม่เข้าใจ ouput ของคำสั่ง lsof เมื่อฉันเขียน lsof -p PID ฉันได้ 4 บรรทัดและเมื่อฉันเขียน lsof | grep PID ฉันได้รับหลายร้อยบรรทัด มันจะไม่ส่งคืนผลลัพธ์เดียวกันหรือไม่ ขอบคุณสำหรับคำตอบของคุณ นี่คือผลลัพธ์ ดูเหมือนว่าจะเป็นกระบวนการย่อยหรืองานนี้หมายถึงอะไร? lsof -p 29076 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 29076 pr cwd unknown /proc/29076/cwd (readlink: Permission denied) java 29076 pr rtd unknown /proc/29076/root (readlink: Permission denied) …
12 process  lsof 

2
ย้ายไฟล์ แต่เมื่อปิดแล้วเท่านั้น
ฉันต้องการย้ายไฟล์ขนาดใหญ่ที่สร้างโดยกระบวนการภายนอกทันทีที่ปิด คำสั่งทดสอบนี้ถูกต้องหรือไม่ if lsof "/file/name" then # file is open, don't touch it! else if [ 1 -eq $? ] then # file is closed mv /file/name /other/file/name else # lsof failed for some other reason fi fi แก้ไข: ไฟล์แสดงชุดข้อมูลและฉันต้องรอจนกว่ามันจะเสร็จสมบูรณ์เพื่อย้ายมันเพื่อให้โปรแกรมอื่นสามารถทำงานกับมันได้ นั่นเป็นเหตุผลที่ฉันจำเป็นต้องทราบว่ากระบวนการภายนอกเสร็จสิ้นด้วยไฟล์หรือไม่

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