Unix & Linux

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

9
วิธีใช้ ifconfig เพื่อแสดงอินเตอร์เฟสที่แอ็คทีฟเท่านั้น
โดยค่าเริ่มต้นifconfigจะแสดงให้ฉันอินเตอร์เฟซที่มีอยู่ทั้งหมด แต่ถ้าผมแค่อยากจะแสดงผลactiveคน? ชอบen0เฉพาะด้านล่าง en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 14:10:9f:e0:eb:c9 inet6 fe80::1610:9fff:fee0:ebc9%en0 prefixlen 64 scopeid 0x4 inet X.X.X.X netmask 0xffffff00 broadcast 101.6.69.255 nd6 options=1<PERFORMNUD> media: autoselect **status: active** en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 options=60<TSO4,TSO6> ether 32:00:14:e7:4f:80 media: autoselect <full-duplex> **status: inactive** การแจ้งเตือนifconfig en0จะไม่เป็นที่น่าพอใจen0เสมอไป) ฉันใช้ Mac OS X

5
ด้วยการส่งต่อ SSH X11 (`ssh -X`) รับ` ไม่สามารถเปิดหน้าจอ 'พยายามเรียกใช้แอปพลิเคชัน X
ฉันสามารถเข้าสู่ระบบเพื่อตัดการใช้ ssh -X Hostip แต่เมื่อฉันรันคำสั่ง xclock มันทำให้ฉันมีข้อผิดพลาดนี้ Error: Can't open display: localhost:11.0 ฉันตรวจสอบค่าการแสดงผลของฉันโดยใช้ echo $DISPLAY และผลลัพธ์คือ localhost:11.0 และการส่งต่อ X11 ถูกตั้งค่าเป็น YES ในไฟล์ sshd_config X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes คำแนะนำอะไรที่ฉันหายไปที่นี่?
22 ssh  rhel  x11 

2
ข้อผิดพลาดในการอัปเดตของ Ubuntu“ กำลังรอการอัปโหลดโดยไม่ตั้งใจ”
ฉันไม่สามารถอัปเดตระบบของฉันโดยมีการติดตั้ง Ubuntu 2 ตัวตัวหนึ่งเป็นรุ่น 16.04 และรุ่นอื่น ๆ คือ 17.04 ในทั้งสองฉันได้รับข้อผิดพลาดเดียวกัน ตัวอย่างเช่นใน Ubuntu 16.04 ฉันรันsoftware updaterและรับผลตามที่แสดงด้านล่าง ฉันรอสักครู่ แต่updaterก็ไม่ได้ดำเนินการต่อไป จากนั้นฉันกดStopปุ่มและพาฉันไปที่ป๊อปอัปด้านล่าง จากนั้นฉันกดปุ่มInstall now& นำฉันไปยังป๊อปอัปถัดไปดังที่แสดงด้านล่าง ฉันรอที่นี่สักครู่ แต่มันติดอยู่ที่นั่น ฉันไม่สามารถอัปเดตในการติดตั้งอย่างใดอย่างหนึ่ง ทางแก้ปัญหาคืออะไรเพราะฉันไม่สามารถอัพเดทได้? (และต้องการให้ผู้ดูเห็นว่าการแก้ไขดัดแปลงโดยไม่ได้รับอนุญาตจากระยะไกลหรืออย่างอื่นอาจส่งผลให้เกิดข้อผิดพลาดนี้ได้หรือไม่ถ้าเป็นเช่นนั้นจะแก้ปัญหาได้อย่างไร) หากฉันไม่สามารถอัปเดตได้ฉันอาจถูกบีบบังคับให้ติดตั้งใหม่อีกครั้งตั้งแต่เริ่มต้นซึ่งเป็นวิธีที่ฉันต้องการหลีกเลี่ยง แก้ไข พร้อมอ้างอิง ในภาพที่ 3 ด้านบนที่กล่าวถึง "การติดตั้งการอัปเดต" มันดำเนินการต่อไป & อัปเดตอย่างสมบูรณ์ แต่หลังจากรีบูตเครื่องและทำงานอีกครั้งsoftware updaterฉันก็เจอปัญหาใหม่ ตอนนี้เกี่ยวกับการทำงานของมันข้อความsoftware updater check your Internet connectionผมเคยโพสต์ถามที่นี่
22 ubuntu  upgrade 

6
การใช้งานฟังก์ชั่น Bash Script กับ Sudo
ฉันมีสคริปต์ที่ทำสิ่งต่าง ๆ จำนวนมากซึ่งส่วนใหญ่ไม่ต้องการสิทธิ์พิเศษใด ๆ อย่างไรก็ตามหนึ่งส่วนเฉพาะซึ่งฉันมีอยู่ในฟังก์ชั่นต้องการสิทธิ์รูท ฉันไม่ต้องการให้สคริปต์ทั้งหมดทำงานเป็นรูทและฉันต้องการที่จะสามารถเรียกใช้ฟังก์ชั่นนี้ได้โดยใช้สิทธิ์รูทจากภายในสคริปต์ การขอรหัสผ่านหากจำเป็นไม่ใช่ปัญหาเนื่องจากส่วนใหญ่เป็นแบบโต้ตอบอยู่แล้ว อย่างไรก็ตามเมื่อฉันพยายามใช้sudo functionxฉันจะได้รับ: sudo: functionx: command not found อย่างที่ฉันคาดไว้exportก็ไม่ได้สร้างความแตกต่าง ฉันต้องการที่จะสามารถใช้งานฟังก์ชั่นโดยตรงในสคริปต์แทนที่จะแยกมันออกและดำเนินการเป็นสคริปต์แยกต่างหากด้วยเหตุผลหลายประการ มีวิธีที่ฉันสามารถทำให้ฟังก์ชั่น "มองเห็น" ของฉันไปยัง sudo โดยไม่ต้องแตกไฟล์ค้นหาไดเรกทอรีที่เหมาะสม ฟังก์ชั่นมีความยาวประมาณหนึ่งหน้าและมีหลายสตริง มันยังขึ้นอยู่กับฟังก์ชั่นเมนูที่กำหนดไว้ที่อื่นในสคริปต์หลัก ฉันคาดหวังว่าใครบางคนที่มี sudo ใด ๆ เท่านั้นที่สามารถเรียกใช้ฟังก์ชันได้เนื่องจากหนึ่งในสิ่งที่มันทำคือเปลี่ยนรหัสผ่าน
22 bash  sudo  function 

2
วิธีกำจัด "ไม่พบที่ตรงกัน" เมื่อเรียกใช้ "rm *"
ใช้zshฉันได้รับข้อความ "ไม่พบการจับคู่" เมื่อเลือกรูปแบบที่ไม่เหมาะสมrmและแม้เมื่อเปลี่ยนเส้นทางผลลัพธ์ # rm * > /dev/zero 2>&1 zsh: no matches found: * ฉันจะกำจัดข้อความนี้ได้อย่างไร
22 zsh  wildcards  rm 

5
วิธีจับคู่อุปกรณ์ ttyUSBX กับอุปกรณ์ usb แบบอนุกรม
ไดรเวอร์ตัวเลือกที่ตรงกับ USB ID และโหลดไดรเวอร์สำหรับอุปกรณ์นี้อย่างถูกต้อง ตัวอย่างเช่น # lsusb Bus 001 Device 002: ID 19d2:0031 ONDA Communication S.p.A. ZTE MF636 Bus 001 Device 003: ID 12d1:14ac Huawei Technologies Co., Ltd. นอกจากนี้ยังสร้างอุปกรณ์ ttyUSBX สำหรับจัดการฮาร์ดแวร์ crw-rw---- 1 root uucp 188, 0 Jul 4 13:48 /dev/ttyUSB0 crw-rw---- 1 root uucp 188, 1 Jul 4 13:49 …
22 linux  usb 


4
ผู้ใช้นี้ไม่สามารถใช้งานได้ - แต่อนุญาตให้เรียกใช้สคริปต์โดยผู้ใช้รายนี้
ฉันสร้างผู้ใช้พิเศษใน / etc / passwd ด้วย: secure:x:2000:2000:secure:/bin:/usr/sbin/nologin ฉันไม่ต้องการอนุญาตการเข้าสู่ระบบของผู้ใช้รายนี้ (ผ่านทางคอนโซล, ssh, ftp, ไม่ว่าทางใด) เขาเป็นเพียงการเรียกใช้สคริปต์หนึ่งผ่าน: sudo su secure -c '/home/someuser/secure.script' This user is currently not available.แต่มันก็ทำให้ผม วิธีการตั้งค่าเพื่อให้สามารถเรียกใช้สคริปต์ด้วยวิธีนี้ แต่ป้องกันการเข้าสู่ระบบใด ๆ (console, ssh, ftp, ... ) ของผู้ใช้รายนี้เข้าสู่ระบบ? ฉันได้พบว่าเมื่อฉันพิมพ์ในบรรทัดคำสั่งตอบสนองคอมพิวเตอร์ด้วย/usr/sbin/nologinThis account is currently not available.
22 sudo  users  su 

7
การแข่งขันแบบไม่โลภกับ SED regex (เลียนแบบ perl's. *?)
ฉันต้องการใช้sedที่จะเปลี่ยนอะไรในสตริงระหว่างครั้งแรกABและครั้งแรกเกิดAC(รวม) XXXด้วย สำหรับตัวอย่างเช่นผมมีสายนี้ (สตริงนี้เหมาะสำหรับการทดสอบเท่านั้น): ssABteAstACABnnACss ssXXXABnnACssและฉันต้องการผลผลิตที่คล้ายกันนี้: ฉันทำสิ่งนี้กับperl: $ echo 'ssABteAstACABnnACss' | perl -pe 's/AB.*?AC/XXX/' ssXXXABnnACss sedแต่ฉันต้องการที่จะใช้มันกับ ต่อไปนี้ (ใช้ regex ที่เข้ากันได้กับ Perl) ไม่ทำงาน: $ echo 'ssABteAstACABnnACss' | sed -re 's/AB.*?AC/XXX/' ssXXXss

3
ใช้ grep ในคำสั่งเงื่อนไขในทุบตี
ฉันยังใหม่ต่อการเขียนสคริปต์ในการทุบตีและลองทำในสิ่งที่ฉันคิดว่าจะเป็นสิ่งพื้นฐาน ฉันต้องการเรียกใช้ DDNS ที่อัปเดตจากเซิร์ฟเวอร์ของฉันที่ใช้ Ubuntu 14.04 ยืมรหัสจาก dnsimple นี่คือสิ่งที่ฉันมี: #!/bin/bash LOGIN="email" TOKEN="token" DOMAIN_ID="domain" RECORD_ID="record" IP=`curl -s http://icanhazip.com/` OUTPUT=` curl -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-DNSimple-Domain-Token: $TOKEN" \ -X "PUT" \ -i "https://api.dnsimple.com/v1/domains/$DOMAIN_ID/records/$RECORD_ID" \ -d "{\"record\":{\"content\":\"$IP\"}}"` if ! echo "$OUTPUT" | grep -q "(Status:\s200)"; then echo "match" …

