Unix & Linux

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

3
เนื้อหาของ / bin / bash คืออะไรและฉันต้องทำอย่างไรหากฉันเขียนทับมันโดยไม่ตั้งใจ
ฉันเขียนทับไฟล์ / bin / bash โดยไม่ตั้งใจด้วยสคริปต์ใบ้ที่ฉันตั้งใจจะใส่ไว้ในโฟลเดอร์ / bin ฉันจะรับเนื้อหาของไฟล์นั้นกลับมาได้อย่างไร มีวิธีที่ฉันสามารถค้นหาเนื้อหาบนเว็บและเพียงแค่คัดลอกพวกเขากลับมา? ตัวเลือกของฉันคืออะไรที่นี่เนื่องจากเทอร์มินัลนั้นมีข้อผิดพลาดในการพูดถึง ฉันยังคงเป็นผู้เล่นหน้าใหม่ของสิ่งนี้และฉันขอขอบคุณทุกความช่วยเหลือที่ฉันสามารถได้รับ แก้ไข: ฉันลืมที่จะพูดถึงฉันใน Kali 2.2 Rolling ซึ่งค่อนข้างเดเบียนด้วยคุณสมบัติเพิ่มเติมบางอย่าง แก้ไข 2: ฉันยังรีสตาร์ทเครื่องเนื่องจากฉันไม่ได้ตระหนักถึงความผิดพลาดของฉันจนกระทั่งสองสามวันที่ผ่านมา นั่นทำให้ยากขึ้นอีกหน่อย

6
มีทางเลือกอะไรบ้างในการตรวจสอบพอร์ตที่เปิดอยู่นอกเหนือจาก telnet
เราสามารถใช้สิ่งต่อไปนี้เพื่อทดสอบ telnet VIA port; ในตัวอย่างต่อไปนี้เราทดสอบพอร์ต 6667: [root@kafka03 ~]# telnet kafka02 6667 Trying 103.64.35.86... Connected to kafka02. Escape character is '^]'. ^CConnection closed by foreign host เนื่องจากในเครื่องบางเครื่องเราไม่สามารถใช้ telnet (ด้วยเหตุผลภายใน) ทางเลือกอื่นในการตรวจสอบพอร์ตเป็น telnet คืออะไร

5
Linux ไม่ได้ใช้การแบ่งกลุ่ม แต่แบ่งหน้าเท่านั้น
Linux Programming Interfaceแสดงโครงร่างของพื้นที่ที่อยู่เสมือนของกระบวนการ แต่ละภูมิภาคในแผนภาพเป็นเซ็กเมนต์หรือไม่ จากความเข้าใจ Linux Kernel , ถูกต้องหรือไม่ว่าต่อไปนี้หมายความว่าหน่วยการแบ่งเซ็กเมนต์ใน MMU แมปเซ็กเมนต์และออฟเซ็ตภายในเซ็กเมนต์ไปยังที่อยู่หน่วยความจำเสมือนและหน่วยเพจจะแมปที่อยู่หน่วยความจำเสมือนกับที่อยู่หน่วยความจำทางกายภาพ หน่วยความจำการจัดการหน่วย (MMU) แปลงที่อยู่เชิงตรรกะเป็นที่อยู่เชิงเส้นโดยใช้วงจรของฮาร์ดแวร์ที่เรียกว่าหน่วยการแบ่งส่วน; ต่อมาวงจรฮาร์ดแวร์ตัวที่สองที่เรียกว่าหน่วยเพจจะแปลงที่อยู่เชิงเส้นเป็นที่อยู่ทางกายภาพ (ดูรูปที่ 2-1) ถ้าอย่างนั้นทำไมมันถึงบอกว่าลีนุกซ์ไม่ได้ใช้การแบ่งกลุ่ม แต่เป็นเพจจิ้งเท่านั้น? การแบ่งกลุ่มได้รวมอยู่ในไมโครโปรเซสเซอร์ 80x86 เพื่อสนับสนุนให้โปรแกรมเมอร์แยกแอปพลิเคชันของพวกเขาออกเป็นเอนทิตีที่เกี่ยวข้องกับเหตุผลเช่นรูทีนย่อยหรือพื้นที่ข้อมูลทั่วโลกและท้องถิ่น อย่างไรก็ตาม Linux ใช้การแบ่งกลุ่มในวิธีที่ จำกัด มาก ในความเป็นจริงการแบ่งส่วนและการแบ่งหน้าค่อนข้างซ้ำซ้อนเนื่องจากทั้งสองสามารถใช้เพื่อแยกพื้นที่ที่อยู่ทางกายภาพของกระบวนการ: การแบ่งส่วนสามารถกำหนดพื้นที่ที่อยู่เชิงเส้นที่แตกต่างกันให้กับแต่ละกระบวนการในขณะที่เพจจิ้งสามารถแมป . Linux ต้องการแบ่งหน้าเป็นการแบ่งกลุ่มด้วยเหตุผลต่อไปนี้: •การจัดการหน่วยความจำง่ายขึ้นเมื่อกระบวนการทั้งหมดใช้ค่าการลงทะเบียนเซกเมนต์เดียวกันนั่นคือเมื่อพวกเขาแชร์ที่อยู่เชิงเส้นชุดเดียวกัน •หนึ่งในวัตถุประสงค์การออกแบบของ Linux คือการพกพาไปยังสถาปัตยกรรมที่หลากหลาย โดยเฉพาะอย่างยิ่งสถาปัตยกรรม RISC ได้รับการสนับสนุนอย่าง จำกัด สำหรับการแบ่งส่วน Linux เวอร์ชัน 2.6 ใช้การแบ่งส่วนเมื่อจำเป็นโดยสถาปัตยกรรม 80x86 เท่านั้น


