Unix & Linux

คำถาม & คำตอบสำหรับผู้ใช้ Linux, FreeBSD และระบบปฏิบัติการ Un * x อื่น ๆ

5
เหตุใดจึงยังคงใช้หมายเลขไดรฟ์ / พาร์ติชันอยู่
หลายครั้งโดยเฉพาะอย่างยิ่งเมื่อล้อเล่นกับ boot-loader ฉันจะเห็นไดรฟ์ตัวเลขและหมายเลขพาร์ติชันที่ใช้ ตัวอย่างเช่นในที่/boot/grub/grub.cfgฉันเห็นset root='hd0,gpt2'รายการบูต UEFI ของฉันมักจะอ้างอิงหมายเลขไดรฟ์ / พาร์ติชันและดูเหมือนว่าจะครอบตัดขึ้นในเกือบทุกบริบทที่เกี่ยวข้องกับ bootloaders ตอนนี้เรามี UUID และ PARTUUID การจัดการกับพาร์ติชั่นในลักษณะนี้ดูเหมือนไม่เสถียรอย่างไม่น่าเชื่อ (ไม่รับประกันไดรฟ์ที่ติดตั้งในลำดับเดียวกันเสมอผู้ใช้สามารถย้ายลำดับของไดรฟ์ที่เสียบเข้ากับ mobo เป็นต้น) คำถามของฉันจึงเป็นสองเท่า: รูปแบบการกำหนดแอดเดรสนี้ไม่เสถียรอย่างที่ฉันได้อธิบายไว้ข้างต้นหรือไม่ ฉันขาดอะไรบางอย่างในมาตรฐานซึ่งหมายความว่าชุดรูปแบบนี้มีความน่าเชื่อถือมากกว่าที่ฉันคาดไว้หรือชุดรูปแบบการกำหนดแอดเดรสนี้จะทำให้ระบบของคุณไม่สามารถบูตได้จริง ๆ (จนกว่าคุณจะแก้ไขรายการบูตของคุณเป็นอย่างน้อย) ลำดับที่แตกต่างกันหรือเสียบเข้ากับช่องเสียบต่างๆบนเมนบอร์ดของคุณ? หากคำตอบของคำถามข้างต้นคือใช่แล้วทำไมรูปแบบการกำหนดแอดเดรสนี้จึงยังคงใช้งานต่อไป จะไม่ใช้ UUID หรือ PARTUUID สำหรับทุกสิ่งที่จะมีเสถียรภาพมากขึ้นและสอดคล้องกันหรือไม่

2
ฉันจะป้องกันการขยาย Bash จากการส่งไฟล์ที่ขึ้นต้นด้วย“ -” เป็นอาร์กิวเมนต์ได้อย่างไร
ฉันพยายามค้นหาสตริงซ้ำด้วยซ้ำgrepแต่ฉันได้รับสิ่งนี้: $ grep -r "stuff" * grep: unrecognized option '---corporate-discount.csv' Usage: grep [OPTION]... PATTERN [FILE]... Try 'grep --help' for more information. ฉันจะป้องกัน Bash ไม่ให้ส่งไฟล์ที่ขึ้นต้นด้วย-อาร์กิวเมนต์ได้อย่างไร
14 shell  grep 

3
มีไฟล์ที่มีอยู่เสมอและผู้ใช้ 'ปกติ' ไม่สามารถ lstat ได้หรือไม่
ฉันต้องการสิ่งนี้สำหรับการทดสอบหน่วย มีฟังก์ชันที่ทำlstatบนพา ธ ไฟล์ที่ส่งผ่านเป็นพารามิเตอร์ ฉันต้องเรียกใช้เส้นทางรหัสที่lstatล้มเหลว (เพราะครอบคลุมรหัสได้ถึง 90%) การทดสอบสามารถทำงานภายใต้ผู้ใช้คนเดียวได้ดังนั้นฉันจึงสงสัยว่ามีไฟล์ใน Ubuntu ที่มีอยู่เสมอหรือไม่ แต่ผู้ใช้ทั่วไปไม่มีสิทธิ์อ่านเพื่ออ่านหรือไปยังโฟลเดอร์ของมัน (ดังนั้นlstatจะล้มเหลวหากไม่ดำเนินการในฐานะรูท) ไฟล์ที่ไม่มีอยู่ไม่ใช่วิธีการแก้ปัญหาเนื่องจากมีเส้นทางรหัสแยกต่างหากสำหรับสิ่งที่ฉันเรียกแล้ว แก้ไข: การขาดการเข้าถึงเพื่ออ่านไฟล์เท่านั้นไม่เพียงพอ ด้วยที่lstatยังคงสามารถดำเนินการได้ ฉันสามารถทริกเกอร์ได้ (บนเครื่องโลคัลของฉันซึ่งฉันมีสิทธิ์เข้าถึงรูท) โดยการสร้างโฟลเดอร์ใน / root และไฟล์ในนั้น และตั้งค่าการอนุญาต 700 ในโฟลเดอร์ ดังนั้นฉันกำลังค้นหาไฟล์ที่อยู่ในโฟลเดอร์ที่เข้าถึงได้โดยรูทเท่านั้น

