Unix & Linux

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

1
เปรียบเทียบไฟล์สองไฟล์แบบบรรทัดต่อบรรทัดอย่างเคร่งครัดโดยไม่มีการแทรกหรือลบ
ฉันมีสองไฟล์ที่มีหน่วยความจำทิ้งในรูปแบบฐานสิบหก ในขณะนี้ฉันใช้ diff เพื่อดูว่าไฟล์ต่างกันหรือไม่ อย่างไรก็ตามสิ่งนี้อาจทำให้เข้าใจผิดเมื่อพยายามระบุตำแหน่งที่แน่นอน (เช่นที่อยู่หน่วยความจำ) ของความแตกต่าง ลองพิจารณาตัวอย่างต่อไปนี้ซึ่งแสดงไฟล์สองไฟล์แบบเคียงข้างกัน file1: file2: 0001 | 0001 ABCD | FFFF 1234 | ABCD FFFF | 1234 ตอนนี้diff -uจะแสดงการแทรกและการลบเพียงครั้งเดียวถึงแม้ว่า 3 บรรทัด (ตำแหน่งหน่วยความจำ) มีการเปลี่ยนแปลงระหว่างสองไฟล์: 0001 +FFFF ABCD 1234 -FFFF มีวิธีง่าย ๆ ในการเปรียบเทียบสองไฟล์เช่นว่าแต่ละบรรทัดจะถูกเปรียบเทียบกับบรรทัดเดียวกันเท่านั้น (ในแง่ของหมายเลขบรรทัด) ในไฟล์อื่น ๆ ? ดังนั้นในตัวอย่างนี้มันควรจะรายงานว่าช่วง 3 สายที่มีการเปลี่ยนแปลงพร้อมกับสายการเปลี่ยนแปลงจากและfile1 file2ผลผลิต doen't จะต้องมีความแตกต่างสไตล์ แต่มันจะเย็นถ้ามันอาจจะมีสี (สีสักครู่ผมที่diff -uส่งออกใช้sedเพื่อให้ได้อย่างง่ายดายสามารถนำไปปรับใช้)

5
ฉันจะลบสิทธิพิเศษรูทในเชลล์สคริปต์ได้อย่างไร
ตัวเลือก "--up" ใน OpenVPN โดยปกติจะใช้สำหรับการเราต์เป็นต้นดังนั้นมันจะถูกประมวลผลก่อนที่ OpenVPN จะลดระดับสิทธิ์การใช้งานของรูทเพื่อไม่ให้มีใครทำงาน อย่างไรก็ตามฉันกำลังเรียกใช้เชลล์สคริปต์ที่จำเป็นต้องเรียกใช้ในฐานะผู้ใช้ที่ไม่มีสิทธิพิเศษ ฉันจะทำอย่างไร ฉันได้ศึกษาสิทธิ์ของ Drop Processโดยเฉพาะคำตอบของพหุนามและ tylerl แต่ฉันไม่เข้าใจวิธีการใช้ ฉันทำงานใน Centos 6.5 และ suid ถูกบล็อกทั้งสองเป็น "chmod u + s" และเป็น "setuid ()" มีปลั๊กอิน OpenVPN ("openvpn-down-root.so") ซึ่งเปิดใช้งานสคริปต์ที่เรียกใช้โดยตัวเลือก "--down" เพื่อเรียกใช้เป็นรูท อาจมีสิ่งที่เทียบเท่าเช่น "openvpn-up-user.so" แต่ฉันไม่พบมัน Edit0 คำตอบต่อ Nikola Kotur ผมได้ติดตั้งเอียนเมเยอร์ runit แม้ว่าคำสั่ง chpst จะทำงานในเทอร์มินัล แต่ในสคริปต์ up มันล้มเหลวด้วย "ไม่พบคำสั่ง" สิ่งที่ใช้ได้คือ …

3
จำนวนการเชื่อมต่อ SSH บนเครื่องลินุกซ์เครื่องเดียว
ฉันเข้าสู่สถานการณ์ที่ต้องเข้าถึงเครื่องลีนุกซ์ผ่านทาง puTTY ฉันพยายาม SSH หลายครั้ง แต่ไม่สามารถเชื่อมต่อกับเครื่องได้ จากนั้นฉันก็รู้ว่าเพื่อนร่วมงานของฉันกำลังเข้าถึงเครื่อง Linux เดียวกันกับผู้ใช้รูทและฉันก็ต้องการที่จะเข้าถึงในฐานะผู้ใช้รูทฉันขอให้เขาออกจากระบบเพื่อให้ฉันสามารถเข้าสู่ระบบในฐานะรูทได้ มีวิธีที่เรา จำกัด จำนวนการเข้าสู่ระบบ SSH บน linux OS หรือไม่? นี่เป็นคุณลักษณะด้านความปลอดภัยบางอย่างที่แยกความแตกต่างของระบบปฏิบัติการที่ใช้ windows กับระบบปฏิบัติการที่ใช้ระบบปฏิบัติการ Linux
14 ssh  limit 

