Unix & Linux

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

1
bash line จะดำเนินการต่อหลังจาก && และ || เอกสาร?
ฉันได้เห็นโครงสร้างนี้ในสคริปต์จำนวนมากและใช้มันเอง แต่มันทำให้ฉันรำคาญใจที่ฉันไม่สามารถหามันได้ในเอกสารประกอบ ตัวอย่าง: [ -f file1 ] && [ -f file2 ] && echo "Both files exist." || echo "One or the other file doesn't exist." สิ่งนี้สามารถทำได้ด้วยแบ็กสแลชก่อนขึ้นบรรทัดใหม่ดังที่ได้กล่าวไว้ในman bash: If a \<newline> pair appears, and the backslash is not itself quoted, the \<newline> is treated as a line continuation (that is, …

8
สิ่งใดที่ทำให้ Linux ไม่ตอบสนองนานเป็นนาทีเมื่อเรียกดูบางเว็บไซต์
ฉันใช้ Linux 4.15 และสิ่งนี้เกิดขึ้นกับฉันหลายครั้งเมื่อฉันเรียกดู Google, Facebook หรือเว็บไซต์ที่ใช้ทรัพยากรมาก - ระบบปฏิบัติการทั้งหมดไม่ตอบสนองแช่แข็งและไร้ประโยชน์ สิ่งเดียวที่ฉันเห็นว่าใช้งานได้คือดิสก์ (พาร์ติชันระบบหลักที่จัดรูปแบบเป็น ext4) ซึ่งมีการใช้งานอย่างหนาแน่น (การควบคุมปริมาณ I / O) ฉันถูกบังคับให้รอประมาณหนึ่งนาทีหรือมากกว่านั้นเพื่อขจัดปมบางครั้งมันก็ไม่ตอบสนองเป็นเวลาสิบสองนาทีและด้วยเหตุนี้ฉันจึงรู้สึกหงุดหงิด ความจริงที่ว่าระบบปฏิบัติการไม่สามารถจัดการการทำงานหลายอย่างพร้อมกันได้อย่างดีมีแนวโน้มที่จะสะท้อนพฤติกรรมที่แปลกและไม่เป็นที่ยอมรับ ไม่เพียงแค่นี้เกิดขึ้นกับ Firefox แต่มีการใด ๆการประยุกต์ใช้จาวาสคริปต์ล่ามรวมถึงไมโครซอฟท์ VSCodeหรือเชิงมุม-CLI ( ng serveคำสั่ง) เช่นเดียวกับด้ายทรัพยากรหิวอื่น ๆ ของการดำเนินการ - เช่นกรณีของplantumlเมื่อมีการสร้างกราฟขนาดใหญ่มากจาก แผนภาพ UML ที่ซับซ้อนมาก วันนี้ระบบปฏิบัติการจะไม่สามารถจัดการได้อย่างสมบูรณ์หลังจากเปิดตัวซอฟต์แวร์กู้คืนข้อมูลสำหรับ HDD ภายนอก (บนพาร์ติชัน ext4) ที่เพิ่งถอดปลั๊กจากพอร์ต USB ที่ไม่ดีเพียงเล็กน้อย ฉันไม่สามารถบอกสาเหตุที่แท้จริงของพฤติกรรมรถบั๊กกี้ได้ ฉันมีแท็บจำนวนมากที่เปิดในเบราว์เซอร์และการใช้งานพาร์ติชัน 94% ตามdfผลลัพธ์: Filesystem 1K-blocks Used …
28 linux  freeze 

3
ฉันจะลบ Alias ​​ออกจาก Shell ได้อย่างถาวรได้อย่างไร
เมื่อฉันไม่ได้อยู่ใกล้กับคอมพิวเตอร์ของฉันผู้ชายบางคนได้รับมันและตั้งชื่อแทนสำหรับlsในโฟลเดอร์รากของฉัน 'yes NeverGonnaGiveYouUp'เขาตั้งค่าให้ ตอนนี้เมื่อฉันอยู่ในโฟลเดอร์รูทของฉันแล้วพิมพ์lsฉันจะได้วนวนไม่สิ้นสุดของ NeverGonnaGiveYouUp มันทำให้ฉันบ้าและไม่รู้วิธีกำจัดมัน ผมได้พยายามแล้วunaliasและunalias -aแต่ผู้ที่เพิ่งเอามันออกไปชั่วคราว เมื่อฉันปิดเชลล์และเปิดใหม่อีกครั้งมันจะกลับมา ฉันจะกำจัดอึนี้ได้อย่างไร
28 shell  terminal  alias 

2
คำสั่ง BusyBox ถูกสร้างขึ้นอย่างแท้จริงหรือไม่?
ฉันอ่านUnix Recovery Legend ที่มีชื่อเสียงและมันทำให้ฉันสงสัยว่า: หากฉันเปิดเชลล์ BusyBox และไบนารี BusyBox ถูกลบไปเองฉันจะยังสามารถใช้คำสั่งทั้งหมดที่รวมอยู่ในไบนารี BusyBox ได้หรือไม่ เห็นได้ชัดว่าผมจะไม่สามารถที่จะใช้รุ่น BB ของคำสั่งที่มาจากอีกเปลือกทำงานเช่นbashตั้งแต่ไฟล์ BusyBox ตัวเองจะไม่พร้อมใช้งานสำหรับbashการเปิดและการทำงาน แต่จากภายในอินสแตนซ์ที่กำลังทำงานของ BusyBox ดูเหมือนว่าสำหรับฉันอาจมีสองวิธีที่ BB จะเรียกใช้คำสั่ง: มันสามารถแยกและดำเนินการอินสแตนซ์ใหม่ของ BusyBox เรียกมันโดยใช้ชื่อที่เหมาะสมและอ่านไฟล์ BusyBox จากดิสก์เพื่อทำเช่นนั้น มันสามารถแยกและดำเนินการตรรกะภายในเพื่อเรียกใช้คำสั่งที่ระบุ (ตัวอย่างเช่นโดยการเรียกใช้เป็นการเรียกใช้ฟังก์ชัน) ถ้า (1) เป็นวิธีการทำงานของ BusyBox ฉันคาดหวังว่าคำสั่ง BusyBox ที่ระบุจะไม่สามารถใช้งานได้จากภายในอินสแตนซ์ที่กำลังทำงานของ BB หลังจากที่ลบไบนารี BB ถ้า (2) เป็นวิธีการทำงาน BusyBox สามารถใช้งานได้แม้กระทั่งการกู้คืนระบบที่ตัว BB เองถูกลบไป - หากยังมีอินสแตนซ์ที่ใช้งานได้ของ BusyBox ที่สามารถเข้าถึงได้ เอกสารนี้มีอยู่ทุกที่หรือไม่? …

5
คำสั่ง Unix ที่ส่งคืนรหัสส่งคืนทันทีหรือไม่
มีคำสั่ง Unix มาตรฐานที่ทำสิ่งที่คล้ายกับตัวอย่างของฉันด้านล่าง $ <cmd here> 56 $ echo Return code was $? Return code was 56 $ <cmd here>ควรเป็นสิ่งที่สามารถ fork-execed และปล่อยให้ 56 เป็นรหัสทางออกเมื่อกระบวนการออก exitและreturnเปลือก builtins ไม่เหมาะสมสำหรับสิ่งที่ฉันกำลังมองหาเพราะพวกเขามีผลต่อการกล่าวอ้างเปลือกตัวเองด้วยการออกออกมาจากมัน <some cmd>ควรเป็นสิ่งที่ฉันสามารถดำเนินการในบริบทที่ไม่ใช่เปลือก - เช่นเรียกจากสคริปต์ Python subprocessด้วย เช่น/usr/bin/falseออกจากทันทีด้วยรหัสส่งคืน 1 แต่ฉันต้องการควบคุมรหัสที่ส่งคืนนั้นอย่างแน่นอน ฉันสามารถบรรลุผลลัพธ์เดียวกันโดยเขียนสคริปต์ตัวคลุมของฉันเอง $ cat my-wrapper-script.sh # i.e., <some cmd> = ./my-wrapper-script.sh #!/usr/bin/bash exit $1 $ …


4
ขอบเขตของตัวแปรท้องถิ่นในฟังก์ชั่นเชลล์
หลังจากอ่าน24.2 ตัวแปรท้องถิ่นผมคิดว่าการประกาศตัวแปรvarด้วยคำหลักlocalนั่นหมายความว่าvarค่า 's สามารถเข้าถึงได้เฉพาะภายในบล็อกของรหัสที่คั่นด้วยวงเล็บปีกกาของฟังก์ชั่น อย่างไรก็ตามหลังจากรันตัวอย่างต่อไปนี้ฉันพบว่าvarสามารถเข้าถึงได้อ่านและเขียนจากฟังก์ชั่นที่เรียกใช้โดยบล็อกของรหัสนั้น - เช่นแม้ว่าจะvarถูกประกาศlocalไปouterFuncแล้วinnerFuncก็ยังสามารถอ่านและแก้ไขค่าได้ Run It Online #!/usr/bin/env bash function innerFunc() { var='new value' echo "innerFunc: [var:${var}]" } function outerFunc() { local var='initial value' echo "outerFunc: before innerFunc: [var:${var}]" innerFunc echo "outerFunc: after innerFunc: [var:${var}]" } echo "global: before outerFunc: [var:${var}]" outerFunc echo "global: after outerFunc: [var:${var}]" …

5
Linux แยกความแตกต่างระหว่างไฟล์จริงและไม่อยู่ (เช่น: อุปกรณ์) อย่างไร
นี่เป็นคำถามระดับต่ำและฉันเข้าใจว่าอาจไม่ใช่สถานที่ที่ดีที่สุดสำหรับการถาม แต่ดูเหมือนจะเหมาะสมกว่าเว็บไซต์ SE อื่น ๆ ดังนั้นที่นี่จะไป ฉันรู้ว่าบนระบบไฟล์ Linux บางไฟล์มีอยู่จริงตัวอย่างเช่น: /usr/bin/bashเป็นไฟล์ที่มีอยู่จริง อย่างไรก็ตาม (เท่าที่ผมเข้าใจมัน) บางคนก็ไม่ได้มีอยู่จริงเช่นนี้และมีมากขึ้นเสมือนไฟล์เช่น: /dev/sda, /proc/cpuinfoฯลฯ คำถามของฉัน (พวกเขาเป็นสอง แต่เกี่ยวข้องอย่างใกล้ชิดเกินไปที่จะเป็นคำถามที่แยกต่างหาก): เคอร์เนลของ Linux ทำงานอย่างไรว่าไฟล์เหล่านี้เป็นของจริง (และอ่านจากดิสก์) หรือไม่เมื่อมีการใช้คำสั่ง read (หรือเช่นนั้น)? หากไฟล์ไม่จริง: เป็นตัวอย่างที่อ่านจาก/dev/randomจะกลับข้อมูลแบบสุ่มและอ่านจากจะกลับมา/dev/null EOFมันทำงานอย่างไรข้อมูลที่จะอ่านจากไฟล์เสมือนนี้ (และดังนั้นสิ่งที่จะทำเมื่อ / ถ้าข้อมูลที่เขียนไปยังไฟล์เสมือนด้วย) - มีแผนที่บางชนิดที่มีพอยน์เตอร์เพื่อแยกคำสั่งอ่าน / เขียนที่เหมาะสมสำหรับแต่ละไฟล์ หรือแม้แต่สำหรับไดเรกทอรีเสมือนเอง ดังนั้นรายการสำหรับก็สามารถกลับ/dev/nullEOF

3
'exec {fd} </ dev / watchdog' ทำอะไรใน Bash
นั่นคือตัวอักษร{fd}ไม่ใช่ตัวยึดตำแหน่ง ฉันมีสคริปต์ที่ทำสิ่งนี้และไม่ได้แหล่งข้อมูลใด ๆ และไม่มีการอ้างอิง {fd} ที่อื่น ทุบตีนี้ถูกต้องหรือไม่ exec {fd}&lt;/dev/watchdog

2
ฉันจะบังคับให้ผู้ใช้เปลี่ยนรหัสผ่านในการเข้าสู่ระบบครั้งแรกโดยใช้ ssh ได้อย่างไร
ฉันพยายามบังคับให้ผู้ใช้ที่เพิ่งสร้างใหม่เปลี่ยนรหัสผ่านในการเข้าสู่ระบบครั้งแรกโดยใช้ ssh เพื่อเหตุผลด้านความปลอดภัยฉันต้องการให้รหัสผ่านที่ปลอดภัยแก่เขาจนกว่าเขาจะลงชื่อเข้าใช้เป็นครั้งแรก ฉันทำสิ่งต่อไปนี้: useradd -s /bin/bash -m -d /home/foo foo passwd foo การทำchage -d 0 fooเพียงให้ฉันข้อผิดพลาดYour account has expired; please contact your system administratorในการเข้าสู่ระบบ ssh
28 linux  bash  ssh  login  pam 


4
จะขยายพาร์ติชั่นระบบไฟล์บน Ubuntu VM ได้อย่างไร?
ฉันใช้ Ubuntu Desktop 14.04 เป็น VM บนเครื่อง mac ด้วย vmware fusion ฉันได้รับปัญหาการเตือนเรื่องอวกาศและตอนนี้ต้องการขยายจาก 20GB เป็น 200GB ฉันปิด VM และที่ด้าน vmware เพิ่มพื้นที่ดิสก์ที่จัดสรร: ปิด VM VMWare Fusion -&gt; เครื่องเสมือน -&gt; การตั้งค่า -&gt; ฮาร์ดดิสก์ (SCSI) จากนั้นเตือนฉันว่าฉันควรเพิ่มขนาดพาร์ติชันภายในแขก VM ซึ่งโชคร้ายเพราะฉันหวังว่ามันจะเป็นแบบอัตโนมัติ ดูที่เครื่องมือวิเคราะห์การใช้ดิสก์ภายในอูบุนตูปัจจุบันเห็นเฉพาะ 20 GB ดั้งเดิมเท่านั้น ฉันจะเพิ่มสิ่งนี้เป็น 200 GB ที่ฉันจัดสรรไว้ได้อย่างไร ฉันกำลังมองหาทิศทางที่ดีกว่าสิ่งที่ถูกโพสต์ที่นี่ จากDisksแอพฉันเห็น:

5
การทำให้ Linux อ่านสลับกลับเข้าไปในหน่วยความจำ
เคอร์เนล Linux สลับหน้าส่วนใหญ่ออกจากหน่วยความจำเมื่อฉันเรียกใช้แอปพลิเคชันที่ใช้หน่วยความจำกายภาพ 16GB ส่วนใหญ่ หลังจากที่แอปพลิเคชันเสร็จสิ้นทุกการกระทำ (การพิมพ์คำสั่งการสลับพื้นที่ทำงานการเปิดหน้าเว็บใหม่ ฯลฯ ) ใช้เวลานานมากในการทำให้เสร็จสมบูรณ์ มีวิธีบอกเคอร์เนล Linux ให้คัดลอกหน้าจากสลับกลับไปยังหน่วยความจำกายภาพโดยไม่ต้องสัมผัส (และรอ) แต่ละแอปพลิเคชันด้วยตนเองหรือไม่? ฉันใช้งานแอปพลิเคชั่นจำนวนมากดังนั้นการรอคอยจึงเจ็บปวดเสมอ ฉันมักจะใช้swapoff -a &amp;&amp; swapon -aเพื่อทำให้ระบบตอบสนองได้อีกครั้ง แต่จะเป็นการลบหน้าที่ไม่ต้องการสลับดังนั้นพวกเขาจึงต้องเขียนอีกครั้งในครั้งต่อไปที่ฉันเรียกใช้สคริปต์ มีอินเตอร์เฟสของเคอร์เนลหรืออาจใช้ sysfs เพื่อสั่งให้เคอร์เนลอ่านหน้าทั้งหมดจากการสลับ? แก้ไข: ฉันกำลังมองหาวิธีที่จะทำให้การแลกเปลี่ยน swapcached ทั้งหมด (ขอบคุณ Derobert!) [PS serverfault.com/questions/153946/…และserverfault.com/questions/100448/…เป็นหัวข้อที่เกี่ยวข้อง แต่ไม่ได้ตอบคำถามว่าจะให้เคอร์เนล Linux คัดลอกหน้าจาก swap กลับไปยังหน่วยความจำได้อย่างไรโดยไม่ต้องสลับ swap]
28 linux  kernel  memory  swap  sysfs 

2
การย้ายไฟล์ที่ถูกผนวกเข้านั้นปลอดภัยหรือไม่?
ฉันมีกระบวนการ Node.js ที่ใช้ในการเพิ่มสายที่จะfs.appendFile file.logเฉพาะสายที่สมบูรณ์ประมาณ 40 ตัวอักษรต่อบรรทัดถูกผนวกสายเช่นเป็นเหมือนfs.appendFile("start-end")ไม่เหมือน 2 สายและfs.appendFile("start-") fs.appendFile("end")หากฉันย้ายไฟล์นี้ไปfile2.logฉันจะแน่ใจได้หรือไม่ว่าไม่มีเส้นใดที่สูญหายหรือคัดลอกบางส่วน?

6
วิธีที่ดีที่สุดในการเพิ่มพื้นที่ว่างในดิสก์จากไฟล์ที่ถูกลบซึ่งเปิดค้างไว้
สวัสดีฉันมีหลายไฟล์ที่ถูกลบ แต่ด้วยเหตุผลบางประการพื้นที่ดิสก์ที่เกี่ยวข้องกับไฟล์ที่ถูกลบไม่สามารถใช้งานได้จนกว่าฉันจะฆ่ากระบวนการสำหรับไฟล์ที่สละพื้นที่ดิสก์อย่างชัดเจน $ lsof /tmp/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME cron 1623 root 5u REG 0,21 0 395919638 /tmp/tmpfPagTZ4 (deleted) พื้นที่ดิสก์ที่ถ่ายโดยไฟล์ที่ถูกลบด้านบนทำให้เกิดปัญหาเช่นเมื่อพยายามใช้ปุ่มแท็บเพื่อเติมข้อความในเส้นทางของไฟล์โดยอัตโนมัติฉันได้รับข้อผิดพลาด bash: cannot create temp file for here-document: No space left on device แต่หลังจากฉันเรียกใช้kill -9 1623พื้นที่สำหรับ PID นั้นได้รับการปลดปล่อยและฉันไม่ได้รับข้อผิดพลาดอีกต่อไป คำถามของฉันคือ: เหตุใดพื้นที่นี้จึงไม่ว่างทันทีเมื่อลบไฟล์ครั้งแรก วิธีที่ดีที่สุดในการเรียกคืนพื้นที่ไฟล์ที่เกี่ยวข้องกับไฟล์ที่ถูกลบคืออะไร? และโปรดแจ้งให้เราทราบคำศัพท์ที่ไม่ถูกต้องที่ฉันใช้หรือข้อมูลอื่น ๆ ที่เกี่ยวข้องและเกี่ยวข้องกับสถานการณ์นี้

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