Unix & Linux

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

5
ไฟล์ข้อความนับล้าน (เล็ก) ในโฟลเดอร์
เราต้องการจัดเก็บไฟล์ข้อความหลายล้านไฟล์ในระบบไฟล์ลินุกซ์โดยมีวัตถุประสงค์เพื่อให้สามารถซิปขึ้นและให้บริการคอลเลกชันโดยพลการเป็นบริการ เราได้ลองใช้วิธีแก้ไขปัญหาอื่น ๆ เช่นฐานข้อมูลคีย์ / ค่า แต่ข้อกำหนดของเราสำหรับการทำงานพร้อมกันและความเท่าเทียมทำให้การใช้ระบบไฟล์ดั้งเดิมเป็นทางเลือกที่ดีที่สุด วิธีที่ตรงไปตรงมาที่สุดคือการจัดเก็บไฟล์ทั้งหมดในโฟลเดอร์: $ ls text_files/ 1.txt 2.txt 3.txt ซึ่งควรจะเป็นไปได้ในระบบไฟล์ EXT4ซึ่งไม่ จำกัด จำนวนไฟล์ในโฟลเดอร์ กระบวนการ FS ทั้งสองจะเป็น: เขียนไฟล์ข้อความจากเว็บขูด (ไม่ควรได้รับผลกระทบจากจำนวนไฟล์ในโฟลเดอร์) ซิปไฟล์ที่เลือกกำหนดโดยรายการชื่อไฟล์ คำถามของฉันคือการจัดเก็บไฟล์ได้มากถึงสิบล้านไฟล์ในโฟลเดอร์จะส่งผลต่อประสิทธิภาพของการดำเนินการข้างต้นหรือประสิทธิภาพของระบบทั่วไปแตกต่างจากการสร้างแผนผังย่อยสำหรับไฟล์ที่จะใช้งาน

1
bash-static ใช้ทำอะไร?
วัตถุประสงค์ของการทุบตีคงที่เมื่อเทียบกับทุบตีปกติคืออะไร? มันดีเหมือนเปลือกกู้ภัยหรือดีหรือเปล่า?

6
ทำไม Debian ถึงไม่มีไฟร์วอลล์เปิดใช้งานเป็นค่าเริ่มต้น
ฉันใช้ Debian 9.1 กับ KDE และฉันสงสัยว่าทำไมมันถึงไม่มีการติดตั้งไฟร์วอลล์และเปิดใช้งานโดยค่าเริ่มต้น gufw ไม่ได้อยู่ในแพ็คเกจของ DVD1 คาดว่าคนจะเชื่อมต่ออินเทอร์เน็ตก่อนรับไฟร์วอลล์หรือไม่ ทำไม? แม้ว่าพอร์ตทั้งหมดจะถูกปิดโดยค่าเริ่มต้นต่าง ๆ ที่ติดตั้งการปรับปรุงหรือดาวน์โหลดโปรแกรมสามารถเปิดพวกเขา (หรือไม่?) และฉันต้องการไม่ได้แม้แต่เพียงเล็กน้อยจากเครื่องของฉันโดยไม่ได้รับอนุญาต แก้ไข: ดังนั้นฉันเพิ่งค้นพบเกี่ยวกับiptablesแต่ฉันเดาว่าคำถามนั้นยังคงเป็น iptables เนื่องจากไฟร์วอลล์ดูเหมือนจะไม่เป็นที่รู้จักมากที่สุดกฎเริ่มต้นความสามารถในการเข้าถึงและความสะดวกในการใช้งานและความจริงที่ว่าโดยค่าเริ่มต้น ที่เริ่มต้นใหม่

