Unix & Linux

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

8
โคลนพาร์ติชั่นหรือฮาร์ดไดรฟ์ทั้งไฟล์
ฉันชอบโคลนพาร์ติชันทั้งหมดหรือฮาร์ดไดรฟ์ทั้งหมดลงบนดิสก์ภายนอกที่มีขนาดใหญ่กว่า แต่ต้องการสร้างไฟล์ที่กระจัดกระจาย ฉันมักจะใช้ddสำหรับการโคลน แต่มันไม่รองรับไฟล์ที่กระจัดกระจาย เป็นวิธีแก้ปัญหาฉันใช้สิ่งที่ชอบ: cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw อย่างไรก็ตามนี่เป็นเรื่องยุ่งยากเล็กน้อยสำหรับรสนิยมของฉันและไม่อนุญาตให้ฉันดำเนินการต่อหากยกเลิก เป็นเรื่องตลกที่มีเครื่องมือ NTFS สำหรับสิ่งนี้ ( ntfsclone) แต่ไม่มีเครื่องมือดังกล่าวสำหรับระบบไฟล์ดั้งเดิมของ Linux (EXT2-4) มีเครื่องมือที่ดีกว่าสำหรับสิ่งนี้เช่นddตัวแปรที่มีการสนับสนุนเบาบาง? ฉันไม่ได้มองหาซอฟต์แวร์ที่เป็นกรรมสิทธิ์สำหรับการสำรองข้อมูลดิสก์ แต่เพียงต้องการทำสำเนาโคลนแบบเบาบางซึ่งฉันสามารถติดตั้งเป็นอุปกรณ์วนรอบหากจำเป็น

5
เหตุใดจึงใช้ superflous dash (-) เพื่อส่งค่าสถานะตัวเลือกให้ tar
การสร้างไฟล์ tar ไดเรกทอรีให้tarคำสั่งมีcompress, verboseและfileตัวเลือกที่สามารถพิมพ์ได้ดังนี้: $ tar -cvf my.tar my_directory/ แต่มันก็ใช้งานได้เช่นกัน: $ tar cvf my.tar my_directory/ นั่นคือไม่มีเส้นประ (-) นำหน้าตัวเลือก ทำไมคุณจะผ่านเส้นประ (-) ไปที่รายการตัวเลือก
35 utilities  tar 

9
คุณจะรวมบรรทัดทั้งหมดที่ลงท้ายด้วยอักขระเครื่องหมายทับขวาได้อย่างไร
การใช้เครื่องมือบรรทัดคำสั่งทั่วไปเช่น sed หรือ awk เป็นไปได้หรือไม่ที่จะรวมบรรทัดทั้งหมดที่ลงท้ายด้วยอักขระที่กำหนดเช่นแบ็กสแลช? ตัวอย่างเช่นให้ไฟล์: foo bar \ bash \ baz dude \ happy ฉันต้องการเอาท์พุทนี้: foo bar bash baz dude happy

3
grep ใช้แคชเพื่อเพิ่มความเร็วในการค้นหาหรือไม่?
ฉันได้สังเกตเห็นว่าการรันที่ตามมาของgrepเคียวรีเดียวกัน (และเคียวรีที่แตกต่างกัน แต่ในไฟล์เดียวกัน) นั้นเร็วกว่าการรันครั้งแรกมาก สิ่งนี้แสดงให้เห็นว่า grep ใช้การแคชแบบโครงสร้างที่ใช้สำหรับการค้นหา แต่ฉันไม่สามารถหาข้อมูลอ้างอิงบนอินเทอร์เน็ตได้ กลไกใดที่ช่วยgrepให้ได้ผลลัพธ์เร็วขึ้นในการค้นหาครั้งต่อไป
35 linux  grep  cache 

8
ดูล็อกจากล่างขึ้นบน
มีคำสั่ง linux หรือวิธีการดูบันทึกจากล่างขึ้นบนมากกว่าจากบนลงล่าง ฉันรู้tail -n <number of lines>แต่มีบางอย่างที่ฉันสามารถเลื่อนและเลื่อนจากล่างขึ้นบนได้จริงหรือ

