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


28

ฉันจะบอกได้อย่างไรว่าฉันมี symlink ทางลัดของบางประเภทหรือโฟลเดอร์ใน Linux โปรดดูภาพหน้าจอต่อไปนี้

ลิงก์สัญลักษณ์ใน linux shell

อย่างที่คุณเห็นlsคำสั่งแสดงรายการวัตถุที่บางส่วนมีสีเป็นสีน้ำเงินเข้มในขณะที่วัตถุอื่น ๆ มีสีน้ำเงินอ่อน (สีฟ้า) วัตถุสีสีฟ้าเหล่านี้คืออะไร? ลิงก์สัญลักษณ์ที่แท้จริงเหล่านี้มีอะไรบ้าง

อย่างที่คุณเห็นฉันไม่สามารถcdเรียกหนึ่ง hdd ได้

root@dm500hd:/# cd hdd
-sh: cd: can't cd to hdd

ฉันคิดว่ามันต้องเปลี่ยนเส้นทาง/media/hddและฉันสังเกตว่าโฟลเดอร์ hdd หายไป

มีวิธีแก้ไขปัญหานี้หรือไม่?

อัปเดต:นี่คือผลลัพธ์ของls -alคำสั่ง

ลิงก์สัญลักษณ์ใน linux shell 2

อย่างที่คุณเห็นมันบอกว่าhdd -> /media/hddมันมีสีแดง นี่หมายความว่ามันใช้งานไม่ได้หรือว่าถูกเมานท์อัตโนมัตินั่นคือเมื่อมีการเชื่อมต่อฟิสิคัลฮาร์ดดิสก์?

อัปเดต:นี่คือผลลัพธ์ของgrep media /etc/auto*คำสั่ง

ลิงก์สัญลักษณ์ใน linux shell 3

สิ่งเหล่านี้/etc/auto.master:/media/netและ/etc/auto.networkรายการทำอะไร

นี่คือผลลัพธ์ของls -Fal /mediaคำสั่ง

ลิงก์สัญลักษณ์ใน linux shell 4

นี่เป็นความช่วยเหลือหรือไม่? ...

นี่คือผลลัพธ์ของstatและfileคำสั่งรวมถึงรายการของ / usr และ / bin

ลิงก์สัญลักษณ์ใน linux shell 5

สิ่งนี้ช่วยฉันได้ไหม? ... มันช่วยคุณได้ไหม ...

สิ่งที่คุณควรรู้ก็คือนี่เป็น STB ที่ใช้ Linux กับ BusyBox เป็นระบบฝังตัว ดังนั้นอาจไม่รองรับคำสั่งทั้งหมด

อัปเดต:ภาพหน้าจอล่าสุดแสดงไฟล์และคำสั่งที่รองรับใน / sbin และ / usr / sbin

ลิงก์สัญลักษณ์ใน linux shell 6

อัปเดต:เพิ่มการแบ่งปันใหม่ ...

ตอนนี้ฉันได้ลบการแชร์เก่านั้นและสร้างใหม่ด้วยชื่อเดียวกันกับก่อนหน้านี้และยังเพิ่มการแชร์ที่สองทันที ดังนั้นตอนนี้ฉันมีสองคน

SHARES
remote share   local share
mydream        dream1
mydream2       dream2

LOCATIONS
remote        local
C:\mydream    /media/net/dream1
C:\mydream2   /media/net/dream2

การบันทึกจะอยู่ใน / media / net / dream1 / movie

นอกจากนี้สำหรับการแบ่งปันความฝัน 2 ฉันเลือกที่จะไม่ติดตั้งมันเป็นการเปลี่ยน HDD ใน Mount Manager เนื่องจากฉันสงสัยว่ามันเป็นไปไม่ได้ที่จะมี HDD มากกว่าหนึ่งตัว มันจะบันทึกที่ไหน ไปยังสถานที่ทั้งสอง? ด้วยอัตราข้อมูลสองเท่า ... ฉันไม่คิดว่าเป็นไปได้

