Unix & Linux

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

6
กระบวนการใดเป็น `/ proc / self /` เพื่อ?
https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s3-proc-self.html พูดว่า /proc/self/ไดเรกทอรีคือการเชื่อมโยงกับกระบวนการที่เรียกใช้อยู่ มีหลายกระบวนการที่ทำงานพร้อมกันเสมอดังนั้นกระบวนการใดที่เป็น "กระบวนการที่กำลังทำงานอยู่"? "กระบวนการที่กำลังทำงานอยู่" มีส่วนเกี่ยวข้องกับกระบวนการใดที่กำลังทำงานอยู่บน CPU ในปัจจุบันโดยพิจารณาจากการสลับบริบทหรือไม่ "กระบวนการที่กำลังทำงานอยู่" นั้นไม่มีส่วนเกี่ยวข้องกับกระบวนการพื้นหน้าและเบื้องหลังหรือไม่?
40 linux  process  proc 

2
ทำไมกระบวนการทดแทนจึงส่งผลให้ไฟล์ชื่อ / dev / fd / 63 ซึ่งเป็นไพพ์
ฉันพยายามเข้าใจไพพ์ที่มีชื่อในบริบทของตัวอย่างเฉพาะนี้ ฉันพิมพ์<(ls -l)เทอร์มินัลแล้วรับเอาต์พุตเป็น, bash: /dev/fd/63: Permission denied. ถ้าฉันพิมพ์cat <(ls -l)ฉันจะได้เห็นเนื้อหาไดเรกทอรี ถ้าฉันแทนที่catด้วยechoฉันคิดว่าฉันได้รับชื่อสถานี (หรือมันคืออะไร?) echo <(ls -l)/dev/fd/63ให้ออกเป็น นอกจากนี้ผลลัพธ์ตัวอย่างนี้ไม่ชัดเจนสำหรับฉัน ls -l <(echo "Whatever") lr-x------ 1 root root 64 Sep 17 13:18 /dev/fd/63 -> pipe:[48078752] อย่างไรก็ตามถ้าฉันให้ls -l <()มันจะแสดงเนื้อหาไดเรกทอรี เกิดอะไรขึ้นในกรณีของไปป์ที่ระบุชื่อ?

9
พาร์ติชั่น / boot มีไว้เพื่ออะไรจริงๆ?
ฉันกำลังอ่านข้อความที่ค่อนข้างเก่าบนพาร์ติชันและระบบไฟล์ของ Linux ( พระคัมภีร์ LPIC 1 Certification ) มันบอกว่า: บูตโหลดเดอร์ของ Linux บางรุ่นไม่สามารถเข้าถึงเคอร์เนลที่อยู่นอก 1024 กระบอกสูบแรกของดิสก์ ด้วยการใส่พาร์ติชั่น / boot ที่จุดเริ่มต้นของไดรฟ์คุณสามารถมั่นใจได้ว่าจะไม่มีปัญหาเมื่อเข้าถึงเคอร์เนลตอนบูท ปัญหานี้แสดงตัวเองบ่อยที่สุดในกรณีของการบูทลีนุกซ์คู่พร้อมกับระบบปฏิบัติการอื่นที่อยู่ในพาร์ติชั่นแรก. เหตุใดบูตเดอร์จึงไม่มี " การเข้าถึงเคอร์เนลนอก 1024 ถังแรกบนดิสก์ " นอกจากนี้การ " วางพาร์ทิชัน / boot ที่จุดเริ่มต้นของไดรฟ์ " หมายความว่าอย่างไร

2
เท่ากับ $ HOME เสมอหรือเปล่า
ฉันรู้ว่าอาจมีการถามก่อนหน้านี้ แต่ฉันไม่พบมันด้วย Google ป.ร. ให้ไว้ เคอร์เนล Linux ไม่มีการกำหนดค่าที่เปลี่ยนแปลง $ HOME ทุบตี จะ~ == $HOMEเป็นจริงหรือ

