Unix & Linux

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

8
บันทึกหน้าจอใน X
ฉันจะบันทึกกิจกรรมทั้งหมดบนหน้าจอเป็นระยะเวลาหนึ่งได้อย่างไร ฉันรู้เกี่ยวกับเครื่องมือเช่นxwdนั้นที่จับภาพนิ่ง สามารถขยายเพื่อบันทึกวิดีโอได้หรือไม่ ฉันไม่ต้องการใช้เครื่องมือ debian แฟนซีหรือยูทิลิตี้ ImageMagick

1
วิธีการป้องกันฟังก์ชั่นทุบตีถูกแทนที่?
ในbashเปลือกเราสามารถกำหนดฟังก์ชั่นfด้วย f(){ echo Hello; } จากนั้นทำการประกาศใหม่ / แทนที่โดยไม่มีข้อผิดพลาดหรือข้อความเตือนใด ๆ ด้วย f(){ echo Bye; } ฉันเชื่อว่ามีวิธีในการปกป้องฟังก์ชั่นจากการถูกแทนที่ด้วยวิธีนี้

1
ความแตกต่างระหว่าง $ path กับ $ PATH (ตัวพิมพ์เล็กกับตัวพิมพ์ใหญ่) กับ zsh คืออะไร
ในFreeBSD 12 การใช้zshเชลล์ฉันสังเกตเห็นความแตกต่างนี้เมื่อดู$path(ตัวพิมพ์เล็ก) กับ$PATH(ตัวพิมพ์ใหญ่) echo $path / sbin / bin / usr / sbin / usr / bin / usr / local / sbin / usr / local / bin / usr / home / freebsd / bin echo $PATH sbin /: / bin: / usr / sbin: / usr …
13 zsh  variable  path  array 

1
สมมติฐานพื้นฐานของฉันเกี่ยวกับระบบ“ iowait” ไม่ได้ถือ
สมมติฐานพื้นฐานของฉันคือเมื่อกระบวนการ 'จำกัด ปัจจัยเพียงอย่างเดียวคือดิสก์และ CPU ดังนั้นการใช้งาน CPU "iowait" + ระบบทั้งหมดควรเท่ากับ 100% อย่างน้อยหนึ่งโลจิคัล CPU (ในกรณีอื่น ๆ สิ่งนี้จะไม่ถูกเก็บไว้เช่นเมื่อดาวน์โหลดไฟล์โดยใช้wgetเครือข่ายมักเป็นปัจจัย จำกัด ) สมมติฐานนี้ถูกละเมิดโดยการทดสอบอย่างง่าย คาดหวังหรือไม่ หากคาดว่าจะมีเงื่อนไขใดบ้างที่ฉันควรคาดว่าการสันนิษฐานของฉันจะเป็นจริงหรือไม่? มีพื้นหลังเกี่ยวกับ "iowait" อยู่ที่นี่: CPU รู้ได้อย่างไรว่ามี IO ค้างอยู่ คำตอบที่นี่เป็นการเสนอราคาแนวคิดแบบตอบโต้ง่าย ๆ ว่าไอโออิทแบบสะสม "อาจลดลงในเงื่อนไขบางประการ" ฉันสงสัยว่าการทดสอบอย่างง่ายของฉันสามารถเปิดใช้งานเงื่อนไขที่ไม่มีเอกสารหรือไม่? UPDATE : กรุณาข้ามไปที่คำตอบ คำตอบมีการทดสอบที่ง่ายกว่าที่ฉันเคยใช้ ฉันเก็บคำถามเดิมไว้ด้านล่าง คำถามเดิมอาจแสดงรายละเอียดเพิ่มเติมบางอย่าง คำถามเดิม ในการทดสอบสั้น ๆ ฉันใช้ddเพื่อขอเคอร์เนลเพื่อสร้างไบต์แบบสุ่มและเขียนลงในไฟล์ ฉันรันddคำสั่งด้านในperf statเพื่อรับจำนวนเวลา CPU ที่ใช้ภายในเคอร์เนล ฉันก็วิ่งเข้าไปข้างในperf trace -sเพื่อรายงานเวลาที่ใช้write()ไป ในเวลาเดียวกันฉันทำงานvmstat …
13 linux 