ดังนั้นด้วยเหตุนี้จึงไม่มีชื่อโฟลเดอร์ย่อยสำหรับการแบ่งปัน Dream2 เฉพาะรายการที่ระบุเป็นการเปลี่ยน HDD เมื่อสร้างขึ้นจะได้รับโฟลเดอร์ย่อยของภาพยนตร์

ถ้าฉันcdจะ hdd /media/net/dream1จากรากมันจะไป ถ้าฉันcdไป..(แม่) root (/)มันกลับไป

ที่ราก จะช่วยให้ ls -al จะช่วยให้ จะช่วยให้hdd -> media/hddls -al hddhdd -> media/hddls -al media/media/net/dream1

นอกจากนี้ถ้าผมcdจะ/mediaมีอีกhddsymlink ฉันไม่เคยสังเกตมาก่อน ฉันคิดว่าสิ่งนี้ถูกสร้างขึ้นโดยอัตโนมัติเมื่อมีการติดตั้งการแชร์ และถ้าฉันcdนี้ hdd /media/net/dream1มันจะไป

symlink hdd(/ hdd) ที่ชี้ไปยังhddsymlink อื่น(/ media / hdd) ซึ่งจะชี้ไปที่โฟลเดอร์แชร์ (/ media / net / dream1)? ..... ฉันกำลังวิงเวียน ...

มันไม่ได้เป็นแบบนี้มาก่อนรุ่น 3.2.3 หรืออย่างน้อย 3.2.0 ของอิมเมจ Enigma2

แก้ไข:โดยการตั้งค่าการแชร์ที่สองเพื่อทำหน้าที่แทน HDD มันจะกลายเป็นการแชร์ที่ใช้งานสำหรับการบันทึก ในขณะเดียวกันการแบ่งปันที่ถูกตั้งค่าให้ทำหน้าที่แทนการเปลี่ยน HDD จะไม่ทำงานอีกต่อไปแม้ว่าจะยังคงถูกตั้งค่าเป็น "ใช่" (ทำหน้าที่แทนการเปลี่ยน HDD)

หาก Dream1 ถูกใช้ครั้งแรกเป็นการเปลี่ยน HDD ("ใช่" เพื่อทำหน้าที่แทน) และจากนั้น Dream2 ถูกตั้งค่าให้ทำหน้าที่แทน HDD มันจะกลายเป็นส่วนแบ่งใหม่สำหรับการบันทึก ฉันยังสามารถดูและดูไฟล์วิดีโอที่จัดเก็บใน Dream1 แต่ฉันไม่สามารถบันทึกได้อีกต่อไป ถ้าฉันต้องการกลับไปใช้ Dream1 สำหรับการบันทึกก่อนอื่นฉันต้องตั้งค่า Dream2 เป็น "ไม่" (หยุดทำหน้าที่แทน HDD) จากนั้นรีเซ็ต Dream1 เป็น "ใช่"

ไม่เลยไม่สามารถบันทึกเป็นสองหุ้นในเวลาเดียวกันได้ หนึ่งในนั้นต้องไป ดังนั้นมันจึงเป็นความฝัน 1 หรือความฝัน 2 ไม่ใช่ทั้งสองอย่าง แม้ว่าฉันควรพูดถึงว่าเป็นไปได้ที่จะบันทึกมากกว่าหนึ่งบริการ (ช่องทีวี) ถ้าพวกเขาทั้งสองอยู่ในทรานสปอนเดอร์เดียวกันถ้าไม่คุณจะได้รับข้อความ "ไม่มีเครื่องรับสัญญาณฟรี" นี่คือ STB ที่มีเครื่องรับสัญญาณเดียวเท่านั้น


