Unix & Linux

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

4
รับการเปลี่ยนแปลงต่าง ๆ ระหว่างไฟล์ต้นฉบับที่ติดตั้งด้วย apt และไฟล์ปัจจุบัน
ผมติดตั้งphp5-fpmแพคเกจการใช้apt; ฉันทำการเปลี่ยนแปลงบางอย่างกับไฟล์การกำหนดค่า PHP ตอนนี้ฉันจะได้รับความแตกต่างระหว่างเวอร์ชันดั้งเดิมของไฟล์ (ที่ติดตั้งอยู่ในแพ็คเกจ) และเวอร์ชันปัจจุบัน (แก้ไขโดยฉัน) ทำอย่างไร?
19 ubuntu  debian  apt  diff 

1
เพิ่มความแม่นยำ% e ด้วยคำสั่ง / usr / bin / time
เมื่อฉันรันคำสั่ง time ใน shell time ./myappฉันจะได้ผลลัพธ์ดังนี้: real 0m0.668s user 0m0.112s sys 0m0.028s อย่างไรก็ตามเมื่อฉันเรียกใช้คำสั่ง\time -f %e ./myappฉันสูญเสียความแม่นยำและฉันได้รับ: 2.01s ถ้าฉันใช้%Eคำสั่งฉันก็จะสูญเสียความแม่นยำไปในทางเดียวกัน ฉันจะเปลี่ยนเพื่อให้มีความแม่นยำมากขึ้นอีกครั้งได้อย่างไร ฉันอ้างอิงงานวิจัยของฉันในคำสั่ง Linux / Unix นี้: เวลาและตามคำถามนี้
19 shell  scripting  time 

6
ฉันจะป้องกัน Windows จากการเขียนทับ GRUB เมื่อใช้เครื่องดูอัลบูตได้อย่างไร
ฉันอ่านมากเกี่ยวกับการบูทดูอัลบูตและดูเหมือนว่าง่ายเหมือนกับการโหลด Windows จากนั้นโหลด Linux ด้วย GRUB แต่ทุกคนบอกว่า Windows ชอบที่จะทิ้ง GRUB เมื่อได้รับโอกาส ขั้นตอนใดบ้างที่ฉันสามารถทำได้เพื่อป้องกันไม่ให้เกิดเหตุการณ์นี้ (นอกเหนือจากการใช้ bootloader ของ Windows ฉันต้องการทำให้มันง่ายที่สุดเท่าที่จะทำได้)