5
คัดลอกข้อความบรรทัดเดียวแบบยาวจากเทอร์มินัลด้วยการเปลี่ยนแปลงบรรทัดที่ไม่ต้องการ
locate ... | less เอาต์พุตเส้นทางยาวซึ่งแสดงเป็นหลายบรรทัดในเทอร์มินัลแม้ว่าจริง ๆ แล้วจะเป็นบรรทัดเดียว ฉันจะคัดลอกเส้นทางจากท่าเรือโดยการเลือกข้อความด้วยเมาส์และกดปุ่มCtrl+ +Shift Cเมื่อฉันวางลงในไฟล์ข้อความฉันจะได้รับบรรทัดการเปลี่ยนแปลงที่ไม่พึงประสงค์ในข้อความตรงกับที่แสดงในเทอร์มินัล แต่ฉันจำได้ว่าบางครั้งฉันสามารถคัดลอกผลลัพธ์ของเส้นทางที่ยาวโดยlocate ... | lessไม่แนะนำการเปลี่ยนแปลงบรรทัดที่ไม่ต้องการและบางครั้งฉันก็ไม่สามารถทำได้ ฉันไม่รู้ว่าฉันทำอะไรที่แตกต่าง ดังนั้นฉันสงสัยว่าจะแน่ใจได้อย่างไรว่าปัญหาจะไม่เกิดขึ้น? ขอบคุณ! ระบบปฏิบัติการของฉัน: Ubuntu 12.04 อาคารผู้โดยสารของฉัน: สถานี Gnome 3.4.1.1
14 ubuntu  terminal  text 

3
รหัสส่งคืนที่เชื่อถือได้ของกระบวนการพื้นหลัง
สมมติว่าชิ้นส่วนของรหัสทุบตีต่อไปนี้: foo > logfile 2>&1 & foo_pid=$! while ps -p$foo_pid do ping -c 1 localhost done wait $foo_pid if [[ $? == 0 ]] then echo "foo success" fi มีความปลอดภัยหรือไม่ที่จะสมมติว่า$?มีรหัสส่งคืนของfooและไม่ใช่รหัสส่งคืนpingใช่หรือไม่ หากคำตอบของคำถามนั้นคือ: "คุณไม่สามารถสันนิษฐานได้" แล้วฉันจะแก้ไขรหัสชิ้นนี้เพื่อให้แน่ใจว่า$?มีรหัสที่ส่งคืนได้fooอย่างไร

3
ทุบตีเพิ่มคำพูดเดียวพิเศษ
ฉันมีปัญหาในการใช้งานสคริปต์ของฉัน เมื่อรันมันในโหมดดีบั๊ก (bash -x) ฉันเห็นว่า bash กำลังเพิ่มราคาพิเศษ ดังนั้นสคริปต์ของฉันจึงล้มเหลว นี่คือภายในสคริปต์ของฉัน: testvar="\"sudo /home/pi/shared/blink.sh 27 off\"" ssh -n -q -q -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 $1 ${testvar} นี่คือผลลัพธ์: ssh -n -q -q -o BatchMode=yes -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=5 192.168.42.105 '"sudo' /home/pi/shared/blink.sh 27 'off"'
14 shell  ssh  quoting 

2
ฉันสามารถใช้ ld.so.cache ของตัวเองได้หรือไม่?
ldconfig มีสองตัวเลือกที่น่าสนใจ: -f conf Use conf instead of /etc/ld.so.conf. -C cache Use cache instead of /etc/ld.so.cache. ฉันพยายามคัดลอก/etc/ld.so.confไปยังโฮมไดเร็กตอรี่ของฉันเอง, และแก้ไขมันเพื่อรวมพา ธ ไปยังไลบรารี่ในท้องถิ่นของฉัน/home/syockit/local/usr/libเป็นต้นและวิ่งไป ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache และต่อมาเพื่อยืนยันว่าไลบรารีถูกแคชฉันก็วิ่ง ldconfig -f /home/syockit/ld.so.conf -C /home/syockit/ld.so.cache -p | less และมันรวมไลบรารีทั้งหมดของฉันไว้ด้านบนรวมถึงไลบรารีระบบด้วย ตอนนี้ฉันต้องการให้ลิงเกอร์เริ่มต้นใช้สองสิ่งนี้ แต่ในman ld.soผมเห็นไม่มีการเอ่ยถึงความสามารถในการใช้งานที่กำหนดเองหรือ.conf .cacheแล้วจุดของสองตัวเลือกข้างต้นldconfigนั้นคืออะไร?