3
โปรดอย่าวางภาพหน้าจอสำหรับข้อความ คัดลอกและวางข้อความแทนและใช้แท็กล่วงหน้าหรือแท็กรหัสหรือ backticks เพื่อรักษาการเยื้อง / การจัดรูปแบบ และแก้ไขข้อความให้น้อยที่สุดเท่าที่จำเป็นเพื่อแสดงสิ่งที่คุณต้องการแสดง BTW ปัญหาอย่างหนึ่งของสกรีนช็อตคือแบบอักษรขนาดเล็กกลายเป็นจุดที่ไม่สามารถอ่านได้ - เมื่อดูบนหน้าจอความละเอียดสูง (เช่น 1920x1200 หรือ 2566x1440) พิกเซลจะคงที่สามารถปรับขนาดข้อความได้
cas

@CraigSanders Sanders คุณสูง ... ในการลงมติ! ;) อย่างสุดซึ้งฉันได้ยินคุณคน! ฉันไม่ได้คิดถึงเรื่องนั้น ขอบคุณสำหรับทิป. ฉันจะลองใช้การบล็อกรหัสในครั้งต่อไป
Samir

มันทำอะไรls -alจริงๆแสดงไฟล์ทั้งหมด (-a) ในรายการยาว (-l) ใช่สิ่งนี้ให้ข้อมูลเพิ่มเติมแก่ฉัน แต่ช่วยให้ฉันระบุลิงก์สัญลักษณ์ได้หรือไม่ หากมีลูกศรไปทางขวาฉันจะบอกได้อย่างไรว่าเป็นลิงก์สัญลักษณ์หรือไม่ ตัวระบุอื่นคือรหัสสี แต่คุณบางคนแนะนำว่าสีไม่น่าเชื่อถือ
Samir

นี่ไม่ใช่ปัญหาอีกต่อไป ฉันติดตั้ง Windows CIFS ที่ใช้ร่วมกันผ่านปลั๊กอิน Mount Manager (Dreambox, Enigma 2, release 3.2.3) และฉันเลือกที่จะใช้แทน HDD หลังจากที่ทำเช่นนี้คำสั่งแสดงให้เห็นว่าls -al hdd -> media/hddและตอนนี้ก็เป็นไปได้ที่cdจะ hdd และการเชื่อมโยงใช้งานได้ แต่สิ่งที่น่าสนใจคือการls -al mediaแสดงhdd -> /media/net/mydreamและนี่คือความจริงแล้วมันจะไปที่ไหนเมื่อฉันcdไปยัง HDD "mydream" เป็นชื่อของการแชร์ เหตุใดฉันจึงได้ผลลัพธ์ที่แตกต่าง
Samir

ฉันเดาว่ามีกลไกบางอย่าง (อาจเป็นกฎ udev) เพื่อให้แน่ใจว่า / hdd symlink ได้รับการปรับปรุงให้ชี้ไปที่อุปกรณ์หรือการแชร์ใด ๆ ที่ติดตั้งอยู่เพื่อให้โปรแกรมและสคริปต์อื่น ๆ สามารถใช้ / hdd (หลังจากทดสอบไดเรกทอรี มันชี้ไปที่เป็นเมานต์ fs) เพิ่งเกิดจากความอยากรู้อยากเห็นเกิดอะไรขึ้นถ้าคุณติดตั้งไดรฟ์หรือแชร์ที่สอง มันทำให้ a / hde symlink ไหม? หรือ dreambox ถูก จำกัด ไว้ที่ไดเรกทอรีการบันทึกเดียว?
cas

คำตอบ:


29

คุณสามารถใช้ไฟล์, สถิติหรือ ls

ไฟล์:

คำสั่ง file ถูกใช้เพื่อจัดประเภทไฟล์ตามประเภท (symlink, ไดเรกทอรี, อุปกรณ์) หรือเนื้อหา (ข้อความ, gzip, รูปภาพ, tar, ... โดยไม่คำนึงถึงนามสกุล):

