Unix & Linux

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


2
สิ่งที่ป้องกันไม่ให้ stdout / stderr จาก interleaving?
ว่าฉันใช้กระบวนการบางอย่าง: #!/usr/bin/env bash foo & bar & baz & wait; ฉันรันสคริปต์ด้านบนดังนี้: foobarbaz | cat เท่าที่ฉันสามารถบอกได้ว่าเมื่อใดก็ตามที่กระบวนการเขียนไปยัง stdout / stderr ผลลัพธ์ของมันจะไม่แทรกสอด - แต่ละบรรทัดของ stdio นั้นดูเหมือนจะเป็นอะตอม มันทำงานอย่างไร ยูทิลิตี้อะไรควบคุมวิธีแต่ละอะตอมเป็นอะตอม
14 shell  osx  stdout  output  stderr 

1
วิธีการดำเนินการ chroot กับ namespaces Linux?
หลังจากอ่านเกี่ยวกับเนมสเปซลินุกซ์ฉันก็รู้สึกว่ามันมีคุณสมบัติอื่น ๆ มากมายซึ่งเป็นทางเลือกสำหรับ chroot ตัวอย่างเช่นในบทความนี้ : การใช้งานอื่น ๆ [ของ namespaces] รวมถึง [... ] chroot () - การแยกลักษณะของกระบวนการเป็นส่วนหนึ่งของลำดับชั้นไดเรกทอรีเดียว อย่างไรก็ตามเมื่อฉันโคลนเนมสเปซ Mount ตัวอย่างเช่นด้วยคำสั่งต่อไปนี้ฉันยังคงเห็นต้นไม้รากเดิมทั้งหมด unshare --mount -- /bin/bash ฉันเข้าใจว่าตอนนี้ฉันสามารถทำการเมาท์เพิ่มเติมในเนมสเปซใหม่ที่ไม่ได้ใช้ร่วมกับเนมสเปซดั้งเดิมได้ดังนั้นจึงให้การแยก แต่ก็ยังคงเป็นรูทเดียวกันเช่น/etcจะยังคงเหมือนเดิมสำหรับเนมสเปซทั้งสอง ฉันยังต้องchrootเปลี่ยนรูทหรือมีทางเลือกอื่นหรือไม่? ฉันคาดหวังว่าคำถามนี้จะให้คำตอบ แต่คำตอบนั้นใช้chrootอีกครั้งเท่านั้น แก้ไข # 1 pivot_rootมีความคิดเห็นที่ถูกลบในขณะนี้ว่าเป็นที่กล่าวถึง เนื่องจากนี่เป็นส่วนหนึ่งของlinux/fs/namespace.cความเป็นจริงมันเป็นส่วนหนึ่งของการติดตั้งเนมสเปซ นี้แสดงให้เห็นว่าการเปลี่ยนไดเรกทอรีรากเท่านั้นที่มีunshareและmountเป็นไปไม่ได้ แต่ namespaces ให้ตัวเอง - ฉลาดมากขึ้น - chrootรุ่นของ ถึงกระนั้นฉันก็ยังไม่ได้รับแนวคิดหลักของวิธีการนี้ที่ทำให้มันแตกต่างจากchrootเดิมแม้หลังจากอ่านซอร์สโค้ด (ในแง่ของความปลอดภัยและการแยกที่ดีกว่า) แก้ไข # 2 นี้ไม่ซ้ำกับคำถามนี้ หลังจากรันคำสั่งทั้งหมดจากคำตอบฉันมี /tmp/tmp.vyM9IwnKuY …
14 chroot  namespace 

2
วิธีใช้ Bash สำหรับ sh ใน Ubuntu
ฉันกำลังติดตั้งโปรแกรมขนาดใหญ่ซึ่งมีทรัพยากรเป็นrpmไฟล์ มันติดอยู่ที่เส้นของ #!/bin/sh SCITEGICPERLBIN=`dirname $0` SCITEGICPERLHOME=`dirname $SCITEGICPERLBIN` if [ $SCITEGICPERLHOME == "." ] เห็นได้ชัดว่าshทำงานbashใน Red Hat Linux ด้วยไวยากรณ์นี้ แต่ให้ข้อผิดพลาดunexpected operatorใน Ubuntu ฉันไม่สามารถเปลี่ยนสคริปต์bashเป็นสคริปต์มาจากrpmแพ็คเกจ ฉันสามารถแยกและบรรจุหีบห่อใหม่rpmแต่อาจมีสคริปต์ดังกล่าวจำนวนมาก มีวิธีการเปลี่ยนค่าเริ่มต้นของเชลล์เพื่อใช้#!/bin/shเป็นbashหรืออย่างอื่นซึ่งสามารถจัดการกับ[โอเปอเรเตอร์ได้หรือไม่?

