Unix & Linux

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

1
อะไรจะทำให้เสียงเรียกเข้าไม่เก็บประวัติคำสั่ง?
ในการ distros อื่น ๆ ที่ฉันได้เรียกใช้เป็นกลุ่มจำประวัติคำสั่งของคุณแม้ระหว่างเซสชัน สิ่งนี้มีประโยชน์โดยเฉพาะอย่างยิ่งเมื่อทำการดำเนินการที่คล้ายกันมากในไฟล์ที่แตกต่างกัน ด้วยเหตุผลบางอย่างมันล้างออกใน Ubuntu 12.04 และฉันไม่สามารถหาสาเหตุได้ นี่คือ:setข้อมูลของฉัน: :set --- Options --- background=dark helplang=en history=1000 nomodeline scroll=27 showmatch ttyfast expandtab hidden incsearch ruler showcmd softtabstop=4 ttymouse=xterm2 backspace=indent,eol,start fileencoding=utf-8 fileencodings=ucs-bom,utf-8,default,latin1 printoptions=paper:letter runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim73,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc

5
วิธีการติดตามโปรแกรมจาวา?
ในฐานะผู้ดูแลระบบฉันบางครั้งต้องเผชิญกับสถานการณ์ที่โปรแกรมทำงานผิดปกติในขณะที่ไม่ได้สร้างข้อผิดพลาดหรือสร้างข้อความแสดงข้อผิดพลาดที่ไร้สาระ ในอดีต - ก่อนที่จาวาจะเข้ามา - มีสองมาตรการต่อต้าน: หากไม่มีสิ่งใดช่วย - RTFM ;-) ถ้า 1. ไม่ช่วย - ติดตามการเรียกของระบบและดูว่าเกิดอะไรขึ้น ฉันมักจะใช้strace -fสำหรับงานนี้กับ Linux (ระบบปฏิบัติการอื่นมีเครื่องมือติดตามที่คล้ายกัน) ตอนนี้ในขณะนี้มักจะทำงานได้ดีสำหรับโปรแกรมที่ล้าสมัยการติดตามจะเลือนมากเมื่อทำแบบเดียวกันบนjava -process มีการเรียกระบบจำนวนมากดูเหมือนไม่เกี่ยวข้องกับการกระทำจริงใด ๆ ที่มันเป็นเรื่องยากที่จะค้นหาผ่านการถ่ายโอนข้อมูลดังกล่าว มีวิธีที่ดีกว่าในการทำเช่นนั้น (หากซอร์สโค้ดไม่สามารถใช้ได้)?
25 linux  java  trace 