2
เหตุใดฉันจึงไม่สามารถฆ่ากระบวนการ SIGSTOP ด้วย SIGTERM และสัญญาณที่ค้างอยู่ถูกเก็บไว้ที่ไหน
ฉันกำลังใช้ Debian stretch (systemd) ฉันใช้ rsyslog daemon ในโหมดเบื้องหน้าโดยใช้ /usr/sbin/rsyslogd -n และฉันได้Ctrl+ Zเพื่อหยุดมัน สถานะของกระบวนการเปลี่ยนเป็นTl(หยุดทำงาน, เธรด) ฉันออกคำสั่งหลายคำสั่งให้กับกระบวนการและสถานะของกระบวนการเหมือนกัน: . เมื่อฉันทำมันก็ตาย ฉันมี 3 คำถามkill -15 <pid>Tlfg ทำไมเป็นSIGSTOPกระบวนการ -ed ไม่ตอบสนองต่อSIGTERM? ทำไมเคอร์เนลจึงเก็บมันไว้ในสถานะเดียวกัน ทำไมมันถึงถูกฆ่าทันทีที่ได้รับSIGCONTสัญญาณ หากเป็นเพราะSIGTERMสัญญาณก่อนหน้านี้จะถูกเก็บไว้ที่ไหนจนกว่ากระบวนการจะกลับมาทำงานต่อ
24 process  kill  signals 

3
ยังมีระบบรอบ ๆ ด้วยไบนารี / bin / sh?
/bin/shที่เปลือกบอร์นที่สร้างขึ้นในปี 1977 ที่ใช้จะเป็นเปลือกเริ่มต้นสำหรับระบบปฏิบัติการ Unix ทุกวันนี้ไฟล์นี้ยังคงมีอยู่ แต่ส่วนใหญ่เป็นเพียงลิงก์สัญลักษณ์ไปยังเชลล์เริ่มต้นที่เข้ากันได้กับ POSIX ซึ่งติดตั้งอยู่ในระบบ บน RHEL / CentOS มันชี้ไป/bin/bashที่เปลือก Bourne Again บน Ubuntu Linux ชี้ไป/bin/dashที่เชลล์ Debian Almquist บนเดเบียนจะชี้ไปที่/bin/dash(6.0 และใหม่กว่า; เดเบียนที่มีอายุมากกว่าให้ชี้ไปที่/bin/bash) ซึ่งทำให้ผมอยากรู้อยากเห็น: มีระบบ Unix หรือ Linux distro ที่ยังคงมีไบนารีสำหรับ/bin/sh?

4
ฉันจะแทนที่ AND (&&) ในวง for ได้อย่างไร
ฉันต้องการหาสิ่งที่เทียบเท่า cmd 1 && cmd 2 && ... && cmd 20 แต่มีคำสั่งแสดงอยู่ภายในforลูปเช่น for i in {1..20} do cmd $i done คุณอยากแนะนำอะไรให้เปลี่ยนในนิพจน์ที่สองเพื่อหาค่าที่เท่ากัน

2
$ {PATH: +: $ {PATH}} หมายถึงอะไร
ฉันเพิ่งสังเกตเห็นสิ่งต่อไปนี้ในโปรไฟล์ cygwin ของฉันแม่นยำยิ่งขึ้น: /usr/local/bin:/usr/bin${PATH:+:${PATH}} มันหมายความว่าอะไร? ทำไมไม่ใช่แค่ $ PATH นี่คือ 'ถ้า $ PATH มีอยู่แล้วเพิ่ม: $ PATH' หรือไม่ จุดประสงค์ของฉันคือการสลับลำดับและวางเส้นทาง cygwin ที่อยู่ด้านหลังหน้าต่างเส้นทาง ในอดีตฉันจะมี $PATH:/usr/local/bin:/usr/bin แต่สิ่งนี้ทำให้ฉันสับสน บางทีฉันควรจะทำ PATH="${PATH:+${PATH}:}/usr/local/bin:/usr/bin" การผนวก: เมื่อสิ้นสุด $ PATH?