3
-f, แทรกตัวแบ่งบรรทัดหลังจากบันทึกไม่ได้ใช้งานเป็นเวลา 3 วินาที?
เมื่อทำ a tail -f error.log, วิธีแทรกเส้นแบ่งโดยทางโปรแกรมหลังจากไม่มีสิ่งใดถูกผนวกเข้ากับไฟล์เป็นเวลา 3 วินาที? (เห็นได้ชัดว่าเมื่อมีการเพิ่มตัวแบ่งบรรทัดหนึ่งบรรทัดไม่ควรเพิ่มตัวแบ่งบรรทัดอื่น ๆ จนกว่าจะมีการเพิ่มบรรทัดข้อความอื่น ๆ ลงในไฟล์บันทึก) ตัวอย่างเช่นบรรทัดเหล่านี้ถูกผนวกเข้ากับ error.log: foo bar boo [[wait 4 seconds]] 2far 2foo 2bar 2boo [[wait 40 seconds]] 2far นี่จะเป็นผลลัพธ์ในคอนโซล: foo bar boo 2far 2foo 2bar 2boo 2far

4
มีบางกรณีที่จำนวนช่องว่างมีความสำคัญในสคริปต์ทุบตี (หรือเชลล์อื่น ๆ )
ฉันได้รับแจ้งว่าช่องว่างมีความสำคัญในbashหรือเชลล์สคริปต์อื่น ๆ และฉันไม่ควรเปลี่ยนการมีอยู่ของช่องว่างเว้นแต่ว่าฉันรู้ว่าฉันกำลังทำอะไรอยู่ โดย "เปลี่ยนการดำรงอยู่" ฉันหมายถึงการแทรกช่องว่างระหว่างอักขระที่ไม่ใช่ช่องว่างสองตัวหรือลบช่องว่างระหว่างอักขระที่ไม่ใช่ช่องว่างสองตัวเช่นการเปลี่ยนvar="$val"เป็นvar ="$val"หรือกลับกัน ฉันต้องการถาม มีกรณีใดบ้างที่ใช้ช่องว่างเดียวหรือใช้ช่องว่างต่อเนื่องหลายรายการในเชลล์สคริปต์สร้างความแตกต่าง? . (แน่นอนการแทรก / ลบช่องว่างในเครื่องหมายคำพูดสร้างความแตกต่างเช่นเปลี่ยนจากecho "a b"เป็นecho "a b"หรือกลับกันฉันกำลังมองหาตัวอย่างนอกเหนือจากตัวอย่างเล็กน้อย) ฉันเจอคำถามนี้แล้วแต่มีอยู่เรื่องหนึ่งเกี่ยวกับการเพิ่มและลบช่องว่างระหว่างอักขระที่ไม่ใช่ช่องว่างสองตัวที่ฉันรู้ตัวอย่างมากมายว่ามันจะสร้างความแตกต่าง ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม รวมเปลือกหอยให้มากขึ้นถ้าเป็นไปได้


1
tar - วิธีรักษา timestamps ให้มีความแม่นยำมากกว่าหนึ่งวินาที
ฉันใช้tarไฟล์หลายชุด แก้ไขการประทับเวลาของไฟล์มีความสำคัญและต้องมีความแม่นยำสูง การใช้การtar -cvfประทับเวลาจะถูกเก็บไว้ แต่ถูกปัดเศษเป็นวินาทีที่ใกล้ที่สุดนั่นคือการเรียกใช้statไฟล์จะแสดงเฉพาะการประทับเวลาที่ลงท้ายด้วย. 0 มีวิธีในการรักษาเวลาประทับให้มีความแม่นยำมากขึ้นหรือมีเครื่องมือเก็บถาวรอื่นที่ฉันสามารถใช้เพื่อจุดประสงค์นี้หรือไม่

