Unix & Linux

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

2
ลำดับความสำคัญของ && vs & ใน bash และ zsh
ตอบคำถามนี้ฉันค้นพบความแตกต่างที่ตลกมาก (และบอบบาง) ระหว่างพฤติกรรมในbashและzsh: ในbash: romano@RRyS:~$ pwd /home/romano romano@RRyS:~$ alias x="cd /bin && ./echo A >/dev/null &" romano@RRyS:~$ x [1] 16611 romano@RRyS:~$ pwd /home/romano อย่างที่คุณเห็นการดำเนินการของนามแฝงxจะดำเนินการใน subshell ดังนั้นไดเรกทอรีปัจจุบันจะไม่เปลี่ยนแปลง ไม่อยู่ในzsh: [romano:~] % pwd /home/romano [romano:~] % alias x="cd /bin && ./echo A >/dev/null &" [romano:~] % x [1] 16744 [1] + 16744 done …
9 bash  shell  zsh 

1
วิธีกำหนดค่า repository ของ MySQL APT บน Ubuntu บนเชลล์แบบไม่โต้ตอบ?
ฉันต้องการติดตั้ง MySQL 5.7 บนTravis CIซึ่งรัน Ubuntu 12 เครื่องเสมือน ฉันยินดีที่จะใช้repo MySQL APT อย่างเป็นทางการ : wget http://dev.mysql.com/get/mysql-apt-config_0.2.1-1ubuntu12.04_all.deb sudo dpkg --install mysql-apt-config_0.2.1-1ubuntu12.04_all.deb แต่ปัญหาคือการติดตั้งแพคเกจนี้จะเปิดเมนูโต้ตอบถามคำถามต่อไปนี้: Which Server version do you wish to receive? - mysql-5.6 - mysql-5.7-dmr เนื่องจากการติดตั้งเป็นส่วนหนึ่งของสคริปต์อัตโนมัติฉันไม่ได้อยู่ข้างหลังเทอร์มินัลเพื่อตอบคำถาม สิ่งเดียวที่ฉันสามารถหาได้ในเอกสารคือ: การเลือกรุ่นที่วางจำหน่ายที่สำคัญ ตามค่าเริ่มต้นการติดตั้งและอัปเกรดทั้งหมดสำหรับเซิร์ฟเวอร์ MySQL ของคุณและส่วนประกอบที่จำเป็นอื่น ๆ มาจากชุดการเปิดตัวของรุ่นหลักที่คุณเลือกระหว่างการติดตั้งแพ็คเกจการกำหนดค่า (ดูที่การเพิ่ม MySQL APT Repository) อย่างไรก็ตามคุณสามารถเปลี่ยนเป็นชุดรีลีสหลักที่รองรับได้ตลอดเวลาโดยกำหนดค่าแพ็คเกจการกำหนดค่าที่คุณติดตั้งใหม่ ใช้คำสั่งต่อไปนี้: shell> sudo dpkg-reconfigure mysql-apt-config …
9 mysql  dpkg  debconf 

2
ทดสอบเสียงสะท้อน stty -echo -> stty: อินพุตมาตรฐาน: ioctl ที่ไม่เหมาะสมสำหรับอุปกรณ์
ฉันกำลังเล่นกับสคริปต์ perl ที่จะนำผู้ใช้ป้อนด้วยต่อไปนี้: system( qw( stty -echo ) ); $? == 0 or die "Error unable to disable character printing.\n"; print "$prompt: "; my $input = <STDIN>; ฉันคิดว่าฉันจะสามารถตอบสนองโดยใช้ echo ได้ แต่ดูเหมือนว่าจะขัดแย้งกับคำสั่ง stty -echo และสร้างข้อผิดพลาดต่อไปนี้: stty: standard input: Inappropriate ioctl for device โดยไม่ต้องเปลี่ยนสคริปต์ perl สิ่งที่สามารถทำได้ใน bash ที่จะผ่านในการป้อนข้อมูลหรือไม่ ทำให้เกิดปัญหาอะไร
9 bash  perl  stty 