4
กระบวนการในพื้นหลังโดยไม่มี“ &”
สมมติว่าคุณเริ่มต้นแอปพลิเคชันใหม่ใน Linux (เช่นเท็กซ์เอดิเตอร์ ฯลฯ ) แต่คุณลืมใช้“ &” คุณจะใช้คำสั่งใดเพื่อทำให้กระบวนการนั้นทำงานในพื้นหลังโดยไม่ต้องปิดแอปพลิเคชันนั้น ด้วยวิธีนี้คุณสามารถเปิดกระบวนการทั้งสองและแยกการทำงาน (เช่นเทอร์มินัลบรรทัดคำสั่งที่คุณใช้ในการสร้างกระบวนการและกระบวนการเช่นโปรแกรมแก้ไขข้อความยังคงทำงานอยู่?
24 processes 

5
วิธีรับ tty ที่ bash ทำงานอยู่?
ในวิธีที่สองที่เสนอโดยหน้านี้วิธีหนึ่งได้รับ tty ซึ่ง bash กำลังถูกรันด้วยคำสั่ง: ps ax | grep $$ | awk '{ print $2 }' ฉันคิดกับตัวเองว่านี่เป็นสิ่งที่ขี้เกียจนิดหน่อยโดยแสดงรายการกระบวนการทำงานทั้งหมดเพื่อดึงข้อมูลหนึ่ง มันจะไม่มีประสิทธิภาพมากกว่านี้หรือไม่ ps -p $$ | tail -n 1 | awk '{ print $2 }' FYI ฉันเจอปัญหานี้เพราะบางครั้งคำสั่งแรกจะให้ผลลัพธ์สองบรรทัด (หรือมากกว่า) สิ่งนี้จะเกิดขึ้นแบบสุ่มเมื่อจะมีกระบวนการอื่นทำงานด้วย PID ที่มี$$เป็นสตริงย่อย ในแนวทางที่สองฉันกำลังหลีกเลี่ยงกรณีดังกล่าวโดยขอ PID ที่ฉันรู้ว่าฉันต้องการ
24 bash  tty  ps 


5
Bash คำสั่งเพื่อคัดลอกก่อนเคอร์เซอร์และวางหลังจาก?
ฉันไม่แน่ใจว่าจะใช้คำนี้ได้อย่างไร แต่บ่อยครั้งที่ฉันพบว่าฉันพิมพ์คำสั่งเช่นนี้: cp /etc/prog/dir1/myconfig.yml /etc/prog/dir1/myconfig.yml.bak ฉันมักจะพิมพ์เส้นทางสองครั้ง (ด้วยแท็บเสร็จ) หรือฉันจะคัดลอกและวางเส้นทางด้วยเคอร์เซอร์ มี bashfoo ที่ทำให้พิมพ์ง่ายขึ้นไหม

1
เหตุใดอักขระตัวแทนที่ไม่มีเครื่องหมายในการทำงานระยะไกลจึงใช้ scp
ฉันพิมพ์สิ่งนี้ใน Bash: scp user@remote:~/dir/*.xml . และใช้งานได้รับไฟล์ทั้งหมดที่สร้างไวด์การ์ดบนเซิร์ฟเวอร์ระยะไกล แต่ทำไมถึงใช้งานได้? scpผมคิดว่าทุบตีขยายนิพจน์ตัวแทนในการขัดแย้งก่อนที่จะกลายเป็นข้อโต้แย้งที่มองเห็นเครื่องมือเช่น
24 bash  shell  wildcards 

2
Linux รู้ได้อย่างไรว่าฮาร์ดไดรฟ์ USB ตัวใดอยู่
ขณะนี้ฉันมีลินุกซ์มิ้นท์ที่ติดตั้งในเครื่องคอมพิวเตอร์ของฉันกับพาร์ทิชันฮาร์ดไดรฟ์ USB /homeติดตั้งเป็น มันทำงานได้ดี หากฉันติดตั้งฮาร์ดไดรฟ์ USB ตัวที่สองมีโอกาสใดบ้างที่ Linux จะสับสนระหว่างทั้งสองและลองติดตั้งพาร์ติชั่นฮาร์ดไดรฟ์ตัวที่สอง/homeเมื่อบูต? นั่นจะไม่ดี มาจาก Windows ฉันเห็นว่ามันเกิดขึ้นบ่อยครั้งที่ตัวอักษรไดรฟ์ไม่ "จำได้" ถูกต้องทำให้เกิดปัญหาทุกประเภท ฉันเดาว่าคำถามหลักคือ: Linux รู้ได้อย่างไรว่าฮาร์ดไดรฟ์ USB ตัวใดอยู่/dev/sdbและ/media/misha/my_2nd_driveอะไร

4
อะไรเป็นสาเหตุให้คัดลอก / วางในเทอร์มินัลเพื่อเรียกใช้คำสั่งในบางครั้ง
เมื่อคุณวางคำสั่งบางรายการในเทอร์มินัลบางครั้งมันจะดำเนินการคำสั่งโดยอัตโนมัติ (เช่นถ้ากดปุ่ม "Enter") บางครั้งก็ไม่ ฉันใช้ลีนุกซ์มาหลายปี, วางคำสั่งหลายพันคำในคอนโซลต่าง ๆ บน distros หลาย ๆ อัน, และฉันยังไม่สามารถบอกได้ว่าคำสั่งที่ฉันจะวางจะถูกดำเนินการโดยอัตโนมัติหรือไม่ อะไรเป็นสาเหตุของพฤติกรรมนี้

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