3
การจับคู่ชื่อโฮสต์และที่อยู่ IP ใน / etc / hosts
ในเครื่อง linux ของฉันเมื่อฉันรันhostnameมันจะแสดงmongodbแต่เมื่อฉันรันhost mongodbมันจะแสดง: mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb Host mongodb not found: 2(SERVFAIL) /etc/hostsไฟล์ของฉัน: 192.168.10.10 mongodb 192.168.10.10 localhost 127.0.0.1 localhost #127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters คำถามแรกของฉันคือเนื่องจาก/etc/hostsการจับคู่จาก IP กับชื่อโฮสต์ทำไมเครื่องนี้ไม่สามารถแก้ไขชื่อโฮสต์mongodbเป็น IP 192.168.10.10 ได้ เมื่อฉันเรียกใช้host localhostจะสามารถแก้ไขและแสดง: …
14 ip  hostname 

2
จะเก็บไฟล์รูปภาพในตัวแปร bash ได้อย่างไร?
หลังจากที่ฉันใช้คำสั่งต่อไปนี้ pngString="$(cat example.png)" echo -n "$pngString" > tmp.png ฉันไม่สามารถเปิด tmp.png เป็นไฟล์ PNG ได้ ข้อมูลบางอย่างอาจหายไปเมื่อฉันใช้$pngStringเพื่อจัดเก็บไฟล์ภาพ ดังนั้นคำถามคือฉันจะเก็บข้อมูลภาพทั้งหมดโดยใช้ตัวแปรในสคริปต์ทุบตีได้อย่างไร
14 bash  cat  images  binary  variable 

2
PAM - แฟล็กการควบคุมที่จำเป็นและเพียงพอ
ฉันกำลังศึกษา PAM และฉันค่อนข้างสับสนเกี่ยวกับความหมายของการรวมกันของธงควบคุม จากเอกสารของ Red Hat เรามี: ความล้มเหลวที่จำเป็นของ PAM ดังกล่าวในที่สุดจะนำไปสู่ความล้มเหลวในการส่งคืน PAM-API แต่หลังจากโมดูลที่เหลืออยู่ (สำหรับบริการและประเภทนี้) ได้ถูกเรียกใช้ สิ่งที่ จำเป็นต้องมีตามต้องการอย่างไรก็ตามในกรณีที่โมดูลดังกล่าวส่งคืนความล้มเหลวการควบคุมจะถูกส่งกลับไปยังแอปพลิเคชันโดยตรง ความสำเร็จที่เพียงพอของโมดูลดังกล่าวเพียงพอที่จะตอบสนองความต้องการการรับรองความถูกต้องของสแต็คของโมดูล (หากโมดูลที่จำเป็นก่อนหน้านี้ล้มเหลวความสำเร็จของโมดูลนี้จะถูกละเว้น) ความล้มเหลวของโมดูลนี้ไม่ถือว่าร้ายแรงถึงความพึงพอใจกับแอปพลิเคชันที่ประสบความสำเร็จในประเภทนี้ หากโมดูลสำเร็จเฟรมเวิร์ก PAM จะส่งคืนความสำเร็จให้กับแอ็พพลิเคชันทันทีโดยไม่ต้องลองโมดูลอื่น ๆ ดังนั้นในความเข้าใจของฉันหากโมดูลrequisiteล้มเหลวสแต็กของโมดูลทั้งหมดจะไม่ถูกแยกวิเคราะห์และการควบคุมจะกลับไปที่แอปพลิเคชันทันที หากโมดูลsufficientสำเร็จโมดูลส่วนที่เหลือจะไม่ถูกแยกวิเคราะห์และการควบคุมจะกลับไปที่แอปพลิเคชันทันที หากโมดูลrequiredล้มเหลวสแต็กทั้งหมดจะถูกวิเคราะห์คำ ตอนนี้ฉันไม่สามารถเข้าใจสิ่งที่จะเป็นพฤติกรรมเมื่อโมดูลบางอย่างrequiredล้มเหลวและโมดูลอื่นsufficientประสบความสำเร็จ