4
มีคำสั่ง“ log” ของ GNU Screen เทียบเท่าใน tmux หรือไม่?
ฉันใช้คำสั่ง "log" ของหน้าจออย่างหนักเพื่อบันทึกผลลัพธ์ของเซสชันไปยังไฟล์เมื่อฉันทำการเปลี่ยนแปลงในสภาพแวดล้อมที่กำหนด ฉันค้นหาผ่านหน้า man ของ tmux แต่ไม่พบสิ่งที่เทียบเท่า ใครรู้คุณสมบัติคล้ายกันใน tmux หรือฉันต้องเขียนสคริปต์เสื้อคลุมของตัวเองเพื่อทำ แก้ไข: ฉันตระหนักถึง 'สคริปต์' และโปรแกรมอรรถประโยชน์อื่น ๆ ที่อนุญาตให้ฉันเข้าสู่ระบบเซสชั่น เหตุผลที่ฟังก์ชั่นการใช้งานของหน้าจอมีประโยชน์มากคือความสามารถในการกำหนดตัวแปร logfile ซึ่งใช้การยกเว้นสตริงเพื่อระบุแต่ละเซสชันโดยไม่ซ้ำกัน เช่นฉันมีฟังก์ชั่นเชลล์ซึ่งกำหนดชื่อโฮสต์จะ SSH ไปยังโฮสต์นั้นในหน้าต่างหน้าจอใหม่และตั้งชื่อหน้าต่างเป็นชื่อโฮสต์ เมื่อฉันเริ่มบันทึกของเซสชั่นนั้นจะมีคำนำหน้าชื่อหน้าต่าง หากฟังก์ชันนี้ไม่มีอยู่ใน tmux ฉันจะต้องสร้างชุดเชลล์ฟังก์ชันใหม่เพื่อตั้งค่า 'สคริปต์' ของเซสชันที่ฉันต้องการบันทึก นี่ไม่ใช่เรื่องยากอย่างมาก แต่อาจไม่คุ้มค่ากับความพยายามที่หน้าจอทำสิ่งที่ฉันต้องการอยู่แล้ว
35 gnu-screen  logs  tmux 

7
บังคับให้ไดเรกทอรีอยู่ในแคชเสมอ
ฉันได้ทดสอบวิธีการต่าง ๆ เพื่อปรับปรุงเวลาที่ใช้ในการรวบรวมโครงการ c ++ ทั้งหมดของฉัน ขณะนี้ใช้เวลาประมาณ 5 นาที ฉันทดลองกับ distcc, ccache และอื่น ๆ เมื่อเร็ว ๆ นี้ฉันค้นพบว่าถ้าฉันคัดลอกโครงการทั้งหมดของฉันลงใน RAM- ไดรฟ์แล้วรวบรวมจากที่นั่นจะลดเวลาในการคอมไพล์ลงเหลือ 30% จากเดิม - เพียง 1.5 นาที เห็นได้ชัดว่าการทำงานจากไดรฟ์แรมนั้นใช้ไม่ได้จริง ดังนั้นไม่มีใครรู้วิธีที่ฉันสามารถบังคับให้ระบบปฏิบัติการที่จะเก็บไดเรกทอรีบางแคชเสมอ ? ฉันยังต้องการให้ไดเรกทอรีซิงค์กลับไปที่ดิสก์เหมือนปกติ แต่ฉันต้องการคัดลอกข้อมูลในหน่วยความจำด้วยเช่นกัน เป็นไปได้ไหม แก้ไข: ในฐานะที่เป็นทางออกที่เป็นไปได้เราแค่คิดว่าจะเปิดตัวภูตที่วิ่งrsyncทุก ๆ 10 วินาทีหรือมากกว่านั้นเพื่อซิงค์ดิสก์ไดรฟ์กับไดรฟ์ RAM จากนั้นเราก็เรียกใช้การรวบรวมจากไดรฟ์แรม rsyncเป็นอย่างเห็นได้ชัด แต่จะทำงานจริงๆ? แน่นอนว่าระบบปฏิบัติการนั้นสามารถทำได้ดีกว่า ....

5
วัดทรูพุตของท่อในเปลือก
มีคำสั่งเชลล์ที่ให้คุณวัดความเร็วของข้อมูลที่ผ่านไปดังนั้นคุณสามารถวัดความเร็วของเอาต์พุตของคำสั่งในไพพ์ได้ ดังนั้นแทนที่จะ: $ somecommand | anothercommand คุณสามารถทำสิ่งที่ชอบ: $ somecommand | ??? | anothercommand และสถิติปริมาณงาน (ไบต์ / วินาที) ถูกพิมพ์ไปยัง stderr ฉันคิดว่า แต่ฉันทำไม่ได้สำหรับชีวิตของฉันจำได้ว่าคำสั่งนั้นคืออะไร

