Unix & Linux

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

3
วิธีลดขนาดของ initrd เมื่อรวบรวมเคอร์เนลของคุณ?
เมื่อฉันรวบรวมเคอร์เนลของตัวเองโดยทั่วไปสิ่งที่ฉันทำคือต่อไปนี้: ฉันดาวน์โหลดแหล่งข้อมูลจาก www.kernel.org และคลายการบีบอัด ฉันคัดลอกก่อนหน้าของฉัน.configไปยังแหล่งที่มาและทำmake menuconfigเพื่อดูตัวเลือกใหม่และปรับเปลี่ยนการกำหนดค่าตามนโยบายใหม่ของเคอร์เนล จากนั้นฉันรวบรวมมัน make -j 4 su -c 'make modules_install && make install'สุดท้ายผมติดตั้ง: หลังจากการทดสอบไม่กี่ครั้งฉันก็ถอดเคอร์เนลเก่า (จาก/bootและ/lib/modules) ออกและรันอย่างเต็มที่ด้วยอันใหม่ (ขั้นตอนสุดท้ายนี้ช่วยชีวิตฉันหลายครั้ง! มันเป็นเคล็ดลับระดับมืออาชีพ !) ปัญหาคือว่าฉันมักจะได้รับ/boot/initrd.img-4.x.xซึ่งมีขนาดใหญ่เมื่อเทียบกับคนที่มาจากการกระจายของฉัน นี่คือเนื้อหาของ/boot/ไดเรกทอรีปัจจุบันของฉันเป็นตัวอย่าง: # ls -alFh total 243M drwxr-xr-x 5 root root 4.0K Mar 16 21:26 ./ drwxr-xr-x 25 root root 4.0K Feb 25 09:28 ../ -rw-r--r-- 1 …