1
เป็น ((…)) {…;} ไวยากรณ์เชลล์ที่ถูกต้องหรือไม่ หอยไหน?
การแสดงออก: $ ksh -c 'for ((i=0;i<10;i++)){ echo $i;}' 0 1 2 3 4 ทำงานอย่างถูกต้อง ฉันล้มเหลวในการค้นหาคำอธิบายของไวยากรณ์นี้ซึ่ง{...;}แทนที่ด้วย; do ...; doneในคู่มือ มีการอ้างอิงในคู่มือหรือไม่? เชลล์ใดที่ทำงานได้ถูกต้อง?
21 bash  shell  zsh  ksh 


7
tail -f แต่มีหมายเลขบรรทัด
ฉันพยายามที่จะดูว่ามีกี่ครั้งที่foo barปรากฏขึ้น/var/log/foo.logภายในระยะเวลาโดยพลการบนเซิร์ฟเวอร์ระยะไกล แต่ไม่มีอะไรที่ฉันได้ลองมาแล้ว ฉันมีสคริปต์ตัวจับเวลาแล้วที่ฉันใช้เพื่อติดตามว่ามันได้รับมานานแค่ไหนตั้งแต่ฉันเริ่ม tailing /var/log/foo.logและตอนนี้ฉันก็อยากจะบอกว่ากี่ครั้งที่foo barปรากฏในเอาท์พุทเทลด์ ฉันค้นหา google แต่ฉันไม่พบสิ่งใดที่เกี่ยวข้องภายใน 10 หน้าแรกของผลลัพธ์ นี่คือสิ่งที่ฉันได้ลองด้วยผลลัพธ์ที่น่าผิดหวัง: ## works on local machine, but doesn't work as expected on remote tail -f /var/log/foo.log | grep foo\ bar | sed '=' ## works on local, but not remote tail -f /var/log/foo.log | grep foo\ bar | …