3
ทำความเข้าใจเกี่ยวกับการเข้ารหัสชื่อไฟล์ Unix
ฉันมีความเข้าใจยากว่าการเข้ารหัสชื่อไฟล์ทำงานอย่างไร ในยูนิกซ์ฉันพบคำอธิบายที่ขัดแย้ง ชื่อไฟล์จะถูกเก็บไว้เป็นตัวละคร เพื่ออ้างอิงคำตอบอื่น: คำถามหลายข้อเกี่ยวกับการเข้ารหัสอักขระระบบไฟล์บน linux […] ดังที่คุณพูดถึงคำถามของคุณชื่อไฟล์ UNIX เป็นเพียงลำดับของอักขระ เคอร์เนลไม่รู้อะไรเกี่ยวกับการเข้ารหัสซึ่งเป็นแนวคิดของพื้นที่ผู้ใช้ (เช่นระดับแอปพลิเคชัน) หากชื่อไฟล์ถูกจัดเก็บเป็นตัวอักษรจะต้องมีการเข้ารหัสบางอย่างเนื่องจากในที่สุดชื่อไฟล์จะต้องลงท้ายด้วยลำดับบิตหรือไบต์บนดิสก์ หากผู้ใช้สามารถเลือกการเข้ารหัสใด ๆเพื่อแมปอักขระกับลำดับไบต์ที่ป้อนไปยังเคอร์เนลเป็นไปได้ที่จะสร้างลำดับไบต์ใด ๆสำหรับชื่อไฟล์ที่ถูกต้อง สมมติว่าต่อไปนี้: ผู้ใช้ใช้การเข้ารหัสแบบสุ่มXซึ่งแปลไฟล์fooเป็นลำดับไบต์αและบันทึกลงดิสก์ อีกประการหนึ่งการใช้งานของผู้ใช้การเข้ารหัสY ในการเข้ารหัสนี้αแปลเป็น/ซึ่งไม่อนุญาตให้ใช้เป็นชื่อไฟล์ อย่างไรก็ตามสำหรับผู้ใช้คนแรกไฟล์นั้นถูกต้อง ฉันคิดว่าสถานการณ์นี้ไม่สามารถเกิดขึ้นได้ ชื่อไฟล์จะถูกจัดเก็บเป็นไบนารี blobs เพื่ออ้างอิงคำตอบอื่น: การ เข้ารหัสชุดอักขระใดที่ใช้สำหรับชื่อไฟล์และเส้นทางบน Linux ดังที่ผู้อื่นระบุไว้ไม่มีคำตอบสำหรับเรื่องนี้จริงๆ: ชื่อไฟล์และเส้นทางไม่มีการเข้ารหัส ระบบปฏิบัติการเกี่ยวข้องเฉพาะกับลำดับของไบต์เท่านั้น แอปพลิเคชั่นส่วนบุคคลอาจเลือกที่จะตีความว่าเป็นการเข้ารหัสในบางวิธี แต่สิ่งนี้แตกต่างกันไป หากระบบไม่จัดการกับตัวละครห้ามมีการห้ามเฉพาะอักขระ (เช่น/หรือNULL) ในชื่อไฟล์ได้อย่างไร ไม่มีแนวคิดเกี่ยวกับ/ การเข้ารหัส คำอธิบายจะเป็นระบบไฟล์ที่สามารถจัดเก็บชื่อไฟล์ที่มี ตัวอักษรใด ๆและเป็นเพียงโปรแกรมผู้ใช้ที่ใช้การเข้ารหัสเข้าบัญชีที่จะทำให้หายใจไม่ออกในชื่อไฟล์ที่มีอักขระที่ไม่ถูกต้อง ซึ่งในที่สุดก็หมายถึงว่าระบบไฟล์และเคอร์เนลกระป๋องไม่มีปัญหาใด ๆ /ชื่อจับไฟล์ที่มี ฉันก็คิดว่านี่เป็นสิ่งที่ผิด การเข้ารหัสเกิดขึ้นที่ใดและข้อ จำกัด ถูกวางที่ใดที่ไม่อนุญาตให้ใช้อักขระเฉพาะ

2
ตำแหน่งที่แนะนำของแอพพลิเคชั่น node.js ในระบบไฟล์ linux?
ตำแหน่งที่ยอมรับตามอัตภาพของ node.js / express web apps ในระบบไฟล์ linux คืออะไร? ขณะนี้ฉันมีไดเรกทอรีย่อยอยู่/opt/แต่ฉันต้องการฟังความคิดเห็นของผู้อื่นในเรื่องนี้ ...

5
เหตุใดอักขระบางตัวจึงแสดงเป็นสี่เหลี่ยมใน Chrome
ตัวอย่างเช่นในเครื่องมือ dev ฉันได้รับสิ่งที่ชอบ: บางส่วนของสี่เหลี่ยมจัตุรัสเหล่านี้อยู่ที่ท้ายบรรทัดในตอนแรกฉันคิดว่ามันเป็นรถที่ส่งคืน แต่มันกลับกลายเป็นว่าพวกเขาไม่ได้ นอกจากนี้สี่เหลี่ยมจะปรากฏหลัง=หรือ>ในหลาย ๆ ที่ที่ไม่มีการขึ้นบรรทัดใหม่และการดูไฟล์ในโปรแกรมแก้ไขเลขฐานสิบหกแสดงให้เห็นว่าไม่มีอักขระใด ๆ ระหว่าง=และ"(เช่นid="แสดงเป็นid=? ") นอกจากนี้ยังปรากฏขึ้นเป็นครั้งคราวในหน้าเว็บเช่นฉันเห็น: ผมคัดลอกประโยคที่มองมันในตัวแก้ไขฐานสิบหกและอีกครั้งมีเป็นตัวละครที่ไม่มีระหว่างและe :ไม่มีอะไรปรากฏขึ้นในซอร์สโค้ดเช่นกัน ฉันไม่เคยเห็นสิ่งนี้มาก่อนและมันเป็นเพียงตั้งแต่ฉันติดตั้ง arch อีกครั้งเมื่อไม่กี่วันที่ผ่านมา Chrome เป็น: รุ่น19.0.1084.15 dev Arch คือเคอร์เนล3.3.1-1-ARCH,x86_64 locale.genมีโลen_GBแคลที่ไม่ใส่เครื่องหมายข้อคิดเห็น (ทั้งUTF-8และISO-8859-1) การเข้ารหัสใน Chrome จะใช้ค่าเริ่มต้นเป็นISO-8859-1แต่จะเปลี่ยนเป็นUTF-8ไม่มีความแตกต่าง นี่คือไฟล์ html ที่ฉันใช้: test.html การแก้ไขจะดีมากคำอธิบายจะดีมากยืนยันว่านี่เป็น (หรือไม่ใช่) เพียงแค่ปัญหาเกี่ยวกับการตั้งค่าของฉันก็จะดีเช่นกัน แก้ไข: หลังจากตรวจสอบแบบอักษรฉันพบว่าในทั้งสองกรณีพยายามใช้ arial ซึ่งใน arch เป็นส่วนหนึ่งของttf-ms-fontsแพ็คเกจ การติดตั้งที่ทำให้ตัวอักษรเปลี่ยน แต่สี่เหลี่ยมยังคงอยู่ (แม้ว่าจะมีรูปร่างที่แตกต่างกัน) ในทั้งสองกรณีแบบอักษรนั้นไม่เป็นไปตามแบบอักษรเริ่มต้นสำหรับระบบ