1
dot dot (.. ) คืออะไร? ทำไมพฤติกรรมของมันจึงแตกต่างจาก symlink?
ฉันพยายามที่จะเข้าใจธรรมชาติของ..(สองจุด) ดูเหมือนว่าจะชี้ไปยังเป้าหมายที่แตกต่างกันขึ้นอยู่กับว่าคุณเข้าถึงมันอย่างไร ตัวอย่าง:- /outer/ middle/ inner/ inner --> ./middle/inner/ ตอนนี้/outer/middle/inner/..นำไปสู่การ/outer/middle/แต่ถ้าฉันเข้าถึงได้ผ่านการเชื่อมโยงสัญลักษณ์นำไปสู่/outer/inner/.. /outer/ดูเหมือนว่ามีสองที่แตกต่างกัน..ที่นี่ อะไร..กันแน่ ลิงก์สัญลักษณ์? ลิงค์ยาก? หรือมันสร้างแบบไดนามิกขึ้นอยู่กับเส้นทางเมื่อเข้าถึงไดเรกทอรีหรือไม่ หรือบางทีความเข้าใจของฉันเกี่ยวกับลิงก์สัญลักษณ์นั้นไม่ถูกต้อง แก้ไข: การสังเกตอื่น ๆ ที่เกี่ยวข้อง /outer/ middle/ file inner/ f --> ./../file inner --> ./middle/inner/ ตอนนี้ถ้าฉันพยายามเข้าถึงไฟล์ผ่าน/outer/inner/fมันใช้งานได้ แต่มันไม่ควรเนื่องจาก/outer/inner/../fileไม่ได้ชี้ไปที่ไฟล์ /outer/middle/inner/..ไฟล์ที่อยู่ใน สิ่งนี้ดูเหมือนจะขัดแย้งกับพฤติกรรมข้างต้น!

1
ฉันจะแสดงรายการข้อความในกล่องจดหมายของฉันได้อย่างไร
ใช้mailคำสั่งมันแสดงข้อความที่ฉันมีและวางฉันลงในพรอมต์ แต่ฉันไม่สามารถคิดวิธีการแสดงรายการข้อความ นี่คือหน้าจอความช่วยเหลือสำหรับอีเมล: Mail Command Description ------------------------- --------------------------------------------- t [message list] type messages(s). more [message list] read message(s), through the $PAGER n goto and type next message. e [message list] edit message(s) f [message list] give head lines of messages. d [message list] delete message(s). s [message list] <file> append …