2
Shebang นี้เริ่มต้นด้วยเครื่องหมายขีดคั่นคู่ (-) อย่างไร
ฉันได้พบ shebang ประเภทต่อไปนี้ในหน้า RosettaCode: --() { :; }; exec db2 -txf "$0" มันใช้งานได้สำหรับ Db2 และสิ่งที่คล้ายกันสำหรับ Postgres อย่างไรก็ตามฉันไม่เข้าใจทั้งบรรทัด ฉันรู้ว่าเส้นประสองครั้งเป็นความคิดเห็นใน SQL และหลังจากนั้นมันเรียกการปฏิบัติการ Db2 ด้วยพารามิเตอร์บางตัวที่ส่งไฟล์ตัวเองเป็นไฟล์ แต่สิ่งที่เกี่ยวกับวงเล็บวงเล็บปีกกาลำไส้ใหญ่และเซมิโคลอนและวิธีสามารถแทนที่ shebang # จริง! ? https://rosettacode.org/wiki/Multiline_shebang#PostgreSQL

2
เกิดข้อผิดพลาดกับคำสั่ง iotop บน CentOS
เมื่อใช้sudo iotop(เวอร์ชันล่าสุด0.6-2.el7) ในเทอร์มินัลใน CentOS 7.5 ที่เพิ่งติดตั้งใหม่ของฉันฉันได้รับข้อความแสดงข้อผิดพลาดดังต่อไปนี้: Traceback (most recent call last): File "/sbin/iotop", line 17, in <module> main() File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 620, in main main_loop() File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 610, in <lambda> main_loop = lambda: run_iotop(options) File "/usr/lib/python2.7/site-packages/iotop/ui.py", line 508, in run_iotop return curses.wrapper(run_iotop_window, options) File "/usr/lib64/python2.7/curses/wrapper.py", line 43, in wrapper …
14 centos  python  iotop 

3
ทำไม systemctl \ {restart, status} \ sshd \; งาน?
เอาต์พุตของคำสั่งด้านบนเมื่อส่งผ่าน echo คือ: # echo systemctl\ {restart,status}\ sshd\; systemctl restart sshd; systemctl status sshd; แม้ว่าฉันจะวางเอาต์พุตไปที่เทอร์มินัลก็ตาม แต่เมื่อฉันพยายามเรียกใช้คำสั่งโดยตรงฉันจะได้รับ: # systemctl\ {restart,status}\ sshd\; bash: systemctl restart sshd;: command not found... ฉันมีสองคำถาม .. วิธีการทดแทนและการขยายตัวนี้เรียกว่าอะไรกันแน่? (เพื่อให้ฉันสามารถค้นคว้าและเรียนรู้เพิ่มเติมเกี่ยวกับมันและวิธีการใช้อย่างถูกต้อง) ฉันทำอะไรผิดที่นี่ ทำไมมันไม่ทำงาน

2
เคอร์เนล Linux / Unix ต่างกันหรือไม่?
ฉันสามารถใช้เคอร์เนล Linux และใช้ร่วมกับพูด FreeBSD และในทางกลับกัน (เคอร์เนล FreeBSD พูดเป็น Debian) ได้หรือไม่ มีคำตอบสากลหรือไม่? ข้อ จำกัด คืออะไร? สิ่งกีดขวางคืออะไร?