4
การพิมพ์ข้อความสีโดยใช้เสียงสะท้อน
ฉันรู้ว่าสำหรับการพิมพ์ข้อความสีโดยใช้ echo เช่นสีแดงรหัสคือ: echo -e "\e[1;31m This is red text \e[0m" และฉันรู้ว่าในตัวอย่างนี้ 31 คือรหัสของสีแดงและจำนวนสีอื่น ๆ คือ: Black 0;30 Dark Gray 1;30 Blue 0;34 Light Blue 1;34 Green 0;32 Light Green 1;32 Cyan 0;36 Light Cyan 1;36 Red 0;31 Light Red 1;31 Purple 0;35 Light Purple 1;35 Brown 0;33 Yellow 1;33 …

2
กำลังลบช่องว่างแท็บบรรทัดใหม่ ฯลฯ ออกจากตัวแปรหรือไม่
นี่เป็นข้อผิดพลาดที่ฉันได้รับและมันล้มเหลวเนื่องจากตัวแปรที่มีค่าควรจะเป็น 2 (ฉันได้รับสิ่งนี้โดยใช้กselect * from tabel) ฉันได้รับช่องว่างในตัวแปรนั้น + 0 != 2 ./setjobs[19]: 0: not found. ฉันจะลบช่องว่างเหล่านั้นทั้งหมดหรือขึ้นบรรทัดใหม่ออกจากตัวแปรนั้นได้อย่างไร Can tr, sedหรืออะไรความช่วยเหลือ? นี่คือสิ่งที่ฉันทำ: set_jobs_count=$(echo "set heading off; select count(*) from oppar_db where ( oppar_db_job_name, oppar_db_job_rec ) in ($var) ;" | \ sqlplus -s ${OP_ORA_USER}/${OP_ORA_PASS}@$OPERATIONAL_DB_NAME) ใช้งานได้ตามที่แนะนำ: | sed 's/[[:space:]]//g' แต่ฉันยังคงได้รับค่าเช่น: set_jobs_count= 2
25 shell  sed  tr  whitespace  newlines 

4
การเชื่อมต่อระหว่างไดเร็กทอรี“ /etc/init.d” และ“ /etc/rcX.d” ใน Linux คืออะไร
ฉันกำลังเรียนรู้บรรทัดคำสั่งจากหนังสือที่ชื่อว่า " Linux Command Line และ Shell Scripting Bible, Second Edition " หนังสือเล่มนี้ระบุว่า: การใช้งานลินุกซ์บางตัวจะมีตารางของกระบวนการที่จะเริ่มต้นโดยอัตโนมัติเมื่อบูต บนระบบ Linux ตารางนี้มักจะอยู่ในไฟล์พิเศษ / etc / inittabs ระบบอื่น ๆ (เช่นการกระจาย Ubuntu Linux ยอดนิยม) ใช้โฟลเดอร์ /etc/init.d ซึ่งมีสคริปต์สำหรับการเริ่มต้นและหยุดแอปพลิเคชันแต่ละรายการในเวลาบูต สคริปต์เริ่มทำงานผ่านรายการภายใต้โฟลเดอร์ /etc/rcX.d โดยที่ X คือระดับการรัน อาจเป็นเพราะฉันใหม่สำหรับ linux ฉันไม่เข้าใจความหมายของย่อหน้าที่สองที่ยกมา บางคนสามารถอธิบายสิ่งเดียวกันด้วยภาษาที่ชัดเจนกว่าได้หรือไม่?