4
aliasing cd to pushd - เป็นความคิดที่ดีหรือไม่?
ควรใช้นามแฝงต่อไปนี้หรือไม่: cd() { pushd $1; } ในทุบตี? ฉันคิดว่ามันจะมีประโยชน์มากเพราะฉันสามารถใช้ชุดข้อมูลpopdแทนที่จะเป็นเพียงcd -ครั้งเดียว มีกรณีใดบ้างที่สิ่งนี้อาจเป็นปัญหาหรือไม่?

2
หน้าคนใดอธิบายถึงกระบวนการเปิดคอมพิวเตอร์
ไม่กี่ปีที่ผ่านมาฉันจำได้ว่าใช้เทอร์มินัลและอ่านบทช่วยสอนในคู่มือ Linux (โดยใช้man) เกี่ยวกับการทำงานของคอมพิวเตอร์หลังจากเปิดใช้งาน มันนำคุณผ่านกระบวนการทั้งหมดที่อธิบายบทบาทของ BIOS, ROM, RAM และ OS ในกระบวนการนี้ หน้านี้เป็นหน้าอะไรถ้ามี? ฉันจะอ่านอีกครั้งได้อย่างไร
35 linux  boot  man 

2
แนวคิดของ "เคอร์เนลบัฟเฟอร์บัฟเฟอร์", "ระดับผู้ใช้", "ระดับการบันทึก" คืออะไร
ฉันมักจะเห็นคำว่า "kernel ring buffer", "ระดับผู้ใช้", "ระดับการบันทึก" และคำอื่น ๆ ปรากฏขึ้นพร้อมกัน เช่น / var / log / dmesg มีข้อมูลบัฟเฟอร์เคอร์เนลเคอร์เนล /var/log/kern.log มีเฉพาะข้อความของเคอร์เนลของ loglevel ใด ๆ /var/log/user.log มีข้อมูลเกี่ยวกับบันทึกระดับผู้ใช้ทั้งหมด พวกเขาทั้งหมดเกี่ยวกับบันทึกหรือไม่ พวกเขาเกี่ยวข้องกันอย่างไรและแตกต่างกันอย่างไร โดย "ระดับ" ฉันจะจินตนาการถึงลำดับขั้นของหลายระดับหรือไม่ "ระดับผู้ใช้" เกี่ยวข้องกับ "พื้นที่ผู้ใช้" หรือไม่ พวกมันเกี่ยวข้องกับrunlevelหรือวงแหวนป้องกันบ้างไหม?
35 kernel  logs 


4
ข้อผิดพลาดทางไวยากรณ์ของ Bash เมื่อ“ อื่น” ตามหลังประโยค“ ว่าง” ที่ว่างเปล่า
ทำไมสคริปต์ต่อไปนี้จะไม่ทำงาน แต่ให้ข้อผิดพลาดทางไวยากรณ์ของelse: LOGS3_DIR=~/logs if [ -d "$LOGS3_DIR" ]; then cd cd "$LOGS3_DIR" echo "$LOGS3_DIR" for filename in `find "." -mtime 1 -type f` do if lsof "$filename" > /dev/null then # file is open else echo "deleting $filename" rm "$filename" fi done fi

2
จำเป็นต้องใช้เครื่องหมายคำพูดสำหรับการกำหนดตัวแปรท้องถิ่นหรือไม่?
ฉันสามารถละเว้นการเสนอราคาทางด้านขวาของการมอบหมายงานท้องถิ่นได้อย่างปลอดภัยหรือไม่? function foo { local myvar=${bar} stuff() } ฉันสนใจเป็นหลักbashแต่ข้อมูลใด ๆ ในกรณีมุมในเปลือกหอยอื่น ๆ ยินดีต้อนรับ

3
แสดงรายการใบรับรอง ssl ca ที่มีอยู่ทั้งหมด
ลูกค้า git ของฉันอ้างสิทธิ์ error: Peer's Certificate issuer is not recognized. นั่นหมายความว่าไม่สามารถหาคีย์เซิร์ฟเวอร์ ssl ที่สอดคล้องกันได้ในระบบโกลบอลริง ฉันต้องการตรวจสอบสิ่งนี้โดยดูที่รายการของปุ่ม ssl ที่มีอยู่ในระบบทั้งหมดบนระบบ gentoo linux ฉันจะรับรายชื่อนี้ได้อย่างไร
35 linux  openssl 

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