3
เหตุใดฉันจึงต้อง chroot สำหรับ sandboxing เพื่อความปลอดภัยถ้าแอปพลิเคชันของฉันสามารถเรียกใช้ตั้งแต่เริ่มต้นที่ระดับต่ำกว่าได้
ฉันกำลังเขียน daemon เซิร์ฟเวอร์ HTTP ใน C (มีเหตุผลว่าด้วยอะไร) จัดการมันด้วยไฟล์ systemd unit ฉันเขียนใหม่แอปพลิเคชันที่ออกแบบมาเมื่อ 20 ปีก่อนประมาณปี 1995 และระบบที่พวกเขาใช้คือพวกเขา chroot แล้ว setuid และขั้นตอนมาตรฐาน ตอนนี้ในงานก่อนหน้าของฉันนโยบายปกติคือคุณไม่เคยเรียกใช้กระบวนการใด ๆ ในฐานะที่เป็นรูท คุณสร้างผู้ใช้ / กลุ่มสำหรับมันและเรียกใช้จากที่นั่น แน่นอนว่าระบบใช้บางสิ่งเป็นรูท แต่เราสามารถบรรลุการประมวลผลเชิงตรรกะทางธุรกิจทั้งหมดโดยไม่ต้องรูท ตอนนี้สำหรับดีมอน HTTP, ฉันสามารถเรียกใช้โดยไม่รูทถ้าฉันไม่ chroot ภายในแอปพลิเคชัน. ดังนั้นแอปพลิเคชันจะปลอดภัยกว่าหรือไม่ที่จะไม่รันในฐานะรูท? ปลอดภัยหรือไม่ที่จะเรียกใช้ในฐานะผู้ใช้ mydaemon ตั้งแต่ต้น? แทนที่จะเริ่มด้วย root, chrooting, จากนั้น setuid เป็น mydaemon-user
14 chroot  daemon 


1
ทำไมการเปลี่ยนเป็น 'หาง' จึงเปลี่ยนเนื้อหาของบรรทัด
เมื่อฉันดูผลลัพธ์ของ a SELECTด้วย MySQL Workbench มันถูกต้องด้วยหนึ่งเดียว\ max@host 10:13:58: ~$ mysql -h db-master.domain.local -uuser -ppw db -e ' > SELECT > DISTINCT i.filesourceregexp > FROM db.ImportLogFiles i' +------------------------------------------------+ | filesourceregexp | +------------------------------------------------+ | ^[0-9]{8}_1062355673_merge_google_pbn\.csv$ | | ^[0-9]{8}_8026062435_merge_google_pbn\.csv$ | | ^[0-9]{8}_1062355673_store_visits_report\.csv$ | +------------------------------------------------+ max@host 10:14:10: ~$ mysql -h db-master.domain.local -uuser -ppw db …
14 pipe  mysql  tail 

2
เหตุใดฉันไม่สามารถแสดงรายการไดเรกทอรีที่มีสิทธิ์อ่านได้
ฉันสร้างไดเรกทอรีdและไฟล์fข้างใน จากนั้นฉันให้สิทธิ์การอ่านในไดเรกทอรีนั้นเท่านั้น ฉันเข้าใจว่าควรหมายความว่าฉันสามารถแสดงรายการไฟล์ (เช่นที่นี่ ) แต่ฉันทำไม่ได้ will@wrmpb /p/t/permissions> ls -al total 0 drwxr-xr-x 3 will wheel 102 4 Oct 08:30 . drwxrwxrwt 16 root wheel 544 4 Oct 08:30 .. dr-------- 3 will wheel 102 4 Oct 08:42 d will@wrmpb /p/t/permissions> ls d will@wrmpb /p/t/permissions> หากฉันเปลี่ยนการอนุญาตให้เขียนและดำเนินการฉันสามารถดูไฟล์ได้ will@wrmpb /p/t/permissions> chmod 500 …
14 permissions  osx  fish 