2
ทดสอบความสมบูรณ์ของไฟล์ ZIP หรือไม่
ใกล้เท่าที่ฉันสามารถบอกตัวเลือก zip -T จะกำหนดได้ว่าสามารถแตกไฟล์ได้หรือไม่ - มันไม่ได้ทดสอบการจัดเก็บลงสื่อถาวรสำหรับความสมบูรณ์ภายใน ตัวอย่างเช่นฉันจงใจทำลาย CRC ในระบบ (ไม่ใช่ไดเรกทอรีกลาง) สำหรับไฟล์และ zip ไม่สนใจเลยรายงานว่าไฟล์เก็บถาวรเป็น OK มีสาธารณูปโภคอื่นให้ทำเช่นนี้หรือไม่ มีความซ้ำซ้อนภายในจำนวนมากในไฟล์ ZIP และมันก็ดีที่มีวิธีการตรวจสอบทั้งหมด แน่นอนว่าโดยปกติแล้วไดเรกทอรีกลางคือสิ่งที่คุณต้องการ แต่เมื่อซ่อมแซมไฟล์เก็บถาวรที่เสียหายบ่อยครั้งที่สิ่งที่คุณมีคือแฟรกเมนต์โดยที่ไดเรกทอรีกลางจะถูกบดบังหรือขาดหายไป ฉันต้องการทราบว่าคลังเก็บถาวรที่ฉันสร้างนั้นสามารถกู้คืนได้หรือไม่
21 zip 

1
'script / dev / null' ทำอะไร
ทุกครั้งที่ฉันล็อกอินเข้าสู่ VM ด้วยรูทsuเข้าสู่บัญชีผู้ใช้และลองใช้screenมันจะมีข้อผิดพลาดเกิดขึ้น: Cannot open your terminal '/dev/pts/0' - please check. กองล้นโพสต์บอกว่าผมจำเป็นต้องใช้script /dev/nullในการแก้ไขปัญหาและมันทำงาน script /dev/nullแต่ก็ยังไม่ได้อธิบายว่าทำไมฉันต้องพิมพ์ ฉันต้องการที่จะเข้าใจว่ามันทำอะไรและทำไมฉันต้องพิมพ์มัน
21 terminal  gnu-screen  su  pty 

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