4
fd เดียวกันในกระบวนการต่าง ๆ สามารถชี้ไปที่ไฟล์เดียวกันได้อย่างไร?
ว่าฉันมีขั้นตอนที่ 1และขั้นตอนที่ 2 ทั้งสองมีตัวอธิบายไฟล์ที่สอดคล้องกับจำนวนเต็ม 4 ในแต่ละกระบวนการอย่างไรก็ตามไฟล์ descriptor 4 ชี้ไปที่ไฟล์ต่างกันโดยสิ้นเชิงใน Open File Table ของเคอร์เนล: เป็นไปได้อย่างไร? ไฟล์ descriptor ไม่ควรเป็นดัชนีไปยังระเบียนใน Open File Table หรือไม่

1
แผนผังแหล่งที่มาของเคอร์เนลประกอบด้วยอะไร? สิ่งนี้เกี่ยวข้องกับส่วนหัวเคอร์เนลของ Linux หรือไม่
ในหนังสือที่ผมมักจะอ่านอ้างอิงถึงแหล่งที่มาของลินุกซ์ที่ต้นไม้/usr/src/linuxกับชุดปกติของไดเรกทอรีย่อย ( arch, block, crypto, ... ) ฉันคาดหวังว่าต้นไม้ต้นนี้จะมีไฟล์ไบนารีที่สร้างเคอร์เนล ในระบบของฉัน (Ubuntu 10.04) ... สำหรับเมล็ดที่แตกต่างกันที่ฉันมี (โดยใช้การดาวน์โหลดซอฟต์แวร์อัตโนมัติไม่ได้ติดตั้งด้วยตนเอง) ฉันค้นหาในตำแหน่งนี้แทนสองไดเรกทอรีย่อยสำหรับแต่ละเคอร์เนลดังนี้ /usr/src/linux-headers-2.6.32-22 /usr/src/linux-headers-2.6.32-22-generic ในไดเรกทอรีย่อยฉันคาดว่าไฟล์ไบนารีหมู่คนอื่น ๆ อย่างไรก็ตามฉันตรวจสอบจำนวนต้นไม้ที่เหมาะสมและไดเรกทอรีย่อยสุดท้ายจากที่นี่ดูเหมือนจะมีเสมอMakefile(เมื่ออ่านมันมักจะฟังดูเหมือนไฟล์กำหนดค่าแล้วเป็นไฟล์ติดตั้ง) รวมถึงไฟล์อื่น ๆ ที่แยกบางครั้ง (ส่วนใหญ่Kconfig) คำถามของฉันอาจไร้เดียงสา แต่ฉันสับสนเล็กน้อย คือ (2) สิ่งที่ฉันควรคาดหวังให้เห็นในแผนผังแหล่งที่มาของเคอร์เนล และทำไมฉันจึงมีการอ้างอิงที่ชัดเจนถึง 'ส่วนหัว' ฉันจำเป็นต้องติดตั้งlinux-generic-headersในขณะที่กลับไปหาซอฟต์แวร์อื่นและไม่แน่ใจว่าสิ่งนี้อาจเกี่ยวข้อง ฉันรู้ว่ามีเหตุผลที่ดีสำหรับ makefiles (เช่นการติดตั้งโมดูลในไดเร็กตอรี่ย่อย / ไดร์เวอร์), แต่ (มาก) makefiles เท่านั้น?
25 ubuntu  kernel  source 

2
เหตุการณ์เมาส์ทำงานใน linux อย่างไร
นี่เป็นเรื่องที่แปลกประหลาดส่วนใหญ่ฉันพยายามเข้าใจว่าการจัดการเหตุการณ์ทำงานในระดับต่ำดังนั้นโปรดอย่าอ้างอิงฉันกับซอฟต์แวร์ที่จะทำเพื่อฉัน ถ้าเช่นฉันต้องการเขียนโปรแกรมใน C / C ++ ที่ตอบสนองต่อการคลิกเมาส์ฉันคิดว่าฉันต้องใช้การเรียกของระบบเพื่อขอฟังก์ชั่นบางอย่างกับเคอร์เนลหรือบางทีคุณอาจต้องตรวจสอบสถานะของเมาส์อย่างต่อเนื่อง ฉันไม่รู้ ฉันคิดว่าเป็นไปได้เนื่องจากทุกอย่างเป็นไปได้ใน C / C ++ อยู่ในระดับต่ำมากฉันส่วนใหญ่สนใจในการทำงานแม้ว่าฉันอาจจะไม่ต้องใช้ตัวเอง คำถามคือมันทำงานอย่างไรใน linux, มีการเรียกระบบ, ไลบรารี c, หรือไม่?
25 linux  devices  input 

