Unix & Linux

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

2
เอาท์พุทการทดแทนกระบวนการออกคำสั่ง
echo one; echo two > >(cat); echo three; คำสั่งให้ผลลัพธ์ที่ไม่คาดคิด ฉันอ่านสิ่งนี้: วิธีการใช้กระบวนการทดแทนในทุบตีอย่างไร และบทความอื่น ๆ อีกมากมายเกี่ยวกับการทดแทนกระบวนการบนอินเทอร์เน็ต แต่ไม่เข้าใจว่าทำไมจึงมีพฤติกรรมเช่นนี้ ผลลัพธ์ที่คาดหวัง: one two three ผลผลิตจริง: prompt$ echo one; echo two > >(cat); echo three; one three prompt$ two ทั้งสองคำสั่งนี้ควรจะเทียบเท่ากับมุมมองของฉัน แต่พวกเขาไม่ได้: ##### first command - the pipe is used. prompt$ seq 1 5 | cat 1 …

1
ทาร์ไฟล์ที่มีวันที่เป็นชื่อ?
ฉันพยายามที่จะ tar และ gzip ไฟล์ที่มีวันที่และเวลาเป็นชื่อ: date=$(date '+%d-%m-%Y_%H:%M:%S'); tar -zcf "$date".tar.gz repo/bin/ แต่ฉันกลับมา: tar (child): Cannot connect to 17-08-2017_21: resolve failed tar: Child returned status 128 tar: Error is not recoverable: exiting now เกิดอะไรขึ้นที่นี่และฉันจะแก้ไขได้อย่างไร tar พยายามเชื่อมต่อกับชื่อราวกับว่าเป็น IP หรือไม่
16 bash  tar 