3
regex ที่ถูกต้องไม่ทำงานใน grep
ฉันมี regex นี้: (?<=prefix).*$ ซึ่งส่งกลับอักขระใด ๆ ต่อไปนี้สตริง "คำนำหน้า" และทำงานได้ดีกับเอ็นจิน regex ออนไลน์ใด ๆ (เช่นhttps://regex101.com ) ปัญหาคือเมื่อฉันใช้ regex นั้นใน bash: grep '(?<=prefix).*$' <<< prefixSTRING มันไม่ตรงกับอะไรเลย ทำไม regex ไม่ทำงานกับ grep

2
`/ dev / console` ใช้ทำอะไร?
จากคำตอบนี้ถึงLinux: ความแตกต่างระหว่าง / dev / console, / dev / tty และ / dev / tty0 จาก เอกสารประกอบ : /dev/tty Current TTY device /dev/console System console /dev/tty0 Current virtual console ในสมัยก่อน/dev/consoleเป็นคอนโซลผู้ดูแลระบบ และ TTY เป็นอุปกรณ์อนุกรมของผู้ใช้ที่เชื่อมต่อกับเซิร์ฟเวอร์ ตอนนี้ /dev/consoleและ/dev/tty0แสดงการแสดงผลปัจจุบันและมักจะเหมือนกัน คุณสามารถแทนที่มันตัวอย่างเช่นโดยการเพิ่ม การconsole=ttyS0 grub.confหลังจากนั้นของคุณ/dev/tty0คือการตรวจสอบและเป็น/dev/console/dev/ttyS0 โดย " System console " /dev/consoleดูเหมือนว่าไฟล์อุปกรณ์ของเทอร์มินัลฟิสิคัลข้อความเหมือนกับ/dev/tty{1..63}ไฟล์อุปกรณ์สำหรับคอนโซลเสมือน โดย " /dev/consoleและ/dev/tty0เป็นตัวแทนของการแสดงผลในปัจจุบันและมักจะเหมือนกัน" /dev/consoleดูเหมือนว่าฉันยังสามารถเป็นไฟล์อุปกรณ์ของคอนโซลเสมือน /dev/consoleดูเหมือนเป็น/dev/tty0มากกว่า/dev/tty{1..63}( เช่น/dev/tty0เป็นคอนโซลเสมือนที่ใช้งานอยู่ในปัจจุบันและสามารถเป็นได้/dev/tty{1..63}) …
13 linux  ubuntu  tty  console  pts 

3
การลบอักขระที่ไม่ใช่แบบ ASCII ทั้งหมดออกจากเวิร์กโฟลว์ (ไฟล์)
ฉันจะลบอักขระที่ไม่ใช่ ASCII ทั้งหมดออกจากไฟล์เดียวได้อย่างไร จะมีคำสั่งเฉพาะให้ทำสิ่งนี้หรือไม่? grep --colour='auto' -P -n'[^\x00-\x7]' /usr/local/... ฉันเชื่อว่าสิ่งนี้จะค้นหาอักขระภายในเวิร์กโฟลว์ แต่ฉันจะลบอินสแตนซ์ทั้งหมดของอักขระที่สงสัยได้อย่างไร

2
Netcat - วิธีการฟังพอร์ต TCP โดยใช้ที่อยู่ IPv6
ฉันใช้ netcat รุ่นล่าสุด ( v1.10-41.1) ซึ่งดูเหมือนจะไม่มีตัวเลือกสำหรับที่อยู่ IPv6 (เหมือน-6ในรุ่นที่เก่ากว่าnc) หากฉันพิมพ์nc -lvnp 2222และตรวจสอบพอร์ตการฟังด้วยnetstat -puntaเซิร์ฟเวอร์ดูเหมือนว่าจะฟังบนพอร์ต2222สำหรับที่อยู่ IPv4 เท่านั้น: tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 2839/nc tcp6 ไม่ทำงานเช่นเซิร์ฟเวอร์ apache2 ของฉัน: tcp6 0 0 :::80 :::* LISTEN -
13 linux  netcat 

2
ใช้ตัวเลือกไฟล์สำรองเป็น mutt
ในmuttเป็นไปได้ไหมที่จะใช้เบราว์เซอร์ไฟล์เช่นvifmหรือranger (อาจแบ่งเป็นtmux ) แทนที่จะเป็นเบราว์เซอร์ไฟล์เริ่มต้นเพื่อเลือกไฟล์ที่จะแนบกับอีเมล
13 mutt 

1
bash Extended glob - จับคู่ไฟล์โดยไม่มีคำนำหน้า
ฉันพยายามจับคู่ชื่อไฟล์สำหรับคุก fail2ban ดังนั้นฉันจึงต้องใช้ชื่อไฟล์กลม ๆ เท่านั้น - ไม่ใช่ regexes หรือ bash scripting /var/log/apache2ไดเรกทอรีของฉันมีไฟล์รวมถึง: example.com.error.log db.example.com.error.log app1.example.com.error.log app2.example.com.error.log ฉันพยายามที่จะสร้าง glob เพื่อให้ตรงกับไฟล์ทั้งหมดที่ลงท้ายด้วย.error.log ยกเว้น db.example.error.log - นี้เป็นไปได้หรือไม่ ฉันได้พยายามแต่ยังคงตรงกับ!(db)*.error.log db.example.com.error.logฉันคาดเดาว่าการ!()จับคู่ไม่มีตัวละครทำให้การ*จับคู่จากจุดเริ่มต้นของชื่อไฟล์ หมายเหตุ: ฉันไม่ต้องการขยาย glob เมื่อเพิ่มappXไฟล์บันทึกใหม่ดังนั้นฉันไม่สามารถใช้@()กับรายการชื่อไฟล์ที่ไม่ใช่ db ที่รู้จักในปัจจุบัน (พื้นหลัง: ฉันต้องการสร้างตัวกรองห้ามใครก็ตามที่ขอ phpMyAdmin URL ใด ๆ ในโดเมนใด ๆยกเว้น db.example.com)

3
ตัวเลือกที่เกี่ยวข้อง. ssh / config คืออะไรสำหรับ ssh -N
ฉันต้องการตั้งค่านามแฝงในไฟล์กำหนดค่าของฉันที่มีผลลัพธ์เหมือนกับคำสั่งนี้: ssh -N devdb -L 1234:127.0.0.1:1234 รายการ. ssh / config ของฉันสำหรับdevdb: Host devdb User someuser HostName the_hostname LocalForward 1234 127.0.0.1:1234 ฉันจะใส่อะไรในการตั้งค่าด้านบนเพื่อไม่เริ่มเชลล์?
13 ssh  ssh-config 

4
เหตุใดระบบจึงไม่แก้ไขให้ใช้เซิร์ฟเวอร์ DNS ในเครื่องของฉัน
ฉันใช้เซิร์ฟเวอร์ BIND9 ในพื้นที่เพื่อโฮสต์ระเบียน DNS ท้องถิ่น เมื่อพยายามขุดหาชื่อโดเมนในพื้นที่ฉันไม่สามารถค้นหาได้หากฉันไม่ได้บอกให้ขุดใช้เซิร์ฟเวอร์ BIND9 ในพื้นที่ของฉันอย่างชัดเจน user@heimdal:~$ dig +short heimdal.lan.se user@heimdal:~$ dig +short @192.168.1.7 heimdal.lan.se 192.168.1.2 ใช้ Ubuntu 17.04 และแก้ไขระบบได้ นี่คือเนื้อหาของ / etc / ของฉันที่ได้รับการแก้ไข # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE …


3
Bash ถ้าคำสั่งไม่เสร็จในเวลา X
ฉันพยายามเรียกใช้บางอย่างเช่น: sudo dhclient $wifi || otherFunction ปัญหาคือเมื่อdhclientล้มเหลวมันแค่แฮงค์แทนที่จะทิ้งข้อผิดพลาด ฉันจะเขียนใหม่ข้างต้นเพื่อให้dhclientถูกฆ่าและotherFunctionได้รับการเรียกถ้าdhclientไม่เสร็จใน 60 วินาที?
13 bash  timeout 

1
เพิ่ม slash ต่อท้ายทำไมหลังจากปลายทาง rsync
ตามนี้หน้าเว็บเพิ่ม '/' ที่ส่วนท้ายของปลายทาง rsync ผลิตผลที่แตกต่างกันจากการไม่ได้เพิ่ม ฉันพยายามทดสอบสิ่งนี้ แต่ฉันไม่สามารถยืนยันได้: $ mkdir dir{1..3} $ touch dir1/file $ rsync -r dir1/ dir2 $ rsync -r dir1/ dir3/ $ ls dir* dir1: file dir2: file dir3: file การต่อท้าย '/' ต่อท้ายปลายทางใช้งานได้จริงหรือไม่?
13 rsync 

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