$ file / dev / stdout
/ dev / stdout: ลิงก์สัญลักษณ์ไปที่ `/ proc / self / fd / 1 '
$ file / proc / self / fd / 1
/ proc / self / fd / 1: ลิงก์สัญลักษณ์ไปที่ `/ dev / pts / 0 '
$ file / dev / pts / 0
/ dev / pts / 0: ตัวละครพิเศษ (136/0)
$ file / etc / passwd
/ etc / passwd: ข้อความ ASCII

LS:

$ ls -al / dev / stdout
lrwxrwxrwx 1 รูทราก 15 ม.ค. 27 07:55 / dev / stdout -> / proc / self / fd / 1

stat:

คำสั่ง stat พิมพ์ข้อมูลเมตาของไฟล์เช่นการอนุญาต, ขนาด, จำนวนบล็อกและอื่น ๆ ...

$ stat / dev / stdout
  ไฟล์: '/ dev / stdout' -> '/ proc / self / fd / 1'
  ขนาด: 15 บล็อก: 0 IO บล็อก: ลิงก์สัญลักษณ์ 4096
อุปกรณ์: 5h / 5d Inode: 1212 ลิงค์: 1
การเข้าถึง: (0777 / lrwxrwxrwx) Uid: (0 / root) Gid: (0 / root)
การเข้าถึง: 2014-01-27 11: 22: 47.971187828 -0200
แก้ไข: 2014-01-27 07: 55: 13.996981285 -0200
เปลี่ยนแปลง: 2014-01-27 07: 55: 13.996981285 -0200
 เกิด: -

อะไรfile hddหมายถึง? ฉันไม่ได้รับมัน ...
Samir

ให้ฉันstat hdd -sh: stat: not found
กลั้ว

ฉันคิดว่าคุณไม่มีคำสั่งสถิติ (หรือไม่ได้อยู่ใน $ PATH ของคุณ) อย่างไรก็ตามคำสั่ง file สามารถให้ shot คุณได้ ...
filipenf

สำหรับ bash บนเทอร์มินัล Mac คำสั่ง file จะติดตาม symlink ตามค่าเริ่มต้น ถ้าคุณต้องการดูว่ามันเป็น symlink เพิ่มคำสั่ง -h ซึ่งไม่เป็นไปตาม symlink
ClintM


3

วิธีที่ง่ายที่สุดในการดูประเภทของไฟล์ที่กำหนดคือการใช้fileคำสั่ง มีเอาต์พุตที่ชัดเจนมีสติโดยไม่ต้องให้คุณจำlsเครื่องหมายลักษณนามว่าเป็นอะไรหรือใช้เอาต์พุตสีซึ่งอาจแตกต่างกันไปตามผู้ใช้แต่ละคนกับเครื่อง ตัวอย่างเช่น:

mail ~ # file /test
/test: broken symbolic link to `/nonexist'
mail ~ # file /dev
/dev: directory
mail ~ # file /dev/fd
/dev/fd: symbolic link to `/proc/self/fd'

หากคุณพบว่าตัวเองอยู่ในระบบที่ไม่มีfileคุณสามารถใช้statคำสั่งซึ่งจะบอกให้คุณทราบว่าเป็นรายการไฟล์ประเภทใดและอยู่ที่ไหน หากต้องการตรวจสอบว่าลิงก์เสียคุณจะต้องเรียกใช้ลิงก์ที่ขาดstat -Lการเชื่อมโยงซึ่งจะทำให้เกิดข้อผิดพลาดหากลิงก์เสีย