6
ชื่อไดรฟ์ อะไรคือคำที่ถูกต้องสำหรับส่วน "sda" ของ "/ dev / sda"
fdisk (8)พูดว่า: อุปกรณ์มักจะ / dev / sda, / dev / sdb หรือดังนั้น ชื่ออุปกรณ์หมายถึงดิสก์ทั้งหมด ระบบเก่าที่ไม่มี libata (ไลบรารีที่ใช้ภายในเคอร์เนล Linux เพื่อสนับสนุนตัวควบคุมโฮสต์ ATA และอุปกรณ์) สร้างความแตกต่างระหว่างดิสก์ IDE และ SCSI ในกรณีเช่นนี้ชื่ออุปกรณ์จะเป็น / dev / hd * (IDE) หรือ / dev / sd * (SCSI) พาร์ติชันคือชื่ออุปกรณ์ตามด้วยหมายเลขพาร์ติชัน ตัวอย่างเช่น / dev / sda1 เป็นพาร์ติชันแรกบนฮาร์ดดิสก์ตัวแรกในระบบ ดูเอกสารประกอบเคอร์เนล Linux (ไฟล์Documentation / devices.txt …
16 linux  gnu  terminology 

2
วิธีการเปิดใช้งานและใช้ตัวกำหนดตารางเวลาของ BFQ
ฉันเพิ่งติดตั้ง Linux เคอร์เนลเวอร์ชัน 4.12 บน Ubuntu 17.04 โดยใช้ ukuu (ยูทิลิตี้เคอร์เนล Ubuntu Kernel Update https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility ) สิ่งนี้คือเมื่อฉันตรวจสอบ I / O schedulers ที่มีอยู่ฉันไม่สามารถหา BFQ หรือ Kyber I / O scheduler ได้: cat /sys/class/block/sda/queue/scheduler > noop deadline [cfq] ดังนั้นวิธีการใช้หนึ่งใน schedulers ใหม่ในรุ่น Linux นี้?

6
เลือกล่ามหลังจากเริ่มต้นสคริปต์เช่นถ้า / else อยู่ใน hashbang
มีวิธีใดบ้างในการเลือกล่ามที่กำลังเรียกใช้สคริปต์แบบไดนามิก ฉันมีสคริปต์ที่ฉันใช้ในระบบที่แตกต่างกันสองระบบและล่ามที่ฉันต้องการใช้นั้นจะอยู่ในตำแหน่งที่ตั้งที่ต่างกันในทั้งสองระบบ สิ่งที่ฉันต้องทำคือเปลี่ยนสาย hashbang ทุกครั้งที่เปลี่ยนไป ฉันต้องการทำบางสิ่งที่เทียบเท่ากับตรรกะของสิ่งนี้ (ฉันรู้ว่าการสร้างที่แน่นอนนี้เป็นไปไม่ได้): if running on system A: #!/path/to/python/on/systemA elif running on system B: #!/path/on/systemB #Rest of script goes here หรือจะดีกว่านี้ก็เพื่อให้พยายามใช้ล่ามตัวแรกและหากไม่พบมันจะใช้ตัวที่สอง: try: #!/path/to/python/on/systemA except: #!path/on/systemB #Rest of script goes here เห็นได้ชัดว่าผมแทนสามารถดำเนินการได้เป็น /path/to/python/on/systemA myscript.py หรือ /path/on/systemB myscript.py ขึ้นอยู่กับที่ผม แต่ที่จริงผมมีสคริปต์เสื้อคลุมที่เปิดตัวmyscript.pyดังนั้นผมอยากจะระบุเส้นทางไปล่ามหลามทางโปรแกรมมากกว่าด้วยมือ

6
วิธีที่เร็วและมีประสิทธิภาพที่สุดในการรับจำนวนเรคคอร์ด (บรรทัด) ในไฟล์บีบอัด gzip
ฉันพยายามที่จะทำบันทึกนับในไฟล์ 7.6 GB gzip ฉันพบวิธีการเล็กน้อยโดยใช้zcatคำสั่ง $ zcat T.csv.gz | wc -l 423668947 วิธีนี้ใช้งานได้ แต่ใช้เวลานานเกินไป (มากกว่า 10 นาทีในการนับ) ฉันลองวิธีอื่นอีกสองสามอย่างเช่น $ sed -n '$=' T.csv.gz 28173811 $ perl -lne 'END { print $. }' < T.csv.gz 28173811 $ awk 'END {print NR}' T.csv.gz 28173811 ทั้งสามคำสั่งเหล่านี้กำลังดำเนินการอย่างรวดเร็ว แต่ให้นับไม่ถูกต้องของ 28173811 ฉันจะนับจำนวนเร็กคอร์ดในเวลาน้อยที่สุดได้อย่างไร
16 shell  gzip 

4
ความแตกต่างในการใช้งานระหว่างตัวแปรเชลล์และตัวแปรสภาพแวดล้อมคืออะไร?
จริง ๆ แล้วฉันไม่รู้ว่ามีตัวแปรสองประเภทที่ฉันสามารถเข้าถึงได้จากบรรทัดคำสั่ง ทั้งหมดที่ฉันรู้คือว่าฉันสามารถประกาศตัวแปรเช่น: foo="my dear friends" bar[0]="one" bar[1]="two" bar[2]="three" หรือเข้าถึงพวกเขาด้วยเครื่องหมาย $ เช่น: echo $foo echo ${bar[1]} หรือใช้ตัวแปร inbuilt เช่น: echo $PWD PATH=$PATH:"/usr/bin/myProg" ตอนนี้ฉันได้ยินมาว่ามีตัวแปรสองประเภท (อย่างน้อย?) ตัวแปร: ตัวแปรเชลล์และตัวแปรสภาพแวดล้อม วัตถุประสงค์ของการมีสองประเภทที่แตกต่างกันคืออะไร? ฉันจะรู้ได้อย่างไรว่าตัวแปรประเภทใด ประเพณีทั่วไปสำหรับแต่ละคนมีอะไรบ้าง


4
ตำแหน่งมาตรฐานสำหรับเก็บไฟล์ต้นฉบับของซอฟต์แวร์
มีตำแหน่งมาตรฐานใน Linux สำหรับเก็บไฟล์ต้นฉบับเช่นOpenSSLหรือไม่ ฉันกำลังสร้าง Nginx จากแหล่งที่มาด้วย OpenSSL เวอร์ชันที่ไม่ใช่ค่าเริ่มต้น ฉันต้องการดาวน์โหลดและไม่ใช้ OpenSSL และฉันทำไว้ในโฮมไดเร็กตอรี่ ตอนนี้ฉันสงสัยว่าอาจมีตำแหน่งมาตรฐานใน Linux /optหรือไม่

1
ใครเป็นผู้ตัดสินใจว่าแอปพลิเคชันใดที่รับสัญญาณจากแป้นพิมพ์
ความเข้าใจในปัจจุบันของฉันเกี่ยวกับสัญญาณจากแป้นพิมพ์ในเทอร์มินัลคือ (โดยส่วนใหญ่จะพยายามทำแผนที่การสังเกตของฉันกับสิ่งที่สามารถพบได้บน google) ต่อไปนี้: ผู้ใช้กด Cc สิ่งนี้ถูกส่งไปยังอินพุตบัฟเฟอร์ของเทอร์มินัลเป็นไบต์ซึ่งคำนวณโดยการล้าง 2 บิตซ้ายสุดจากค่า 7 บิต ascii ของ c หลังจากนี้จะเริ่มมีหมอกมากเพราะการกำหนดค่าสิ่งที่อินพุตหมายถึงสัญญาณที่จะทำใน terminal (stty) ฉันคิดว่ามันหมายความว่าอาคารผู้โดยสารกำลังส่งสัญญาณไปยังกระบวนการ แต่ฉันเองก็รู้ว่าเทอร์มินัลนั้นไม่ทราบเกี่ยวกับแอปพลิเคชันที่กำลังอ่านอยู่ การส่งสัญญาณโดยคีย์บอร์ดในเทอร์มินัลทำงานอย่างไรตั้งแต่ต้นจนจบ
16 terminal  signals 

2
เซิร์ฟเวอร์ Ghost NTP บน Debian 8.6
ดังนั้นทีมรักษาความปลอดภัยด้านไอทีของมหาวิทยาลัยและฉันก็เดินไปรอบ ๆ อย่างไม่หยุดหย่อน ... ใครมีความคิดในเรื่องนี้: ฉันเพิ่งตั้งค่าไฟล์เซิร์ฟเวอร์ขนาดเล็กสำหรับห้องปฏิบัติการที่ใช้ Debian 8.6 บนคอมพิวเตอร์เฉพาะ (โปรเซสเซอร์ Intel Avoton C2550 - ยินดีที่จะให้ข้อมูลฮาร์ดแวร์เพิ่มเติมหากจำเป็น แต่ฉันคิดว่าไม่จำเป็น) Debian ติดตั้งโดยไม่มีปัญหาใด ๆ และในเวลานั้นฉันยังติดตั้ง Samba, NTP, ZFS และ python สิ่งต่าง ๆ ดูเหมือนจะใช้งานได้ดีดังนั้นฉันจึงปล่อยให้มันนั่งทำงานที่มุมห้องแล็บสองสามสัปดาห์ ประมาณสองสัปดาห์ที่ผ่านมาฉันได้รับอีเมลจากทีมไอทีแจ้งว่าเซิร์ฟเวอร์ของฉัน "ถูกโจมตี" และมีความเสี่ยงที่จะถูกใช้ในการขยาย NTP / การโจมตี DDoS (การโจมตีการขยาย NTP โดยใช้ CVE-2013-5211 ตามที่อธิบายไว้ในhttps: //www.us-cert.gov/ncas/alerts/TA14-013A ) สัญญาณที่ชี้ไปนั้นเป็นการรับส่งข้อมูล NTPv2 จำนวนมากบนพอร์ต 123 แปลกที่อยู่ IP ที่พวกเขาระบุว่าสิ่งนี้มาจาก ( …

1
ทำไม“ ใครล้าน” จึงไม่อนุญาตให้สร้างผลผลิต
ใน IEEE Std 1003.1-2008 ฉบับปี 2559 (aka ข้อมูลจำเพาะของ Open Group Base Issue 7 หรือเพียงมาตรฐาน POSIX) ส่วน Rationale ของwhoยูทิลิตี้กล่าวถึงสิ่งต่อไปนี้: มันเป็นที่ยอมรับสำหรับการดำเนินการผลิตผลผลิตไม่มีการอุทธรณ์ของผู้ ล้านบาท ใครคือ "mil" ทำไมการดำเนินการได้รับอนุญาตให้ผลิตออกไม่who mil?
16 history  posix  who 

8
ฉันจะนับจำนวนครั้งที่ลำดับไบต์เกิดขึ้นในไฟล์ได้อย่างไร
ฉันต้องการนับกี่ครั้งที่ลำดับของไบต์เกิดขึ้นภายในไฟล์ที่ฉันมี ตัวอย่างเช่นฉันต้องการค้นหาจำนวนครั้งที่\0xdeadbeefเกิดขึ้นภายในไฟล์ที่ปฏิบัติการได้ ตอนนี้ฉันกำลังใช้ grep: #/usr/bin/fish grep -c \Xef\Xbe\Xad\Xde my_executable_file (ไบต์ถูกเขียนในลำดับย้อนกลับเนื่องจาก CPU ของฉันเป็น endian น้อย) อย่างไรก็ตามฉันมีปัญหาสองประการเกี่ยวกับวิธีการของฉัน: \Xnnลำดับการหลบหนีเหล่านั้นใช้ได้เฉพาะในเปลือกปลาเท่านั้น grep กำลังนับจำนวนบรรทัดที่มีหมายเลขเวทย์มนตร์ของฉัน หากรูปแบบเกิดขึ้นสองครั้งในบรรทัดเดียวกันมันจะนับเพียงครั้งเดียว มีวิธีแก้ไขปัญหาเหล่านี้หรือไม่? ฉันจะทำให้หนึ่งซับนี้ทำงานในเปลือก Bash และนับจำนวนครั้งอย่างถูกต้องรูปแบบที่เกิดขึ้นภายในไฟล์ได้อย่างไร

3
เป็นไปได้ไหมที่จะเปลี่ยนเคอร์เนลในระบบ UNIX / Linux?
ฉันอยากรู้ว่ามันเป็นไปได้ไหมที่จะเปลี่ยนเมล็ดตัวอย่างเช่นแทนที่เคอร์เนล Linux ของ Fedora ไปเป็น FreeBSD ตอนนี้มีDebian GNU / kFreeBSDอยู่แล้ว เป็นไปได้ไหมที่ฉันจะปรับแต่ง distro Linux เพื่อให้มีเคอร์เนล BSD?

1
วิธีรับความเร็วการไหลของท่อโดยเฉลี่ย
หากmyfileเพิ่มขึ้นเมื่อเวลาผ่านไปฉันจะได้รับจำนวนบรรทัดต่อวินาทีโดยใช้ tail -f | pv -lr > /dev/null มันให้ความเร็วทันทีไม่ใช่ค่าเฉลี่ย ฉันจะรับความเร็วเฉลี่ยได้อย่างไร (เช่นอินทิกรัลของฟังก์ชั่นความเร็วv(t)ตลอดเวลาการตรวจสอบ)
16 pipe  monitoring  tail  fifo  pv 

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