2
การจับคู่เชิงลบหลายรูปแบบ Grep
ดังนั้นฉันจึงมีบันทึกของ Apache จำนวนมากโดยใช้รูปแบบบันทึกมาตรฐาน ฉันต้องการรับบันทึกการใช้งานทั้งหมดที่ไม่ได้มาจากโปรแกรมรวบรวมข้อมูลเว็บ ดังนั้นสมมติว่าฉันมีไฟล์ robot_patterns พร้อมรายการเช่น Googlebot msnbot-media YandexBot bingbot ถ้าฉันรันคำสั่งgrep -f robot_patterns *.logฉันจะได้รับรายการทั้งหมดโดยบอทที่ตรงกับรูปแบบข้างต้น รายการจริงของฉันมีบอทและตัวแทนประมาณ 30 รายการที่ฉันต้องการเพิกเฉย แต่ฉันต้องการค้นหารายการทั้งหมดที่ไม่ได้มาจากบ็อต ดังนั้นฉันจึงพยายามgrep -v -f robot_patterns *.logและไม่ส่งกลับผลลัพธ์โดย grep นี่ไม่ใช่สิ่งที่ฉันคาดหวังหรือปรารถนาและฉันไม่ได้หาวิธีที่ชัดเจนเพื่อให้ได้สิ่งที่ฉันต้องการ เมื่อใช้-vตัวเลือกที่รวมกับหลายรูปแบบในไฟล์ grep จะส่งคืนบรรทัดที่ตรงกันหากตรงกับทุกรูปแบบ
14 grep 

5
เหตุใดไฟล์ต่าง ๆ ใน smbfs ที่ติดตั้งร่วมกันจึงถูกสร้างขึ้นด้วยบิตที่ปฏิบัติการได้?
ฉันติดตั้งแซมบ้าแบ่งปันโดยใช้คำสั่ง smbmount: $ sudo smbmount \\\\foo\\bar /mnt/bar -o user=tom เมื่อฉันสร้างไฟล์ใหม่พวกเขาจะถูกสร้างขึ้นด้วยบิตที่สามารถเรียกใช้งานได้สำหรับเจ้าของกลุ่มและโลก สำหรับเช่น $ touch hello.txt $ ls -la hello.txt -rwxr-xr-x 1 root root 0 Dec 2 12:28 hello.txt ไฟล์เดียวกันเมื่อสร้างขึ้นบนการแชร์ที่เมาท์ NFS จะตั้งค่าการอนุญาตที่ถูกต้องโดยไม่มีชุดบิตที่เรียกใช้งาน ทำไมสิ่งนี้จึงเกิดขึ้น จะแก้ไขอย่างไร?
14 permissions  cifs 

1
ค้นหาข้อมูลเกี่ยวกับ xkb_symbol ได้ที่ไหน (เช่น dead_acute, KP_1, Delete, Down) [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันจะหารายการของxkb_symbolsและความหมายได้อย่างไร หากต้องการชี้แจงให้ฉันยกตัวอย่างบางอย่างสำหรับxkb_symbols : dead_acute dollar Down Delete adiaeresis Adiaeresis dead_circumflex KP_0 ( KP_น่าจะเป็นคำนำหน้าสำหรับสัญลักษณ์ "แผ่นตัวเลข") KP_divide .... (อื่น ๆ อีกมากมาย) อ่านArch Wikiนี้ฉันเข้าใจว่าxkb_symbolsเป็นตัวเลขจริง หมายเลขเหล่านั้นสำหรับxkb_symbolsถูกกำหนดให้กับการแทนค่าสตริงบางแห่ง ( นี่คือคำถามหลัก: ที่ไหน? ) ตัวอย่างเช่นเราสามารถดูได้/usr/include/X11/keysymdef.hว่าหลาย ๆ คน#definesมีคุณสมบัติต่อไปนี้: #define XK_KP_0 0xffb0 ในขณะที่อย่างน้อยฉันสามารถหาXK_KP_0ซึ่งดูเหมือนว่าจะ resample KP_0(เป็นที่เรียบง่ายอีกครั้งนำหน้า) ผมยังมีข้อมูลเกี่ยวกับไม่มีสัญลักษณ์อื่น ๆ เช่น (เช่นdead_circumflex, dollarฯลฯ ... ) ฉันต้องการรายการการแทนค่าสตริงที่กำหนดเช่นเพื่อสร้างปรับหรือแก้ไขเค้าโครงแป้นพิมพ์ …


4
troff / groff เกี่ยวข้องกันอีกหรือไม่
ฉันได้ยินมาว่า troff / groff ส่วนใหญ่ถูกแทนที่ด้วย TeX มันเป็นเรื่องจริงเหรอ? สิ่งเดียวที่ฉันรู้ว่าที่ใช้จริง troff ทุกวันนี้คือ manpages สิ่งนี้เป็นจริงหรือไม่? ถ้าไม่ใช้แล้วมีประโยชน์อะไรอีกบ้าง?
14 latex  groff 

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