2
รับจอภาพยี่ห้อและรุ่นและข้อมูลอื่น ๆ ในรูปแบบที่มนุษย์อ่านได้
ฉันได้แยกเวอร์ชันชวเลขของจอภาพปัจจุบันที่ต่ออยู่กับคอมพิวเตอร์ออกแล้ว นี่คือตัวอย่าง: vendor "VSC", prod id "18500" ใน Ubuntu Viewsonic Corporation 16"ของการตั้งค่าการตรวจสอบก็ถูกระบุว่าเป็น ฉันจะดึงรูปแบบที่มนุษย์อ่านได้นี้ออกมาได้อย่างไร ... และฉันจะทราบได้อย่างไรว่าจอภาพเป็นCRTหรือLCDไม่? (นี่คือสิ่งที่ทำให้ฉันเริ่มภารกิจนี้ได้) รูปแบบ EDID สามารถพบได้ใน Wikipedia: Extended display identification data นี่คือรหัสที่ใช้ในการรับ EDID VendorและProduct id edid=$(xrandr -q --verbose | sed -n '/^[[:space:]]\+00ffffffffffff00/,/[^a-fA-F0-9[:space:]]/{ /[^a-fA-F0-9[:space:]]/d s/[[:space:]]\+//g; p}') nibble=({0..1}{0..1}{0..1}{0..1}) vend=$(for i in {16..19} ;do printf "%s" ${nibble[$((16#${edid:$i:1}))]} done) vend="$(for i …

3
การแนบอุปกรณ์ USB-Serial พร้อม PID ที่กำหนดเองไปยัง ttyUSB0 บนอุปกรณ์
ฉันพยายามรับอุปกรณ์ FTDI USB-Serial ที่มี PID ที่กำหนดเองเพื่อแนบ (โดยอัตโนมัติหรือด้วยตนเอง) ไปยัง ttyUSB% n โดยไม่ประสบความสำเร็จ VID / PID ปกติของอุปกรณ์คือ 0403/6001 เมื่อตั้งโปรแกรมด้วยวิธีนี้มันจะทำงานได้อย่างสมบูรณ์และแนบตัวเองกับ ttyUSB0 โดยอัตโนมัติเมื่อทำการเชื่อมต่อแม้จะมีไดรเวอร์ที่คอมไพล์ใหม่เพื่อเคารพ PID ใหม่ของเราเมื่อตั้งโปรแกรมด้วย ttyUSB0 หนึ่งที่กำหนดเองจะไม่ปรากฏขึ้น โหลดไดรเวอร์ ฉันได้เพิ่ม PID ของเราไปยังส่วนหัวและแหล่งที่มา: // in ftdi_sio_ids.h #define FTDI_CUSTOM_PID 0xABCD // not the actual pid // then in ftdi_sio.c static struct usb_device_id id_table_combined [] = { // …


4
ยูทิลิตีบรรทัดคำสั่งเพื่อให้เห็นภาพว่าไฟล์เติบโตเร็วแค่ไหน?
ฉันต้องการค้นหาว่าไฟล์ใดไฟล์หนึ่งเติบโตอย่างรวดเร็ว ฉันทำได้ watch ls -l file และอนุมานข้อมูลนี้จากอัตราการเปลี่ยนแปลง มีบางสิ่งที่คล้ายกันที่จะส่งออกอัตราการเจริญเติบโตของไฟล์ในช่วงเวลาหนึ่ง ๆ โดยตรงหรือไม่?


3
วิธีการส่งต่อพอร์ตจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่ง
พิจารณาสถานการณ์ต่อไปนี้: ที่บ้านของฉันฉันมีเราเตอร์ (ซึ่งเชื่อมต่อกับอินเทอร์เน็ต) เซิร์ฟเวอร์ (S) และเครื่องหลักของฉัน (M) S สามารถเข้าถึงได้จากอินเทอร์เน็ต (มันมี IP แบบคงที่) และมันก็ขึ้นอยู่ 24/7 ในขณะที่ M ไม่ได้เป็น บางครั้งฉันต้องการทำให้แอพบางตัว (ซึ่งฟังบนพอร์ตบางพอร์ตบน M เช่น 8888) สามารถเข้าถึงได้จากอินเทอร์เน็ตภายนอก เพื่อที่ฉันต้องการตั้งค่าบางพอร์ตใน S (2222) เพื่อส่งต่อไปยังพอร์ต M 8888 ดังนั้นใครก็ตามที่เข้าถึง S: 2222 จะรู้สึกเหมือนเขากำลังเข้าถึง M: 8888 ฉันพยายามใช้การส่งต่อพอร์ต ssh ความพยายามที่ดีที่สุดของฉันคือ: ssh -L 2222:M:8888 -N M แต่นั่นทำให้ฉันสามารถเข้าถึงพอร์ต 2222 จากเซิร์ฟเวอร์เองไม่ใช่จากเครื่องอื่น มีวิธีทำอย่างถูกต้องหรือไม่? โดยเฉพาะอย่างยิ่งฉันต้องการให้มันเป็นคำสั่งง่ายๆซึ่งฉันจะสามารถเริ่มและปิดด้วย ^ C …

5
วิธีหยุดการอัพเดตด้วงจากการสแกนไดรฟ์ทั้งหมด?
ทุกครั้งที่update-grubมีการเรียกใช้งานฮาร์ดไดรฟ์ทั้งหมดจะถูกสแกน แต่ละไดรฟ์ที่อยู่ในสถานะสแตนด์บายจะหมุนเพื่อไม่ทำงาน นี่คือการสูญเสียพลังงาน เราใช้ update-grub เวอร์ชั่น 1.98: # update-grub -v grub-mkconfig (GRUB) 1.98+20100804-14+squeeze1 การถอยหลัง มีGRUB_DISABLE_OS_PROBER=trueตัวเลือกใน/etc/default/grubไฟล์ แต่ดูเหมือนว่าจะใช้ได้เฉพาะกับรุ่น 2 ขึ้นไป อย่างน้อยก็ไม่หยุดสแกนไดรฟ์ทั้งหมดในเวอร์ชั่น 1.98 ของเรา มี/etc/grub.d/20_linux_xenสคริปต์ที่อาจทำงานเป็นส่วนหนึ่งของ update-grub หลังจากลบสิทธิ์ดำเนินการสำหรับผู้ใช้chmod a-x /etc/grub.d/20_linux_xenทั้งหมดที่มีไดรฟ์ทั้งหมดยังคงหมุน จะหยุดupdate-grubการสแกนฮาร์ดไดรฟ์แต่ละตัวได้อย่างไร
19 debian  grub 

3
echo vs <<< หรือใช้ echo ใน Bash Award อย่างไร้ประโยชน์?
โดยตอนนี้ใช้ประโยชน์ของcatรางวัลเป็นที่รู้จักกันเป็นอย่างดีและยังมีการเอ่ยถึงการใช้ประโยชน์ของecho (ไม่เกี่ยวข้องกับคำถามนี้) ฉันสงสัยว่าควรจะมี "การใช้งานไร้ประโยชน์echoในรางวัล Bash": การวางท่อดูเหมือนจะช้ากว่า heredocs และ herestrings มากตามการวัดทางวิทยาศาสตร์บางอย่าง: Heredocs: for reps in 1 2 3 do time for i in {1..1000} do cat &lt;&lt;'END' test string END done &gt; /dev/null done real 0m1.786s user 0m0.212s sys 0m0.332s real 0m1.817s user 0m0.232s sys 0m0.332s real 0m1.846s user 0m0.256s sys …

5
ฉันจะตรวจจับได้อย่างไรว่าไม่มีตัวเลือกใดถูกส่งผ่านด้วย getopts
ฉันมีรหัสนี้ - #getoptDemo.sh usage() { echo "usage: &lt;command&gt; options:&lt;w|l|h&gt;" } while getopts wlh: option do case $option in (w) name='1';; (l) name='2';; (h) name='3';; (*) usage exit;; esac done print 'hi'$name เมื่อผมทำงานbash getoptDemos.sh(ไม่มีตัวเลือก) จะพิมพ์แทนการเรียกฟังก์ชั่นhi usageมันเรียกการใช้งานเมื่อตัวเลือกอื่นนอกเหนือจาก w, h และ l จะได้รับ จากนั้นไม่สามารถใช้งานได้เมื่อไม่มีการระบุตัวเลือก ผมได้ลองใช้?, \?, :ในสถานที่ของ*แต่ฉันไม่สามารถบรรลุสิ่งที่ผมอยากจะ ผมหมายถึงทั้งหมดที่docsเกี่ยวกับการบอกว่ามันกับการใช้งานgetopt? ผมทำอะไรผิดหรือเปล่า?
19 bash  shell  options  getopts 


2
ไม่แสดงเอาต์พุตยกเว้นโค้ดออกที่ไม่ใช่ศูนย์
อะไรคือวิธีที่ดีที่สุดในการระงับเอาต์พุต (stdout และ stderr) ยกเว้นว่าโปรแกรมออกด้วยรหัสที่ไม่ใช่ศูนย์ ฉันกำลังคิด: quiet_success() { file=$(mktemp) if ! "$@" &gt; "$file" 2&gt;&amp;1; then cat "$file" fi rm -f "$file" } และวิ่งquiet_success my_long_noisy_script.shแต่ฉันไม่แน่ใจว่ามีวิธีที่ดีกว่า ฉันรู้สึกว่าสิ่งนี้จะต้องเป็นสิ่งที่คนอื่น ๆ ต้องทำ สำหรับบริบทฉันต้องการเพิ่มสคริปต์ cron ของฉันเพื่อที่ฉันจะได้รับอีเมลทุกอย่างหากพวกเขาล้มเหลว แต่ไม่ใช่ถ้าพวกเขาทำไม่ได้

3
เข้ารหัสรหัสผ่าน OfflineIMAP
ฉันกำลังพยายามตั้งค่า OfflineIMAP เพื่อรับรองความถูกต้องผ่านไฟล์ที่เข้ารหัส gpg (วิธีที่ฉันสามารถรวมการเข้ารหัสทั้งหมดของฉันกับกระบวนการตัวแทน gpg ของฉัน) ดูเหมือนว่าวิธีเดียวในการเข้ารหัสรหัสผ่านเซิร์ฟเวอร์ของคน ๆ หนึ่งคือการใช้ gnome-keyring (ซึ่งฉันไม่ต้องการให้ทำงานบนเซิร์ฟเวอร์ที่ไม่มีหัว) มีวิธีไพพ์ในรหัสผ่านของฉันจากไฟล์ gpg ในแบบที่คุณสามารถทำได้ด้วย mutt หรือไม่? ฉันรู้ว่าคุณสามารถเพิ่มฟีเจอร์พิเศษให้กับ offlineimap ด้วยไฟล์นามสกุลหลาม แต่ฉันเกรงว่าจะไม่รู้ว่าจะเริ่มจากตรงไหน

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