4
วิธีการติดตั้ง executables
บางครั้งฉันพบซอฟต์แวร์ที่ไม่มีใน.debหรือ.rpmเป็นเพียงไฟล์ปฏิบัติการ ยกตัวอย่างเช่นVisual Studio รหัส , WebStormหรือKerbal อวกาศ Programm สำหรับคำถามนี้ฉันจะใช้ Visual Studio Code เป็นจุดอ้างอิง ซอฟต์แวร์มีให้ในรูปแบบแพ็คเกจซิป เมื่อขยายไฟล์ฉันทิ้งให้อยู่กับโฟลเดอร์ที่เรียกว่าที่มีการปฏิบัติการที่มีชื่อว่าVSCode-linux-x64 ฉันสามารถดับเบิลคลิกหรือชี้ไปที่จุดนั้นด้วยเทอร์มินัลของฉันเพื่อเรียกใช้งาน อย่างไรก็ตามฉันต้องการทราบว่ามีวิธีที่เหมาะสมในการติดตั้งแอปพลิเคชันนี้หรือไม่ CodeCode/home/user/Downloads/VSCode-linux-x64/Code สิ่งที่ฉันต้องการบรรลุคือ: ที่เดียวที่ฉันสามารถใส่แอพพลิเคชั่น / ซอฟต์แวร์ทั้งหมดที่มีให้ในลักษณะนี้ (ปฏิบัติการ) การสนับสนุนเทอร์มินัล (นั่นหมายถึงตัวอย่างเช่น: ฉันสามารถเขียนvscodeจากโฟลเดอร์ใด ๆ ในเทอร์มินัลของฉันและมันจะรัน Visual Studio Code ข้อมูลเพิ่มเติม: สภาพแวดล้อมเดสก์ทอป: Gnome3 ระบบปฏิบัติการ: Debian แก้ไข: ฉันตัดสินใจที่จะให้ @kba คำตอบเพราะวิธีการของเขาทำงานได้ดีขึ้นด้วยโซลูชั่นสำรองของฉันและนอกจากนั้น การมีสคริปต์ที่ใช้งานไบนารีจะช่วยให้คุณสามารถเพิ่มอาร์กิวเมนต์ได้ แต่เพื่อความยุติธรรมวิธีการของ @John WH Smith นั้นดีเท่ากับ @ kba's

4
ส่งต่อพอร์ตไปยังแอปพลิเคชันในเนมสเปซเครือข่ายด้วย vpn
ฉันสามารถตั้งค่าเนมสเปซเครือข่ายสร้างช่องทางด้วย openvpn และเริ่มแอปพลิเคชันที่ใช้ช่องทางนี้ภายในเนมสเปซ จนถึงตอนนี้ดีมาก แต่แอปพลิเคชันนี้สามารถเข้าถึงได้ผ่านเว็บอินเตอร์เฟสและฉันไม่สามารถหาวิธีกำหนดเส้นทางคำขอไปยังเว็บอินเตอร์เฟสภายใน LAN ของฉัน ฉันทำตามคำแนะนำจาก @schnouki อธิบายวิธีตั้งค่าเนมสเปซเครือข่ายและเรียกใช้ OpenVPN ภายใน ip netns add myvpn ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo ip netns exec myvpn ip link set lo up ip link add vpn0 type veth peer name vpn1 ip link set vpn0 up ip …

3
WiFi: `iw reg US 'ไม่มีผล
ในกระบวนการของการพยายามวินิจฉัยดรอปดาวน์ WiFi ฉันพบว่าโดเมนข้อบังคับในอินเทอร์เฟซ WiFi ของฉันถูกตั้งค่าเป็น "โลก" (00) และการเปลี่ยนเป็นภูมิภาคของฉัน (สหรัฐอเมริกา) ควรช่วยแก้ไขปัญหา อย่างไรก็ตามความพยายามทุกอย่างที่ฉันทำไปนั้นถูกเพิกเฉย การวิ่งiw reg set USไม่มีผลชัดเจน: $ iw reg get country 00: DFS-UNSET (2402 - 2472 @ 40), (6, 20), (N/A) (2457 - 2482 @ 40), (6, 20), (N/A), PASSIVE-SCAN (2474 - 2494 @ 20), (6, 20), (N/A), NO-OFDM, PASSIVE-SCAN (5170 …
13 wifi 

2
อักขระชื่อฟังก์ชันที่ถูกต้องของเชลล์
การใช้อักขระ Unicode แบบขยาย (ไม่มีข้อสงสัย) มีประโยชน์สำหรับผู้ใช้หลายคน เชลล์ที่ง่ายกว่า (ash (busybox), dash) และ ksh ล้มเหลวด้วย: tést() { echo 34; } tést แต่bash , mksh , lkshและzshดูเหมือนจะอนุญาต ฉันทราบว่าชื่อฟังก์ชันที่ถูกต้อง POSIX ใช้นิยามของชื่อนี้ นั่นหมายถึง regex นี้: [a-zA-Z_][a-zA-Z0-9_]* อย่างไรก็ตามในลิงค์แรกมันยังกล่าวว่า: การใช้งานอาจอนุญาตให้ตัวละครอื่น ๆ ในชื่อฟังก์ชั่นเป็นส่วนขยาย คำถามคือ: สิ่งนี้ได้รับการยอมรับและจัดทำเป็นเอกสารหรือไม่? ที่ไหน? เปลือกหอยไหน (ถ้ามี)? คำถามที่เกี่ยวข้อง: เป็นไปได้ใช้อักขระพิเศษในชื่อฟังก์ชันเปลือก? ฉันไม่สนใจที่จะใช้เมตาอักขระ (>) ในชื่อฟังก์ชัน ชื่อฟังก์ชันพุ่งพรวดและทุบตีที่มี“ -” ฉันไม่เชื่อว่าตัวดำเนินการ (การลบ "-") ควรเป็นส่วนหนึ่งของชื่อ
13 bash  shell  zsh  function 

1
จะรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ซ็อกเก็ตได้อย่างไร
สำหรับไฟล์ซ็อกเก็ตชอบสิ่งนี้: # ls -alti socket 14112 srw------- 1 root root 0 Nov 15 20:03 socket # cat socket cat: socket: No such device or address เนื่องจากcatคำสั่งไม่มีประโยชน์ที่นี่มีวิธีใดที่จะได้รับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ซ็อกเก็ต? เช่นพอร์ตที่ฟังอยู่? เป็นต้น

5
วิธีดึงข้อมูลจากไฟล์ JSON
ฉันมีช่องค้นหาคำตอบสำหรับคำถามของฉัน แต่ไม่พบหรือดีกว่าบอกว่าฉันไม่ได้รับสิ่งที่ฉันพบ ดังนั้นให้พูดคุยเกี่ยวกับสิ่งที่เป็นปัญหาของฉัน ฉันกำลังใช้ซอฟต์แวร์ควบคุมสมาร์ทโฮมกับ Raspberry Pi และเมื่อฉันพบว่าเมื่อสุดสัปดาห์นี้ด้วยการรับ pilight ฉันสามารถจับข้อมูลจากเซ็นเซอร์วัดอุณหภูมิภายนอกของฉันได้ ผลลัพธ์ของการได้รับ pilight ดูเหมือนว่า: { "message": { "id": 4095, "temperature": 409.5 }, "origin": "receiver", "protocol": "alecto_wsd17", "uuid": "0000-b8-27-eb-0f3db7", "repeats": 3 } { "message": { "id": 1490, "temperature": 25.1, "humidity": 40.0, "battery": 1 }, "origin": "receiver", "protocol": "alecto_ws1700", "uuid": "0000-b8-27-eb-0f3db7", "repeats": 3 } …

4
mkdir -p ปลอดภัยอย่างสิ้นเชิงเมื่อสร้างโฟลเดอร์แล้ว
พูดว่าฉันมีโฟลเดอร์: ./folder/ ข้างในนั้นมีไฟล์จำนวนมากและแม้กระทั่งไดเรกทอรีย่อย เมื่อฉันรัน: mkdir -p folder ฉันจะไม่เห็นข้อผิดพลาดแม้แต่คำเตือน ดังนั้นเพียงแค่ต้องการยืนยันมีอะไรหายไปหรือเปลี่ยนแปลงในคำสั่งนี้หรือไม่?
13 mkdir 

2
มีวิธีรับ url จากแท็บปัจจุบันใน google-chrome หรือไม่?
ฉันเคยทำเช่นนั้นกับ firefox โดยใช้คำสั่ง python แต่เมื่อเร็ว ๆ นี้มีบางสิ่งเปลี่ยนแปลงและฉันไม่สามารถรับ URL ได้อีก สิ่งที่เคยทำงานกับ firefox: #!/bin/bash current_tab_num () { python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nprint str(jdata["windows"][0]["selected"])' } current_tab_url () { sed -n "$(current_tab_num)p" <(python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nfor win in jdata.get("windows"):\n\tfor tab in win.get("tabs"):\n\t\ti = tab.get("index") - …

1
เอาต์พุต XXD โดยไม่มีการขึ้นบรรทัดใหม่
ฉันสามารถบอกxxdให้ไม่พิมพ์ตัวแบ่งบรรทัดใด ๆ ในเอาต์พุตและให้ดัมพ์ของฉันเป็นหนึ่งบรรทัดต่อเนื่องได้หรือไม่? [user@localhost] : ~ $ echo -n "this is a long line and xxd is going to take multiple lines to print it" | xxd -p 746869732069732061206c6f6e67206c696e6520616e6420787864206973 20676f696e6720746f2074616b65206d756c7469706c65206c696e657320 746f207072696e74206974
13 xxd 

2
วิธีจับภาพเฉยๆจากซ็อกเก็ตโดเมน Unix (การตรวจสอบซ็อกเก็ต AF_UNIX)
การจับ TCP / IP และ UDP สามารถทำได้โดยใช้tcpdump/ dumpcapและสร้างไฟล์ pcap / pcapng ซึ่งสามารถป้อนให้ Wireshark สำหรับการวิเคราะห์เพิ่มเติม มีเครื่องมือที่คล้ายกันนี้อยู่ในซ็อกเก็ตโดเมนชื่อ Unix หรือไม่? (โซลูชันทั่วไปที่ใช้กับซ็อกเก็ตแบบนามธรรมจะดีเช่นกัน) straceตาม - ไม่เพียงพอไม่ตรงไปตรงมาเพื่อกรองสำหรับซ็อกเก็ตโดเมน Unix I / O พร็อกซี่ใช้socatหรือเหมือนกันยังไม่เหมาะที่จะเป็นเป้าหมายคือการวิเคราะห์เรื่อย ๆ สำหรับโปรแกรมที่เปิดมีอยู่ ฉันจะขอรับการจับแพ็คเก็ตที่ฉันสามารถใช้ใน Wireshark เพื่อการวิเคราะห์ได้อย่างไร ตัวอย่างการใช้งานโพรโทคอลคือ X11 (Xorg แอปพลิเคชันปัจจุบันของฉัน) และ cURL / PHP (HTTP) ฉันเห็นCONFIG_UNIX_DIAGตัวเลือกในเคอร์เนล Linux นี่เป็นการใช้งานหรือไม่?

8
awk หรือ sed เพื่อพิมพ์เล็ก / พิมพ์ใหญ่อักขระเดียวในสตริง?
มีวิธีการตัวพิมพ์ใหญ่ / ตัวพิมพ์เล็กเพียงตัวเดียวในบางสาย? ตัวอย่างอินพุต: syslog_apr_24_30 syslog_mar_01_17 ผลลัพธ์ที่ต้องการ: syslog_Apr_24_30 syslog_Mar_01_17 หมายเหตุโปรดเริ่มต้นตัวพิมพ์ใหญ่ของเดือน ฉันลองแล้วawkแต่ยังไม่ดีพอที่จะทำให้มันทำงานได้
13 bash  sed  awk 

1
วิธีการเปิดใช้งาน Virtualenv เมื่อสคริปต์ Python เริ่มทำงาน?
ฉันต้องการที่จะกำหนดเวลาหลามสคริปต์เพื่อเรียกใช้ cron ในบางวันปัญหาคือว่าเพื่อให้example.pyการทำงานexample-envจะต้องมีการเปิดใช้งานจะมีวิธีที่จะทำให้การexample.pyเปิดใช้งาน virtualenv ของตัวเองเมื่อใดก็ตามที่ cron ดำเนินการได้หรือไม่ ถ้าไม่เช่นนั้นฉันต้องสร้างสคริปต์ทุบตีbash.shที่มี #!/usr/bin/env bash workon example-env python2 example.py แล้วกำหนดเวลาที่จะดำเนินการโดย cron ในบางวัน? หรือฉันต้องทำอย่างอื่น? ทั้งสองวิธีใช้ได้กับฉันฉันแค่อยากรู้วิธีที่ถูกต้องในการทำ บางทีฉันอาจชอบวิธีการทุบตีสคริปต์เนื่องจากฉันมีไฟล์ Python จำนวนมากที่จะทำงานดังนั้นถ้าฉันวางไว้ในสคริปต์ทุบตีและกำหนดเวลานั้นดูเหมือนว่าง่ายกว่าสำหรับฉัน แต่อีกครั้งฉันไม่รู้วิธีที่ถูกต้องที่จะทำ ดังนั้นฉันขอคำแนะนำ

2
คำพูดซ้อนใน subshells
ว่าฉันต้องใช้อัญประกาศเพื่อสรุปผลลัพธ์ subshell เช่น: DATA="$(cat file.hex | xxd -r)" แต่ฉันต้องทำรังสิ่งเช่นนี้: DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")" ฉันไม่สามารถใช้เครื่องหมายคำพูดเดี่ยวได้เพราะสิ่งเหล่านั้นไม่ได้ขยายตัวแปรที่อยู่ข้างใน การหลีกเลี่ยงการพูดไม่ทำงานเพราะมันเป็นเสมือนข้อความแฝง ฉันจะจัดการสิ่งนี้ได้อย่างไร

1
อะไรคือความแตกต่างระหว่าง xim และ uim
ผมพบว่า (ในขณะที่หันหน้าไปทางนี้ปัญหา) สองคำที่เกี่ยวข้องกับการป้อนข้อมูลวิธีการซึ่งเป็นXIM & UIM ฉันรู้ชื่อเท่านั้น: วิธีการป้อนข้อมูล X และวิธีการป้อนข้อมูลสากล ฉันต้องการทราบความแตกต่างของการใช้งานฟังก์ชั่นและการทำงานระหว่าง xim และ uim คืออะไร

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