8
เปลี่ยนบรรทัดแยกเป็นรายการคั่นด้วยเครื่องหมายจุลภาคด้วยรายการที่ยกมา
ฉันมีข้อมูลต่อไปนี้ (รายการแพ็กเกจ R แยกวิเคราะห์จากไฟล์ Rmarkdown) ที่ฉันต้องการเปลี่ยนเป็นรายการที่ฉันสามารถส่งไปยัง R เพื่อติดตั้ง: d3heatmap data.table ggplot2 htmltools htmlwidgets metricsgraphics networkD3 plotly reshape2 scales stringr ฉันต้องการเปลี่ยนรายการเป็นรายการของแบบฟอร์ม: 'd3heatmap', 'data.table', 'ggplot2', 'htmltools', 'htmlwidgets', 'metricsgraphics', 'networkD3', 'plotly', 'reshape2', 'scales', 'stringr' ขณะนี้ฉันมีไพพ์ไลน์ที่ไปจากไฟล์ raw ไปยังรายการด้านบน: grep 'library(' Presentation.Rmd \ | grep -v '#' \ | cut -f2 -d\( \ | tr …
15 linux  sed  csv  tr 

5
วิธีเปลี่ยนเค้าโครงแป้นพิมพ์ใน gnome 3 จากบรรทัดคำสั่ง
ฉันใช้ gnome 3.22.1 แต่มีปัญหาอยู่ตั้งแต่ 3.18 ก่อนหน้านั้น (จำรุ่นที่แน่นอนไม่ได้) ฉันสามารถเปลี่ยนรูปแบบแป้นพิมพ์โดยใช้xkb-witchแอปพลิเคชั่นที่เรียบง่ายที่ใช้การผูก X.org ภายใต้ฝากระโปรง หลังจาก 3.18 หากคุณเรียกใช้ xkb-switch รูปแบบแป้นพิมพ์จะไม่ถูกเปลี่ยนเป็น gnome การตรวจสอบเพิ่มเติมแสดงให้เห็นว่าการสลับเค้าโครงทำงานได้ แต่ใช้เวลาไม่นาน หากคุณเรียกใช้สคริปต์นี้: for i in $(seq 1000); do lang=$(xkb-switch -s ru; xkb-switch); if [[ "$lang" == "ru" ]]; then echo $lang; fi; done คุณจะได้รับการสลับเลย์เอาต์ "successfull" 3 ถึง 20 ทั้งนี้ขึ้นอยู่กับว่าคุณโชคดีแค่ไหน หลังจาก googling ปัญหานี้ฉันแนะนำต่อไปนี้: gsettings …

3
ฉันจะส่งออก“ กระจาย” ไฟล์ได้อย่างไร
ฉันจะส่งออกขนาดข้อมูลระบุขนาดไฟล์ที่เต็มไปด้วยข้อมูลจริงได้อย่างไร กด Like vmtouchแสดงจำนวนไฟล์ในหน่วยความจำในปัจจุบัน ... ฉันคาดว่าเวิร์กโฟลว์จะเป็นเช่นนี้: $ fallocate -l 1000000 data $ measure_sparseness data 100% $ fallocate -p -o 250000 -l 500000 data $ measure_sparseness 50% การแก้ปัญหา: การใช้งานdu -bshและdu -shและเปรียบเทียบ

4
รับความกว้างคอนโซลโดยใช้สคริปต์ทุบตี
ฉันพบปัญหาที่ฉันพยายามเพิ่มขนาดของเทอร์มินัลโดยใช้สคริปต์ โดยปกติแล้วฉันจะใช้คำสั่งtput colsภายในคอนโซล แต่ฉันต้องการที่จะสามารถบรรลุคุณสมบัตินี้โดยใช้สคริปต์อย่างเคร่งครัด ณ ตอนนี้ฉันสามารถตรวจจับคอนโซลการทำงานและรับเส้นทางไฟล์ของมันได้ อย่างไรก็ตามฉันพยายามที่จะใช้ข้อมูลนี้เพื่อให้ได้ความกว้างของคอนโซล ฉันพยายามใช้คำสั่งtputแต่ฉันค่อนข้างใหม่สำหรับ Linux / สคริปต์ดังนั้นจึงไม่รู้จริงๆว่าต้องทำอย่างไร เหตุผลในการทำเช่นนี้คือฉันต้องการที่จะสามารถตั้งค่ารายการcronที่แจ้งคอนโซลของความกว้าง / คอลัมน์ทุกครั้ง นี่คือรหัสของฉัน: tty.sh #!/bin/bash #Get PID of terminal #terminal.txt holds most recent PID of console in use value=$(</home/test/Documents/terminal.txt) #Get tty using the PID from terminal.txt TERMINAL="$(ps h -p $value -o tty)" echo $TERMINAL #Use tty to get …

2
ชื่อโฮสต์เปลี่ยนจากระยะไกลด้วย wifi หรือไม่
ขณะนี้ฉันกำลังเยี่ยมชม TU Wien และวันนี้ฉันเชื่อมต่อแล็ปท็อป Debian Linux ของฉันกับ eduroam wlan ที่ใช้wpa_supplicantและข้อมูลประจำตัวของสถาบันที่บ้านของฉัน - เช่นเคยเมื่อฉันไปเยี่ยมสถาบันวิทยาศาสตร์อื่น เมื่อผมเปิดสถานีผมสังเกตเห็นว่า Promt คำสั่งของฉันคือการแสดงชื่อโฮสต์ที่แตกต่างกันและในความเป็นจริง excecuting hostnameให้ฉันแทนชื่อโฮสต์ปกติของเครื่องของฉันe244-082.eduroam.tuwien.ac.atx301 ฉันงงมากกับสิ่งนี้ เป็นไปได้อย่างไรที่การเชื่อมต่อ wlan จะเปลี่ยนชื่อโฮสต์โดยไม่ได้รับความยินยอมจากฉัน?

5
รับความกว้างการแสดงผลของสตริงอักขระ
สิ่งที่ใกล้เคียงที่สุดกับวิธีพกพาเพื่อให้ได้ความกว้างในการแสดงผล (บนเทอร์มินัลอย่างน้อยหนึ่งตัวที่แสดงอักขระในโลแคลปัจจุบันที่มีความกว้างที่ถูกต้อง) ของสตริงอักขระจากสคริปต์เชลล์ ฉันสนใจในความกว้างของตัวละครที่ไม่ได้ควบคุมเป็นหลัก แต่โซลูชั่นที่คำนึงถึงตัวควบคุมบัญชีเช่น backspace, carriage return, tabulation ในแนวนอนก็ยินดีเช่นกัน กล่าวอีกนัยหนึ่งฉันกำลังมองหาshell API รอบwcswidth()ฟังก์ชัน POSIX คำสั่งนั้นควรกลับมา: $ that-command 'unix' # 4 fullwidth characters 8 $ that-command 'Stéphane' # 9 characters, one of which zero-width 8 $ that-command 'もで 諤奯ゞ' # 5 double-width Japanese characters and a space 11 หนึ่งสามารถใช้ksh93's printf '%<n>Ls'ที่คำนึงถึงความกว้างตัวอักษรสำหรับการขยายไปยัง<n>คอลัมน์หรือcolคำสั่ง …

1
ตั้งค่า WorkingDirectory โดยใช้ตัวแปร
ฉันจะตั้งค่า Service WorkingDirectory โดยใช้ตัวแปรสภาพแวดล้อมได้อย่างไร นี่คือตัวอย่างการกำหนดค่าบริการ: [Service] Environment=MYWORKINGDIR=/tmp WorkingDirectory=${MYWORKINGDIR} not an absolute pathนี้จะสร้างข้อผิดพลาดตามสายของ การเพิ่มเครื่องหมายสแลชไปที่จุดเริ่มต้น "แก้ไข" ข้อผิดพลาดนั้น แต่ไม่พบพา ธ : [Service] Environment=MYWORKINGDIR=/tmp WorkingDirectory=/${MYWORKINGDIR} เป็นไปได้ไหม เอกสารไม่ชัดเจนว่าคำสั่งใดสามารถ / ไม่สามารถใช้ตัวแปร env http://www.freedesktop.org/software/systemd/man/systemd.exec.html
15 systemd 

3
เมานต์ไดรฟ์ google บนบรรทัดคำสั่งโดยใช้ gvfs-google
เมื่อเร็ว ๆ นี้ Arch linux จัดส่งแพ็คเกจ gvfs-googleเพื่อติดตั้ง Google Drive โดยใช้บัญชี Gnome Online ( gvfs-goa ) อย่างไรก็ตามเนื่องจากฉันใช้เดสก์ท็อป Cinnamon มากกว่า Gnome ดูเหมือนว่าการรวมนี้จะไม่ทำงานอย่างถูกต้อง ณ ตอนนี้ผมใช้ในการซิงค์ Google ไดรฟ์ด้วยตนเองโดยใช้ไดรฟ์ มีวิธีการติดตั้ง Google Drive โดยใช้ gvfs-google ในบรรทัดคำสั่งหรือไม่

1
`set -e` และ` grep` idiom เพื่อป้องกันการออกจาก shell script ก่อนเมื่อไม่พบ pattern
ต้องการความช่วยเหลือ - ในบริบทของเชลล์สคริปต์บน GNU / LINUX ทุบตี: set -eฉันมักจะใช้ บ่อยครั้งที่ฉันต้องการgrepและไม่ต้องการให้สคริปต์ยุติการทำงานหากgrepมีสถานะออกจากการ1ระบุรูปแบบที่ไม่พบ บางครั้งฉันได้พยายามที่จะแก้ปัญหานี้มีดังนี้: (ลองฉัน) ถ้าset +o pipefailและเรียก grep ด้วยบางอย่างเช่นนี้grep 'p' | wc -lฉันจะได้รับพฤติกรรมที่ต้องการจนกว่าผู้ดูแลในอนาคตจะเปิดpipefailใช้งาน นอกจากนี้ฉันชอบเปิดใช้งานpipefailสิ่งนี้ไม่ได้ผลสำหรับฉัน (ลอง II) ใช้รูปแบบการจับคู่ลายเส้นและsedหรือawkเท่านั้นจากนั้นwcจับคู่บรรทัดเพื่อทดสอบรูปแบบที่ตรงกัน ฉันไม่ชอบตัวเลือกนี้เพราะใช้sedจะgrepดูเหมือนว่าวิธีแก้ปัญหาสำหรับปัญหาที่แท้จริงของฉัน (ลอง III) อัน นี้เป็นรายการโปรดของฉัน - สิ่งที่ชอบ:set +e; grep 'p'; set-e ความเข้าใจ / สำนวนใด ๆ ที่จะได้รับการชื่นชมมากที่สุด - ขอบคุณ
15 bash  grep  gnu  coreutils 

7
ทำไม systemd-udev pegging CPU ของฉัน?
ฉันสังเกตเห็นว่าหนึ่งในแกนหลักของแล็ปท็อปสี่คอร์ได้รับการตรึงและอุณหภูมิสูงมาก ฉันพบสิ่งนี้ในtop: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 359 root 20 0 188684 147228 1552 R 99.4 5.0 111:19.91 systemd-udevd 20011 root 20 0 188320 147604 2076 S 11.0 5.0 0:00.33 systemd-udevd 11053 dotanco+ 20 0 3030036 918672 49608 S 9.6 31.2 280:40.65 firefox …

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