1
วิธีรวมการเติมข้อความอัตโนมัติ zsh สำหรับอาร์กิวเมนต์ของฟังก์ชันตัวตัดคำและคำสั่งที่มีอยู่
ฉันทำงานเป็นส่วนใหญ่ใน gvim และเทอร์มินัลจำนวนมาก เดิมทีฉันต้องการเปิดไฟล์ทั้งหมดในอินสแตนซ์กลุ่มเดียว ด้วยเหตุนี้ฉันจึงใช้นามแฝงเพื่อเปิดไฟล์จากเทอร์มินัลของฉันใน 'เซิร์ฟเวอร์ vim' ปัจจุบัน alias rv="gvim --remote-silent" แต่การเปิดไฟล์จำนวนมากจากหลายโครงการเปิดในอินสแตนซ์ vim เดียวส่งผลกระทบต่อผลผลิตของฉันดังนั้นฉันจึงอัพเกรด alias เป็นฟังก์ชัน # main function rv() { local args options server options=$(getopt -o hils:t: -l "help,info,list,set:,target:" -- "$@") if [[ $? -ne 0 ]]; then echo "Failed to parse options." return 1 fi # a little …
40 zsh  autocomplete 

9
วิธีลบไดเรกทอรีที่ไม่สามารถลบได้นี้
ฉันยกเลิกการติดตั้งไฟล์ tar ที่เสียหายและจัดการเพื่อจบลงด้วยไดเรกทอรีบางอย่างที่ฉันไม่สามารถลบได้ถ้าฉันพยายามลบมันดูเหมือนว่าหาไม่พบ แต่lsแสดงว่ามันมีอยู่ทั้งทุบตีและหลามด้วย ลักษณะการทำงานที่คล้ายกันยกเว้นขวาหลังจากที่ฉันพยายามที่จะลบมันด้วยrm -rf, lsบ่นไม่สามารถหามันแล้วมันจะแสดงรายการมัน (ดูด้านล่างหลังrm -rf) findคำสั่งแสดงไฟล์ที่เป็นปัจจุบัน แต่ยังคงฉันไม่สามารถคิดวิธีที่จะลบมัน นี่คือความพยายามของฉัน: ที่นี่คุณเห็นlsและfindเห็นด้วยเรามีไดเรกทอรี rl]$ ls mikeaâ??cnt rl]$ find -maxdepth 1 -type d -empty -print0 ./mikeaâcnt แต่ฉันไม่สามารถลบได้: rl]$ find -maxdepth 1 -type d -empty -print0 | xargs -0 rm -f -v rm: cannot remove `./mikeaâ\302\201\302\204cnt': Is a directory rl]$ ls mikeaâ??cnt …
40 files  directory  nfs  rm 

1
เกิดอะไรขึ้นกับ bzip1
bzip2 เป็นมาตรฐานอย่างแท้จริงสำหรับการบีบอัดที่ค่อนข้างแข็งแกร่งตลอดหลายปีที่ผ่านมา ฉันพิมพ์bzip2คำสั่งหลายพันครั้งแล้วซึ่งทำให้ฉันสงสัย - เกิดอะไรขึ้นกับ bzip หรือ bzip1 Google ดูเหมือนจะไม่บอกอะไรมากมายเกี่ยวกับเรื่องนี้และดูเหมือนว่าอาจเป็นบทเรียนประวัติศาสตร์ที่น่าสนใจ

8
uname จะรับข้อมูลจากที่ไหน
uname ได้รับข้อมูลจากที่ไหน ฉันคิดว่านี่เป็นสิ่งที่ควรตรงไปตรงมา น่าเสียดายที่ฉันไม่พบส่วนหัวที่มีเพียงข้อมูลนั้น สมมติว่ามีคนต้องการเปลี่ยนผลลัพธ์พื้นฐานของuname/ uname -s จากLinuxเป็นอย่างอื่น (โดยพื้นฐานแล้วคือเปลี่ยนชื่อเคอร์เนล) เขา / เธอจะทำอย่างไรในวิธีที่เหมาะสม (นั่นคือการเปลี่ยนแหล่งที่มา)
40 linux  kernel  source 

4
ฉันจะติดตั้งอุปกรณ์บล็อกจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งผ่านทางเครือข่ายเป็นอุปกรณ์บล็อกได้อย่างไร
เป็นไปได้หรือไม่ที่จะส่งออกอุปกรณ์บล็อกเช่น DVD หรือ CDROM และทำให้สามารถติดตั้งบนคอมพิวเตอร์เครื่องอื่นเป็นอุปกรณ์บล็อกได้ หมายเหตุ:ฉันไม่สนใจที่จะทำสิ่งนี้โดยใช้ NFS หรือ Samba จริง ๆ แล้วฉันต้องการให้ออปติคัลไดรฟ์ปรากฏเป็นออปติคัลไดรฟ์บนคอมพิวเตอร์ระยะไกล

3
dircolors: แก้ไขการตั้งค่าสี globaly
ฉันเข้าใจการlsใช้dircolorsเพื่อแสดงผลสี dircolorsมีฐานข้อมูลเริ่มต้นของสีที่เชื่อมโยงกับนามสกุลไฟล์ซึ่งสามารถพิมพ์ด้วยคำสั่ง dircolors --print-database จากที่ผมอ่านฐานข้อมูลทั้งระบบควรจะอยู่ในman dir_colors /etc/DIR_COLORSแต่ไฟล์นี้ไม่มีอยู่ในระบบของฉัน (Debian) ฉันจะแก้ไขการตั้งค่าสีทั่วทั้งระบบได้dircolorsอย่างไร คำสั่งdircolors --print-databaseใช้การตั้งค่าจากที่ไหนเมื่อไม่มีไฟล์อยู่ ฉันทราบว่าผู้ใช้สามารถมีไฟล์เฉพาะผู้ใช้~/.dircolorsพร้อมการตั้งค่าของเขา แต่นี่ไม่เหมาะสำหรับฉันเนื่องจากฉันต้องเปลี่ยนการตั้งค่าสำหรับทุกคน คำถามที่สองคือว่าเป็นไปได้หรือไม่ที่จะใช้สี 8 บิตสำหรับ dircolors xterm-256colorขั้วของฉันคือ
40 bash  ls  colors 

5
จะส่งการกดแป้น (F5) จากเทอร์มินัลไปยังโปรแกรม GUI ได้อย่างไร
ฉันใช้ Raspberry Pi ร่วมกับ Chromium (โหมดคีออสก์) เพื่อแสดงสถิติ พี่ไม่ได้มีแป้นพิมพ์ที่เกี่ยวโยงกันดังนั้นผมจึงสืบค้นหาวิธีการแก้ปัญหาการกดแป้นพิมพ์ส่งจากสถานีไปยังกระบวนการโครเมี่ยม (แท็บ) อินพุตปกติใช้งานได้ แต่ฉันจะส่งบางสิ่งเช่นF5(คีย์พิเศษ: การรีเฟรชเบราว์เซอร์) ผ่านทางโซลูชันนี้ได้อย่างไร # pidof chromium 20809 20790 20788 20786 20783 # echo 'some text' > /proc/20809/fd/0
40 process  x11  input 

7
ฉันจะประสบความสำเร็จในการพกพาได้ด้วย sed -i (การแก้ไขในสถานที่) ได้อย่างไร
ฉันกำลังเขียนเชลล์สคริปต์สำหรับเซิร์ฟเวอร์ของฉันซึ่งเป็นโฮสติ้งที่ใช้ร่วมกันที่ใช้ FreeBSD ฉันยังต้องการที่จะทดสอบพวกเขาในพื้นที่บนพีซีของฉันที่ใช้ Linux ดังนั้นฉันพยายามเขียนแบบพกพา แต่sedฉันไม่เห็นวิธีการทำ ส่วนหนึ่งของเว็บไซต์ของฉันใช้ไฟล์ HTML แบบคงที่ที่สร้างขึ้นและบรรทัด sed นี้แทรก DOCTYPE ที่ถูกต้องหลังจากการสร้างใหม่แต่ละครั้ง: sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html} มันทำงานร่วมกับ GNU sedบน Linux แต่ FreeBSD sedคาดว่าอาร์กิวเมนต์แรกหลังจาก-iตัวเลือกที่จะเป็นส่วนขยายสำหรับสำเนาสำรอง นี่คือลักษณะ: sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html} อย่างไรก็ตาม GNU ในทางกลับกันคาดว่าการแสดงออกที่จะปฏิบัติตามทันทีหลังจากที่sed -i(นอกจากนี้ยังต้องการการแก้ไขด้วยการจัดการบรรทัดใหม่ แต่ได้รับคำตอบแล้วในที่นี้ ) แน่นอนว่าฉันสามารถรวมการเปลี่ยนแปลงนี้ไว้ในสำเนาเซิร์ฟเวอร์ของสคริปต์ แต่นั่นอาจทำให้เกิดความยุ่งเหยิงเช่นการใช้ VCS สำหรับการกำหนดเวอร์ชัน มีวิธีในการบรรลุสิ่งนี้ด้วย sed แบบพกพาอย่างเต็มที่?

2
การลบศูนย์นำหน้าออกจากวันที่
ฉันสร้างนามแฝงของคำสั่ง date เพื่อแสดงวันที่ในรูปแบบต่อไปนี้: 2013.06.14.12.10.02 ใช้คำสั่งนี้: alias date = date +"%Y.%m.%d.%H.%M.%S" ทุกอย่างใช้งานได้ดียกเว้นฉันต้องการเอาเลขศูนย์นำออกจากผลลัพธ์ ไม่มีวิธีที่จะทำให้มันเกิดขึ้นได้โดยการเปลี่ยนรูปแบบ ฉันคิดว่ามันสามารถทำได้โดยเฉพาะท่อส่งออกไปยังคำสั่งอื่น ๆ เช่นและsedawk ระบบปฏิบัติการที่ฉันใช้คือ Ubuntu 12.04.2 LTS
40 sed  awk  date 

7
วิธีการดาวน์โหลดไฟล์โดยใช้เพียงแค่ทุบตีและไม่มีอะไรอื่น (ไม่มี curl, wget, perl ฯลฯ )
ฉันมีหัวขาดน้อยที่สุด * ซึ่งไม่มียูทิลิตี้บรรทัดคำสั่งใด ๆ สำหรับการดาวน์โหลดไฟล์ (เช่นไม่มี curl, wget เป็นต้น) ฉันทุบตีเท่านั้น ฉันจะดาวน์โหลดไฟล์ได้อย่างไร เป็นการดีที่ฉันต้องการวิธีการแก้ปัญหาที่จะทำงานในหลากหลาย * ระวัง
40 bash  command-line  web 

12
มีทางเลือกอื่น cp ที่เร็วกว่าสำหรับการคัดลอกไฟล์ขนาดใหญ่ (~ 20 GB) หรือไม่
ฉันเป็นนักศึกษาระดับบัณฑิตศึกษาและกลุ่มที่ฉันทำงานดูแลคลัสเตอร์ Linux แต่ละโหนดของคลัสเตอร์มีดิสก์ภายในเครื่องของตนเอง แต่ดิสก์ภายในเครื่องเหล่านี้มีขนาดค่อนข้างเล็กและไม่มีการสำรองข้อมูลอัตโนมัติ ดังนั้นกลุ่มเจ้าของเซิร์ฟเวอร์ไฟล์ที่มีพื้นที่เก็บข้อมูลจำนวนมาก TB ฉันเป็นสามเณร Linux ญาติดังนั้นฉันไม่แน่ใจว่าอะไรคือข้อกำหนดของ fileserver ในแง่ของความเร็วความสามารถในการเชื่อมต่อเครือข่ายและอื่น ๆ ฉันรู้จากประสบการณ์ว่าดิสก์ภายในเครื่องนั้นเร็วกว่าไฟล์เซิร์ฟเวอร์ในแง่ของ I / O อย่างมาก . ประมาณหนึ่งโหลหรือมากกว่านั้นผู้คนใช้ไฟล์เซิร์ฟเวอร์ การใช้cpเพื่อคัดลอกไฟล์ ~ 20 GB จาก fileserver ไปยังดิสก์ภายในเครื่องใช้เวลาโดยเฉลี่ยประมาณ 11.5 นาทีตามเวลาจริง (ตามtime) ฉันรู้ว่าcpการดำเนินการนี้ไม่ได้มีประสิทธิภาพมากเพราะ (1) timeบอกฉันว่าเวลาของระบบสำหรับสำเนาดังกล่าวมีเพียง ~ 45 วินาที และเนื่องจาก (2) เมื่อฉันตรวจสอบtopระหว่างการคัดลอก% CPUค่อนข้างต่ำ (โดยการตรวจสอบโดยเฉลี่ยประมาณ0-10% ) การใช้cpเพื่อคัดลอกไฟล์ ~ 20 GB เดียวกันจากโฟลเดอร์หนึ่งบนดิสก์ภายในเครื่องไปยังโฟลเดอร์อื่นในดิสก์ภายในเครื่องเดียวกันใช้เวลาน้อยลง - ในเวลาจริงประมาณ 9 นาที …
40 cp  file-copy 

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