4
EOF ที่ไม่คาดคิดและข้อผิดพลาดทางไวยากรณ์
ขณะนี้ฉันกำลังเขียนเชลล์สคริปต์ตัวที่สามของฉันและฉันพบปัญหา นี่คือสคริปต์ของฉัน: #!/bin/bash echo "choose one of the following options : \ 1) display all current users \ 2) list all files \ 3) show calendar \ 4) exit script" while read do case in 1) who;; 2) ls -a;; 3) cal;; 4) exit;; esac done เมื่อฉันพยายามเรียกใช้สคริปต์ข้อความนี้จะบอกว่า: line2 : unexpected …

1
ทำไมทุบตีถึงทำให้แจง / เรียกใช้เนื้อหาในตัวแปรสภาพแวดล้อม
ShellShockข้อผิดพลาดในการทำงานทุบตีโดยวิธีการของตัวแปรสภาพแวดล้อม สุจริตฉันประหลาดใจด้วยความจริงที่ว่ามีคุณสมบัติเช่น: "การส่งผ่านนิยามฟังก์ชันผ่าน env vars" ดังนั้นคำถามนี้ในขณะที่อาจไม่ได้กำหนดอย่างสมบูรณ์คือการขอตัวอย่างหรือกรณีที่จำเป็นต้องมีคุณสมบัตินี้? โบนัส. เชลล์อื่น ๆ zsh, dash ฯลฯ มีคุณสมบัตินี้ด้วยหรือไม่?

1
ฉันจะพิมพ์ทั้งหมดยกเว้นบรรทัดที่ N ถึงบรรทัดสุดท้ายได้อย่างไร?
ฉันต้องการทำส่วนประกอบ / "ตรงกันข้าม" ของ sed 13q;d <file.txt โดยทั่วไปแล้วเป็นไปได้ไหมที่เราจะทำส่วนเติมเต็ม / ผกผัน / ตรงกันข้ามในนี้sedหรือไม่? หรือเฉพาะสำหรับ regexes ฉันจะพิมพ์ทั้งหมดยกเว้นบรรทัดที่สามถึงครั้งสุดท้ายได้อย่างไร สิ่งนี้ต้องใช้สองtacและนับไปข้างหน้าsedหรือไม่? หรือมีวิธีที่จะทำให้sedตัวเองนับจากด้านหลัง?

2
ทำไมความสามารถในการกำหนดฟังก์ชั่นในตัวแปรด้านสิ่งแวดล้อมจึงไม่ใช่ความเสี่ยงด้านความปลอดภัยในตัวเอง?
ตามที่ฉันเข้าใจโดยทั่วไปถือว่าปลอดภัยที่จะให้ทุกคนให้ข้อมูลที่จะถูกเก็บไว้ในตัวแปรด้านสิ่งแวดล้อม ช่องโหว่ shellshock เป็นปัญหาที่นี่เพราะมันหมายความว่าโค้ดท้ายคำนิยามฟังก์ชั่นภายในตัวแปรสภาพแวดล้อมจะถูกดำเนินการเมื่ออินสแตนซ์ใหม่ของ bash เปิดตัวและคุณไม่ต้องการให้ใครเรียกใช้รหัสใด ๆ บนเซิร์ฟเวอร์ของคุณ . เห็นได้ชัดว่านิยามของฟังก์ชันเองนั้นไม่ใช่ความเสี่ยงด้านความปลอดภัยและได้รับอนุญาตเพราะจะต้องมีการเรียกใช้อย่างชัดเจนเพื่อให้โค้ดทำงาน คำถามของฉันคือทำไมผู้ใช้lsที่ไม่ประสงค์ดีไม่สามารถกำหนดฟังก์ชั่นโดยมีรหัสที่เป็นอันตรายเช่นเดียวกับคำสั่งทั่วไปแล้วหวังว่าสคริปต์ (หรือสิ่งที่กำลังเรียกใช้) จะใช้คำสั่งนี้ในบางจุด? ตัวอย่างของสิ่งที่ฉันมีอยู่ในใจ: $ export ls='() { echo "doing bad things..."; }' $ bash -c ls doing bad things...