6
ประโยชน์ของ /etc/apt/sources.list.d มากกว่า /etc/apt/sources.list คืออะไร
ฉันรู้ว่าคำถามนี้ถูกถามมาก่อน แต่ฉันไม่ยอมรับคำตอบ "คุณสามารถเห็นการเพิ่มที่กำหนดเองได้อย่างชัดเจน" เมื่อฉันเพิ่ม ppa (ซึ่งฉันยังไม่ได้ทำในปี) ฉันกดปุ่มบนแป้นพิมพ์ของฉันที่มีข้อความ "Enter" ซึ่งทำให้ฉันสามารถเพิ่มบรรทัดว่างก่อนรายการใหม่ (ฉันจะเพิ่มความคิดเห็นอธิบาย แต่ฉันเป็น นักเขียนเทคโนโลยีดังนั้น .... ) ฉันชอบที่sources.confสะอาดและเรียบร้อย /etc/apt/sources.d หมายความว่าฉันมีไฟล์ครึ่งโหลในการแยกวิเคราะห์แทนที่จะเป็นไฟล์เดียว AFAIK มี "แน่นอน" ไม่มีประโยชน์ในการมีหนึ่งไฟล์การกำหนดค่าเทียบกับ 6 (เพื่อประโยชน์ในการโต้แย้งบางทีคุณมี 3 หรือแม้กระทั่ง 2 ไม่สำคัญ ... 1 ยังคงเต้น 2) ใครสักคนโปรดหาข้อได้เปรียบที่มีเหตุผล "คุณสามารถเห็นการเพิ่มเติมที่กำหนดเอง" เป็นข้อแก้ตัวของคนยากจน ฉันต้องเพิ่มฉันรักการเปลี่ยนแปลงอย่างไรก็ตามเฉพาะเมื่อมีประโยชน์ที่ได้รับการแนะนำจากการเปลี่ยนแปลง แก้ไขหลังจากตอบกลับครั้งแรก: อนุญาตให้ติดตั้งใหม่ที่ต้องการ repos ของตัวเองไม่ต้องค้นหาไฟล์แฟลตเพื่อให้แน่ใจว่ามันจะไม่เพิ่มรายการที่ซ้ำกัน ตอนนี้พวกเขาต้องค้นหาไดเร็กทอรีของ dupe แทนที่จะเป็นไฟล์ flat หากพวกเขาไม่คิดว่าผู้ดูแลระบบจะไม่เปลี่ยนแปลงสิ่งต่าง ๆ ... อนุญาตให้ผู้ดูแลระบบปิดการใช้งาน (โดยการเปลี่ยนชื่อ) หรือลบ (โดยการลบ) …
14 linux  apt  etc 

5
ชิป MMU (หน่วยจัดการหน่วยความจำ) จำเป็นสำหรับหน่วยประมวลผลเพื่อรองรับหน่วยความจำเสมือนหรือไม่?
ชิป MMU (หน่วยจัดการหน่วยความจำ) จำเป็นสำหรับหน่วยประมวลผลเพื่อรองรับหน่วยความจำเสมือนหรือไม่? เป็นไปได้หรือไม่ที่จะจำลองฟังก์ชันการทำงานของ MMU ในซอฟต์แวร์ (ฉันทราบว่าอาจมีผลกระทบอย่างมากต่อประสิทธิภาพ)

1
วิธีการโน้มน้าวใจ dpkg ที่ libssl1.0.2 คือ> = libssl1.0.0?
ฉันกำลังพยายามติดตั้งแพ็คเกจ. deb ของบุคคลที่สามที่ฉันติดตั้งไว้ก่อนหน้านี้ใน Debian 8 แต่ฉันไม่สามารถติดตั้งในการตั้งค่า Debian 9 ใหม่ได้เนื่องจากฉันได้รับข้อผิดพลาดต่อไปนี้: dpkg: dependency problems prevent configuration of parity: parity depends on libssl1.0.0 (>= 1.0.0); however: Package libssl1.0.0 is not installed. ฉันไม่ได้มีการติดตั้ง libssl1.0.2 แต่ไม่ได้รับการยอมรับว่าเป็น "> = libssl1.0.0" ดังนั้นฉันจึงสงสัยว่าจะแก้ไขได้อย่างไร ฉันจะติดตั้ง libssl1.0.0 ด้วยตนเองหรือไม่ ถ้าเป็นเช่นนั้นได้อย่างไร ฉันจะเชื่อมโยงบางสิ่งบางอย่าง ถ้าเป็นเช่นนั้นอะไร อื่น ๆ อีก?

4
จะหาขนาดของพาร์ติชั่นที่ไม่ได้ประกอบเข้าไปบน Linux ได้อย่างไร?
ฉันใช้ tune2fs แต่ให้ข้อมูลเป็นบล็อกและฉันไม่สามารถรับค่าที่แน่นอนของขนาดรวมของพาร์ติชัน ฉันได้ใช้ไปfdisk -l /dev/mmcblk0p1แล้ว แต่ขนาดที่ฉันได้รับจากที่นี่ก็เป็นค่าที่แตกต่างกัน ฉันจะหาขนาดพาร์ติชันที่แน่นอนได้อย่างไร
14 linux 

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