7
ตรวจสอบว่าไฟล์ทุกบรรทัดเกิดขึ้นในไฟล์อื่นหรือไม่
ฉันมีสองไฟล์: file1 ที่มีประมาณ 10,000 บรรทัดและ file2 ที่มีไม่กี่ร้อยบรรทัด ฉันต้องการตรวจสอบว่าทุกบรรทัดของ file2 เกิดขึ้นใน file1 นั่นคือ: ∀ line ℓ∈ file2: ℓ∈ file1 หากใครไม่ทราบความหมายของสัญลักษณ์เหล่านี้หรือ "ตรวจสอบว่าทุกบรรทัดของ file2 เกิดขึ้นใน file1" หมายถึง: บรรทัดที่เทียบเท่าหลายบรรทัดในไฟล์ใดไฟล์หนึ่งไม่มีผลต่อการตรวจสอบที่ส่งคืนว่าไฟล์นั้นตรงตามข้อกำหนดหรือไม่ ฉันจะทำสิ่งนี้ได้อย่างไร

3
ฉันสามารถใช้ `sed` เพื่อแปลอักขระเช่นเดียวกับ` tr 'ได้หรือไม่
ฉันต้องการแทนที่ชุดอักขระด้วยอักขระที่เกี่ยวข้องจากอีกชุดหนึ่งดังนี้: original set: ots "target" set: u.x foobartest → fuubar.ex. การแปล / การทับศัพท์เช่นนี้เป็นtrคำสั่งพิเศษ: $ echo 'foobartest' | tr 'ots' 'u.x' fuubar.ex. น่าเสียดายที่trไม่รองรับการเปลี่ยนไฟล์แบบsedเดิม ฉันต้องการที่จะใช้sedดังนั้นฉันไม่จำเป็นต้องบูรณาการล้อของไฟล์ชั่วคราวสำหรับเล่นปาหี่
14 sed  tr 

4
วิธีการติดตามกิจกรรมเครือข่ายของคำสั่ง?
ฉันต้องการติดตามกิจกรรมเครือข่ายของคำสั่งฉันลอง tcpdump และ strace ไม่สำเร็จ ตัวอย่างเช่นหากฉันกำลังติดตั้งแพคเกจหรือใช้คำสั่งใด ๆ ที่พยายามเข้าถึงบางไซต์ฉันต้องการดูกิจกรรมเครือข่ายนั้น (ไซต์ที่พยายามเข้าถึง) ฉันเดาว่าเราสามารถทำได้โดยใช้ tcpdump ฉันพยายาม แต่มันกำลังติดตามกิจกรรมเครือข่ายทั้งหมดของระบบของฉัน สมมติว่าถ้าฉันใช้คำสั่งที่เกี่ยวข้องกับเครือข่ายหลายเครือข่ายและฉันต้องการติดตามเฉพาะกิจกรรมเครือข่ายคำสั่งเฉพาะเวลานั้นยากที่จะหาคำตอบที่แน่นอน มีวิธีทำเช่นนั้นหรือไม่? UPDATE: ฉันไม่ต้องการติดตามทุกสิ่งที่เกิดขึ้นบนอินเทอร์เฟซเครือข่ายของฉัน ฉันต้องการติดตามคำสั่ง (สำหรับตัวอย่างกิจกรรมเครือข่าย #yum install -y vim) เช่นเว็บไซต์ที่พยายามเข้าถึง

2
SIGQUIT เหมือนกับ SIGTERM หรือไม่
ฉันกำลังเรียนรู้ CentOS / RHEL และกำลังทำบางสิ่งเกี่ยวกับการจัดการกระบวนการ หนังสือ RHCSA ที่ฉันกำลังอ่านกำลังอธิบายว่ากำลังkill 1234ส่ง SIGQUIT ฉันคิดเสมอว่าคำสั่ง kill โดยไม่เพิ่มสวิตช์สำหรับชนิดสัญญาณควรเป็นค่าเริ่มต้นkill -15 SIGTERM เป็นkill -15และ SIGKILL kill -9ใช่ไหม CentOS / RHEL ใช้วิธีที่แตกต่างกันเล็กน้อยkill -15หรือว่าฉันเพิ่งเข้าใจผิด? แก้ไข: kill -lให้ SIGQUIT เป็นkill -3และดูเหมือนว่าจะเกี่ยวข้องกับการใช้แป้นพิมพ์เพื่อยุติกระบวนการ man 7 signalและระบุด้วยว่า SIGQUIT นั้นเป็นkill -3ดังนั้นฉันสามารถสันนิษฐานได้ว่าหนังสือของฉันไม่ถูกต้องในการระบุว่า SIGQUIT นั้นเป็นkill -15ค่าเริ่มต้น

2
จะทำให้ Firefox เคารพการตั้งค่าของฉันเพื่อปิดการใช้งานการบอกตัวอักษรสำหรับแบบอักษรเดียวได้อย่างไร
ฉันใช้Debian GNU / Linux 8 รุ่นด้วยLXDE เกี่ยวกับแบบอักษรฉันมีการกำหนดค่าระบบของฉันให้ใช้การป้องกันนามแฝงการแสดงผลพิกเซลย่อยและคำใบ้เต็ม อย่างไรก็ตามฉันต้องการปิดการใช้งานคำใบ้สำหรับ Liberation Serif แต่ไม่สามารถใช้งานได้ใน Firefox Firefox ยังคงใช้คำใบ้แบบเต็มสำหรับ Liberation Serif อย่างไรก็ตาม Liberation Serif แสดงอย่างถูกต้องตามที่ไม่ได้บอกใบ้ในโปรแกรมอื่น ๆ (ฉันตรวจสอบใน Gucharmap, Leafpad และ LibreOffice Writer) ฉันจะปิดการใช้งานคำใบ้สำหรับฟอนต์ serif ทั้งหมดหรือแค่ Liberation Serif ใน Firefox ได้อย่างไร ฉันได้ตั้งค่านัยเต็มไปด้วย Customizer ที่มาพร้อมกับ LXDE และรหัสต่อไปนี้ใน~/.config/fontconfig/fonts.confและ~/.fonts.conf(ภายหลังเป็นลิงค์สัญลักษณ์ไปยังอดีต): <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <match target="font"> <edit …

1
สุ่ม“ ยกเลิกการรับรองโดยตัวเลือกท้องถิ่น (เหตุผล: 3 = DEAUTH_LEAVING)”
ฉันกำลังวิ่ง uname -r 4.10.6-1-ARCH ในรุ่นนักพัฒนา dell XPS 13 ของฉัน (2014) ขณะนี้ฉันมีปัญหาแปลก ๆ กับ wifi ของฉัน (ฉันใช้ Networkamanger ด้วยnm-appletสำหรับ KDE): 1) ในระดับผิวเผินที่สุดฉันสังเกตเห็นว่าบางครั้งมันทำงานได้อย่างสมบูรณ์แบบ: เมื่อฉันบูทพีซีมันได้เชื่อมต่อกับ wifi แล้วและบางครั้งมันก็ไม่เชื่อมต่อในลักษณะใด ๆ (ไวไฟเหมือนเดิมเสมอ ); 2) ฉันพยายามรีสตาร์ท NM: และปัญหายังคงอยู่ 3) บางครั้งถ้าฉันรีบูตแล็ปท็อปของฉันมันทำงานได้อีกครั้งบางครั้งไม่ได้ 4) ฉันพยายามใช้ nmcli nmcli connection up My-WiFi จากนั้นฉันก็สังเกต dmesg [ 250.165837] IPv6: ADDRCONF(NETDEV_CHANGE): wlp2s0: link becomes ready …

1
systemd: ฉันจะติดตั้งระบบไฟล์ USB โดยอัตโนมัติโดยใช้ / etc / fstab ได้อย่างไร
ฉันต้องการให้ระบบไฟล์ USB ของฉันติดตั้งอัตโนมัติเมื่อฉันเชื่อมต่ออุปกรณ์ ฉันจะตั้งค่า automount ด้วยsystemdผ่านได้/etc/fstabอย่างไร

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