2
แยก initramfs ในตัว
ฉันมีเคอร์เนลที่ฝังหนึ่ง initramfs ฉันต้องการแยกมัน ฉันได้ผลลัพธ์x86 boot sectorเมื่อฉันทำfile bzImage ฉันมีไฟล์ System.map สำหรับเคอร์เนลอิมเมจนี้ มีวิธีใดที่จะดึงอิมเมจ initramfs ที่ฝังอยู่ในเคอร์เนลนี้โดยใช้หรือไม่ใช้ไฟล์System.map ? สตริงที่น่าสนใจที่พบในไฟล์System mapคือ: (ในกรณีที่มันช่วย) 57312:c17fd8cc T __initramfs_start 57316:c19d7b90 T __initramfs_size

2
ฉันจะบอกได้อย่างไรเมื่อกระบวนการเขียนไฟล์เสร็จแล้ว?
ฉันมีกระบวนการที่เกิดจากเปลือกหอย มีการทำงานเป็นกระบวนการพื้นหลังและการส่งออกไปยังฐานข้อมูลไฟล์ CSV /tmpใน ฉันจะบอกได้อย่างไรว่ากระบวนการพื้นหลังเสร็จสมบูรณ์ (เสร็จสิ้น / เลิก) หรือเมื่อการล็อคไฟล์ CSV ถูกปิด ฉันวางแผนที่จะ FTP ไฟล์ไปยังโฮสต์อื่นเมื่อมีการเขียน แต่ฉันต้องการไฟล์ที่สมบูรณ์ก่อนที่จะเริ่มการถ่ายโอนไฟล์
9 files  process  lock 

2
การย้อนกลับ bvfs subvolume ด้วย subvolumes เด็ก
มีวิธีการที่เป็นที่นิยมในการย้อนกลับไปยังสแน็ปช็อตย่อยที่มี subvolumes ย่อยหรือไม่ ตัวอย่างเช่นนี่คือเลย์เอาต์ btrfs ของฉัน: ID 257 gen 59802 top level 5 path __active ID 258 gen 59784 top level 5 path __snapshot ID 259 gen 59802 top level 257 path home ID 260 gen 36538 top level 257 path opt ID 261 gen 59802 top level 257 path …
9 btrfs  snapshot 

1
เหตุใดตำแหน่งของตัวแปรสภาพแวดล้อมจึงแตกต่างกันมาก
อ่านหนังสือแฮ็ค: ศิลปะแห่งการเอารัดเอาเปรียบโดย Jon Erickson ฉันพยายามประมาณที่อยู่ของตัวแปรสภาพแวดล้อมSHELLCODEเพื่อใช้ประโยชน์จากโปรแกรม ทุกครั้งที่ฉันวิ่งgetenv("SHELLCODE");ไปหาที่ตั้งผลลัพธ์จะแตกต่างกันโดยสิ้นเชิง แยกจากเปลือกของฉัน: > for i in $(seq 10); do ./a.out SHELLCODE; done SHELLCODE is at 0xff9ab3a3 SHELLCODE is at 0xffcdb3a3 SHELLCODE is at 0xffb9a3a3 SHELLCODE is at 0xffa743a3 SHELLCODE is at 0xffdb43a3 SHELLCODE is at 0xfff683a3 SHELLCODE is at 0xffef03a3 SHELLCODE is at 0xffc1c3a3 SHELLCODE …

1
ฉันจะกำหนดค่า "ใครก็ได้" ให้เรียกใช้ X ในหนึ่งซับได้อย่างไร
โซลูชันทั่วไปที่โพสต์คือเรียกใช้sudo dpkg-reconfigure x11-commonซึ่งให้พรอมต์กราฟิกอย่างไรก็ตามฉันต้องการใช้สิ่งนี้แบบไม่โต้ตอบ สถานการณ์สมมติว่าฉันเป็น SSH ในเครื่องในฐานะผู้ใช้รูท (ในระหว่างการจัดเตรียม Vagrant) และจำเป็นต้องเรียกใช้startxครั้งเดียวในฐานะผู้ใช้ทั่วไปเพื่อสร้างไฟล์กำหนดค่าบางอย่างก่อนดำเนินการตามขั้นตอนต่อไป ฉันเชื่อว่าเหตุผลที่ฉันไม่สามารถทำได้เพียงsu otheruser startxเพราะ Xauthority / ฉันเชื่อมต่อผ่าน SSH ในฐานะผู้ใช้รายอื่น ...