2
เหตุใดการเรียงลำดับของ ls จึงไม่สนใจอักขระที่ไม่ใช่ตัวอักษรและตัวเลข
เมื่อเรียงลำดับชื่อไฟล์ละเว้นตัวอักษรเช่นls -,_ฉันคาดว่าจะใช้ตัวละครเหล่านั้นในการจัดเรียงเช่นกัน ตัวอย่าง: touch a1 a2 a-1 a-2 a_1 a_2 a.1 a.2 a,1 a,2 ตอนนี้แสดงไฟล์เหล่านี้ด้วยls -1: a1 a_1 a-1 a,1 a.1 a2 a_2 a-2 a,2 a.2 สิ่งที่ฉันคาดหวังคืออะไรเช่นนี้: a1 a2 a,1 a,2 a.1 a.2 a_1 a_2 a-1 a-2 นั่นคือฉันคาดหวังว่าจะต้องคำนึงถึงอักขระที่ไม่ใช่ตัวอักษรและตัวเลขเมื่อเรียง มีใครอธิบายพฤติกรรมนี้ได้บ้าง พฤติกรรมนี้ได้รับคำสั่งจากมาตรฐานหรือไม่? หรือนี่เป็นเพราะการเข้ารหัสเป็น UTF-8 อัปเดต:ดูเหมือนว่าสิ่งนี้เกี่ยวข้องกับการเรียงลำดับ UTF-8: $ LC_COLLATE=C ls -1 a,1 a,2 …
25 ls  sort 

3
ติดตามท่อโดยใช้น้อยลงหรือไม่
สามารถติดตามน้อยลง (โดยกด F) อินพุต piped (คล้ายกับไฟล์) ได้หรือไม่? สำหรับไฟล์ที่กำลังถูกเขียนไปยังคำสั่ง less <file> จะติดตามไฟล์เมื่อกด F แต่ถ้าฉันมีคำสั่งที่ไพพ์เอาต์พุตโดยตรงให้น้อยลงเช่นนี้ command | less การกด F จะไม่ทำอะไรเลย ดังนั้นดูเหมือนว่าไม่สามารถติดตามท่อเหมือนไฟล์ได้หรือไม่ หรือบางทีมันอาจจะเกี่ยวข้องกับคำสั่งที่เขียนถึง STDERR ด้วย เอฟเฟกต์ที่ฉันพยายามจะบรรลุนั้นจะเห็นผลลัพธ์ล่าสุดของคำสั่งเช่นเดียวกับที่กด PageDown ค้างไว้! คำพูดที่เกี่ยวข้องมีไว้สำหรับ G (ไปที่จุดสิ้นสุด): เมื่อการไพพ์โดยตรงไปที่น้อยกว่ามันจะไม่ทำงาน
25 pipe  less  tail 

2
Grep alias - หมายเลขบรรทัดยกเว้นว่าอยู่ในขั้นตอน
ฉันต้องการสร้างนามแฝงทุบตีสำหรับ grep ที่เพิ่มหมายเลขบรรทัด: alias grep='grep -n' แต่แน่นอนว่าจะเพิ่มหมายเลขบรรทัดในท่อเช่นกัน เวลาส่วนใหญ่ (และไม่มีข้อยกเว้นอยู่ในใจ) ฉันไม่ต้องการหมายเลขบรรทัดภายในไพพ์ไลน์ (อย่างน้อยก็ภายในก็น่าจะดีถ้ามันยังอยู่) และฉันไม่ต้องการเพิ่มเซด / awk / ตัดเข้าไป ไปป์ไลน์เพื่อนำออกไป บางทีความต้องการของฉันอาจจะง่ายขึ้น "เพียงเพิ่มหมายเลขบรรทัดหาก grep เป็นคำสั่งเดียวในบรรทัด" มีวิธีการทำเช่นนี้โดยไม่ต้องนามแฝงที่น่าเกลียดโดยเฉพาะอย่างยิ่ง?

2
วิธีการแปลง VMDK เป็น VDI / VHD
มีคำกล่าวว่าVBoxManage modifyhd --resizeคำสั่งVirtualBox สามารถใช้ได้กับไฟล์ VDI หรือ VHD เท่านั้น น่าเศร้าที่ฉันมีอิมเมจ VirtualBox ที่อยู่ในรูปแบบ VMDK และฉันไม่รู้ว่าจะแปลงเป็นรูปแบบสองรูปแบบเหล่านั้นได้อย่างไร
25 virtualbox 

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