ในส่วนที่สองของคำถามของคุณmediaไดเรกทอรีมักจะถูกจัดการโดยการนับอัตโนมัติบางประเภท /media/hddรายการอาจถูกใช้โดยระบบของคุณสำหรับ USB อุปกรณ์จัดเก็บข้อมูลขนาดใหญ่หรือแม้อาจจะรอให้สิทธิชนิดของฮาร์ดไดรฟ์ (ATA VS SCSI VS อุปกรณ์ป้องกัน Xen) ลิงก์ที่ใช้งานไม่ได้จะไม่ทำอันตรายอะไรเลยนอกจากโปรแกรมจะพยายามใช้มันและลิงก์สื่อนั้นก็เพื่อความสะดวกของคุณจริงๆ คุณสามารถออกจาก/hddลิงค์ได้อย่างปลอดภัยหรือลบออกได้ตามต้องการ


คุณถูกต้องดูเหมือนว่าไฟล์ไม่ใช่คำสั่งที่นี่มันบอกว่า-sh: file: not foundเมื่อฉันทำfileและป้อน
Samir

ดูเหมือนว่า $ PATH ของคุณจะค่อนข้าง จำกัด ลองดำเนินการโดยตรงแทน:/usr/bin/file
joruffin

ฉันเห็นจากความคิดเห็นอื่นของคุณว่าคุณอยู่ในกล่องรับสัญญาณ ที่อาจไม่มีสิ่งใดนอกจาก Busybox ติดตั้งและ Busybox ไม่เลียนแบบfileคำสั่ง แต่มีการสนับสนุนสำหรับstatคำสั่งถ้ามันถูกคอมไพล์มันยังอาจอยู่นอก $ PATH ของคุณหรืออยู่ที่ไหนสักแห่งที่คลุมเครือเช่น / sbin / stat หรือ / usr / sbin / สถิติ
joruffin

มันดูไม่เหมือนว่ามันจะมีการสนับสนุนอย่างใดอย่างหนึ่งหรือfile statฉันตรวจสอบในเส้นทางที่คุณพูดถึง (ดูภาพหน้าจอด้านบน) อย่างไรก็ตาม ... สิ่งที่คุณกำลังพูดคือในระบบลีนุกซ์fileคำสั่งตามด้วยพา ธ การค้นหาของไฟล์หรือโฟลเดอร์เป้าหมายจะเปิดเผยให้ฉันเห็นว่ามันเป็นเอนทิตี้อะไร?
กลั้ว

2
สำหรับคำสั่งที่ได้รับการสนับสนุนใน Busybox คุณสามารถเรียกใช้/usr/bin/busyboxและจะแสดงคำสั่งทั้งหมดที่มีการสนับสนุนแม้ว่าจะไม่ได้ติดตั้งคำสั่งก็ตาม การใช้คำสั่ง busybox /usr/bin/busybox <command> <parameters>ที่คุณสามารถเรียกใช้ /usr/bin/busybox stat /hddดังนั้นถ้ามันบอกว่าจะสนับสนุนคำสั่งสถิติที่คุณสามารถเรียกใช้ เพื่อให้ง่ายต่อการใช้งานคุณสามารถสร้าง symlink สำหรับ Busybox ด้วยชื่อของคำสั่งที่จะเรียกใช้ ln -s /usr/bin/busybox /usr/bin/statถ้ามันรองรับคำสั่งสถิติที่คุณสามารถทำให้มันง่ายต่อการทำงานด้วย
joruffin

1
  1. ใช่ฟ้าเป็นลิงก์สัญลักษณ์
  2. เพื่อดูว่าพวกเขากำลังชี้ไปที่: ls -Fal
  3. เอาท์พุต ls -Fal /media

นี่คือจุดนับอัตโนมัติบางชนิด

grep media /etc/auto* อาจสร้างความนิยม


จุดอัตโนมัติคืออะไร คุณหมายถึงว่า ... เมื่อฉันเสียบดิสก์ไดรฟ์ SATA แบบกายภาพมันจะติดตั้งที่จุดนี้หรือไม่ ... นี่คือ Linux STB และไม่มี HDD ในตัว แต่มันมีพอร์ต eSATA อยู่ด้านหลัง นี่อาจเป็นสิ่งที่อุทิศเพื่อจุดประสงค์นี้
Samir

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