1
โมดูลที่ทำเครื่องหมาย (F) ใน / proc / โมดูล
ในระบบ 3.10 ของฉันบางโมดูลที่แสดงใน / proc / โมดูลถูกทำเครื่องหมาย (F) ฉันต้องการค้นหาสาเหตุของเรื่องนี้ (F) ฉันแน่ใจว่าโมดูลไม่ได้โหลดอย่างมีประสิทธิภาพและสร้างขึ้นด้วยเคอร์เนล คุณช่วยชี้จุดที่เคอร์เนลสร้าง / proc / modules ได้อย่างไร usb_storage 56610 0 - Live 0xffffffffa005d000 (F) หากฉันยกเลิกการโหลดและโหลดซ้ำโมดูลนี้ (F) จะหายไป

2
ตรวจสอบความล้มเหลวของ su, sudo หายไป
หลังจากลบvim-minimalแพ็คเกจออกเนื่องจากมีข้อขัดแย้งกับ GUI Vim ที่ฉันพยายามติดตั้งsudoหายไปและsuทำให้การตรวจสอบสิทธิ์ล้มเหลว [portOdin@localhost ~]$ su Password: su: Authentication failure [portOdin@localhost ~]$ sudo bash: sudo: command not found... ฉันพยายามกับ zsh เช่นกันและสร้างผู้ใช้ใหม่แม้ว่าจะมีปัญหาเดียวกัน ถ้าฉันสามารถsuทำงานได้หรือมีทางเลือกอื่นฉันสามารถติดตั้งใหม่sudo yum install sudoได้ ฉันใช้ Fedora 20

3
จะเขียน / แก้ไข / อัพเดทตัวแปร OsIndications efi จากบรรทัดคำสั่งได้อย่างไร
ในความต้องการที่จะเข้าสู่ยูทิลิตี้การตั้งค่าเฟิร์มแวร์ UEFI ในขณะที่ใช้การบูตอย่างรวดเร็วเป็นพิเศษ (ไม่ได้โหลดไดรเวอร์คีย์บอร์ดระหว่าง POST) ฉันต้องการเขียนถึงตัวแปร efi "Os Indications" ระบบปฏิบัติการของฉันคือ Ubuntu 14.04 kernel 3.13.0-35-generic OsIndications ตัวแปรส่งกลับ bitmask UINT64 OsIndicationsSupported ตัวแปรส่งกลับ bitmask UINT64 EFI_OS_INDICATIONS_BOOT_TO_FW_UIบิตสามารถตั้งค่าในตัวแปร OsIndicationsSupported โดยเฟิร์มถ้าขอเฟิร์มแวสนับสนุนระบบปฏิบัติการที่จะหยุดที่อินเตอร์เฟซที่ใช้เฟิร์มแว EFI_OS_INDICATIONS_BOOT_TO_FW_UIบิตสามารถตั้งค่าได้โดยระบบปฏิบัติการในตัวแปร OsIndications ถ้าปรารถนา OS สำหรับเฟิร์มที่จะหยุดที่อินเตอร์เฟซที่ใช้เฟิร์มในการบูตถัดไป EFI_OS_INDICATIONS_BOOT_TO_FW_UI= 0x0000000000000001- หน้า 312 ของข้อมูลจำเพาะ UEFI 2.3.1C เฟิร์มแวร์ของฉันมีความสามารถในการเข้าสู่ยูทิลิตี้การตั้งค่าเฟิร์มแวร์ในการบู๊ตครั้งต่อไป: $ hexdump /sys/firmware/efi/vars/OsIndicationsSupported-8be4df61-93ca-11d2-aa0d-00e098032b8c/data 0000000 0001 0000 0000 0000 0000008 ฉันสามารถสร้างตัวแปรใหม่เมื่อ/sys/firmware/efi/efivarsใช้ $ printf\x07\x00\x00\x00\x00" …

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