Unix & Linux

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

2
เมื่อกระบวนการจะไปสู่สถานะ 'D'
ฉันใช้ "ชื่อโฮสต์ Linux 2.6.28-15-generic # 49-Ubuntu SMP อ. 18 ส.ค. 18:40:08 UTC 2009 i686 GNU / Linux" เครื่องไคลเอนต์ทั้งหมดจะใช้ Thin-client ฉันจะใช้แล็ปท็อปของฉันในการทำงานและฉันจะติดตั้งโฮมไดเร็กตอรี่จากเซิร์ฟเวอร์ไปยังแล็ปท็อปของฉัน ถ้าฉันเปิด Firefox ในแล็ปท็อปของฉันหน้าต่าง Firefox จะไม่เปิดเพราะกระบวนการอยู่ในสถานะ 'D' และผู้ใช้อื่น ๆ ทั้งหมดเครื่องวางสายและกระบวนการล็อกอยู่ในสถานะ 'D' ps ajx | grep firefox 1 6187 4313 4313 ? -1 D< 1030 3:16 /usr/lib/firefox-3.5b4pre/firefox-3.5 7610 7622 7621 7610 pts/3 …
21 linux  process  io 

1
ติดตั้งแพคเกจเวอร์ชั่นก่อนหน้านี้โดยใช้ snap?
ฉันต้องการติดตั้งkubectlเวอร์ชั่น1.2.4บนเครื่อง เอกสารแนะนำsnap Kubernetes แนะนำให้ใช้สำหรับการติดตั้งบน Ubuntu snap install --helpไม่มีประโยชน์มากพารามิเตอร์ที่มีแนวโน้มหนึ่ง--revision=ไม่ทำงาน: $ sudo snap install --revision=1.2.4 kubectl error: cannot decode request body into snap instruction: invalid snap revision: "\"1.2.4\"" ฉันสงสัยว่า--revisionจะคาดหวัง SHA มากกว่าแบบ Semver apt-getประชุมของการใช้package=1.2.3ยังไม่ได้ทำงาน: $ sudo snap install kubectl=1.2.4 error: snap "kubectl=1.2.4" not found เอกสารการใช้งานดูเหมือนเงียบในคำถาม มีใครรู้บ้าง

2
ความแตกต่างระหว่าง Xorg และ Gnome / KDE / Xfce
ฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับระบบ UNIX และฉันคิดว่าฉันมีคำถามตรงไปตรงมา ฉันคิดว่าฉันรู้ว่า X ใช้สำหรับอะไร: เป็นมาตรฐานสำหรับแอปพลิเคชันในการนำเสนอ UI ของพวกเขา (เหนือสิ่งอื่นใด) แต่ทำไมถึงมีความจำเป็นสำหรับ Gnome / KDE และพวกมันเกี่ยวข้องกับ X อย่างไร ฉันคิดว่าพวกเขาใช้ X เป็นอินเทอร์เฟซบางอย่างระหว่างแอปพลิเคชันและ GUI ดังนั้น GUI สามารถปรับแต่งได้ในขณะที่อินเทอร์เฟซยังคงเหมือนเดิมในแอปพลิเคชัน เป็นจริงหรือเป็น Gnome / KDE เป็นอิสระจาก X?

4
ลบ repo yum โดยใช้ yum
ฉันไม่สามารถเข้าถึงรูทเครื่องของฉันในที่ทำงานได้ แต่ฉันได้รับอนุญาตให้ใช้ sudo sudo yum(และเฉพาะ yum) เมื่อเร็ว ๆ นี้ฉันได้ติดตั้งที่เก็บข้อมูลผิดพลาด (ดรอปบ็อกซ์) และตอนนี้ฉันต้องการลบมัน เนื่องจากฉันไม่มีสิทธิ์เข้าถึงเพื่อเขียนyum.repos.dไดเรกทอรีการแก้ไขหรือลบไฟล์ repo ด้วยตนเองจึงเป็นปัญหา ฉันรู้ว่าคุณสามารถติดตั้ง repos โดยใช้ yum (มันคือสิ่งที่ฉันทำ) แต่ คุณสามารถลบ repo ที่ใช้ yum ได้หรือไม่? ใช้ Scientific Linux 6 โดยวิธีการที่ฉันรู้ว่าฉันสามารถที่yum --disablerepo=จะละเลย repo ที่มีปัญหา แต่ฉันต้องการลบให้ดีเพราะมันยังทำให้เกิดปัญหากับตัวจัดการแพคเกจกราฟิก (มันยังคงโผล่ขึ้นมาแจ้งเตือนว่าการปรับปรุงไม่สามารถเรียกคืน)

5
Pip vs Package Manager สำหรับจัดการแพ็กเกจ Python
แพคเกจหลามบ่อยโฮสต์ในที่เก็บของการกระจายจำนวนมาก หลังจากอ่านบทช่วยสอนนี้โดยเฉพาะในหัวข้อชื่อ "คุณต้องการทำสิ่งนี้จริงๆหรือเปล่า" ฉันหลีกเลี่ยงการใช้ pip และต้องการใช้พื้นที่เก็บข้อมูลของระบบเพียงแค่หันไปใช้ pip เมื่อฉันต้องการติดตั้งแพ็คเกจที่ไม่ได้อยู่ในพื้นที่เก็บข้อมูล อย่างไรก็ตามเนื่องจากนี่เป็นวิธีการติดตั้งที่ไม่สอดคล้องกันจะดีกว่าหรือไม่ที่จะใช้ pip เพียงอย่างเดียว? ประโยชน์ / ผู้ว่าการใช้ pip บนที่เก็บของระบบสำหรับแพ็คเกจที่มีอยู่ในทั้งสองแห่งคืออะไร ลิงก์ที่ฉันรวมถึงรัฐ ข้อได้เปรียบของการใช้แพ็คเกจ Debian / NeuroDebian มาตรฐานอยู่เสมอคือแพคเกจนั้นได้รับการทดสอบอย่างรอบคอบเพื่อให้เข้ากันได้ แพ็คเกจ Debian บันทึกการอ้างอิงกับไลบรารีอื่น ๆ ดังนั้นคุณจะได้รับไลบรารีที่คุณต้องการเป็นส่วนหนึ่งของการติดตั้งเสมอ ฉันใช้ซุ้มประตู เป็นกรณีนี้กับระบบการจัดการแพคเกจอื่น ๆ นอกจากฉลาด?

3
ทำไม [-n] ไม่ผิดเหมือน [-n“”]?
คำถามของฉันเกี่ยวกับค่าตอบแทนที่ผลิตโดยรหัสนี้: if [ -n ]; then echo "true"; else echo "false"; fi ภาพพิมพ์trueนี้ การทดสอบเสริมโดยใช้[ -z ]ยังพิมพ์true: if [ -z ]; then echo "true"; else echo "false"; fi ในโค้ดด้านบนเหตุใดการ[ -n ]ทดสอบจึงถือว่าค่าสตริงที่ไม่ผ่านเลยไม่ใช่เป็นโมฆะ falseรหัสด้านล่างพิมพ์ สิ่งนี้คาดว่าจะเกิดขึ้นเนื่องจากค่าสตริงที่ผ่านเป็นโมฆะและมีความยาวเป็นศูนย์ if [ -n "" ]; then echo "true"; else echo "false"; fi
20 bash 

6
ตัวเลือกใด ๆ ที่จะแทนที่ GNU coreutils บน Linux?
ฉันได้รับความคิดเกี่ยวกับการหยุดใช้ของ GNU coreutils บนระบบลินุกซ์ของฉัน แต่จะซื่อสัตย์แตกต่างจากหลายส่วนประกอบ GNU อื่น ๆ ผมไม่สามารถคิดทางเลือกใด ๆ(บน Linux) coreutils ของ GNU มีทางเลือกอะไรบ้าง? ฉันต้องการมากกว่าหนึ่งแพ็คเกจหรือไม่ ลิงค์ไปยังโครงการจะต้องมีคะแนนโบนัสสำหรับแพ็คเกจการตั้งชื่อ distro นอกจากนี้โปรดอย่าแนะนำสิ่งต่าง ๆ เว้นแต่คุณจะรู้ว่ามันทำงานบน Linux และสามารถอ้างอิงคำแนะนำได้ ฉันสงสัยฉันจะเปลี่ยนเมล็ดในเร็ว ๆ ./configure; make; make installนี้และฉันมากขี้เกียจเกินไปสำหรับสิ่งที่มากเกินตรงไปตรง แน่นอนฉันจะไม่แฮ็ค C สำหรับมัน คำเตือน:หาก distro ของคุณใช้ coreutils ในการลบออกอาจทำลายวิธีการทำงานของ distro ของคุณ อย่างไรก็ตามการไม่มีพวกเขาเป็นสิ่งแรกที่คุณ$PATHไม่ควรทำเพราะสคริปต์ส่วนใหญ่ควรใช้เส้นทางที่สมบูรณ์

2
ซิงค์โฟลเดอร์ระหว่างคอมพิวเตอร์ 2 เครื่องกับตัวเฝ้าดูระบบแฟ้มเพื่อให้ทุกครั้งที่มีการแก้ไขไฟล์จะถูกจำลองแบบทันที
ฉันมี: เซิร์ฟเวอร์ Linux ที่ฉันเชื่อมต่อผ่าน SSH บน IP 203.0.113.0 พอร์ต 1234 คอมพิวเตอร์ที่บ้าน (หลังเราเตอร์) IP สาธารณะ 198.51.100.17 ซึ่งเป็น Debian หรือ Windows + Cygwin อะไรคือวิธีที่ง่ายที่สุดในการ/home/inprogress/ ซิงโครไนซ์โฟลเดอร์(ทั้งสองทิศทาง), เล็กน้อยrsyncแต่ด้วยตัวเฝ้าดูระบบไฟล์ดังนั้นทุกครั้งที่มีการแก้ไขไฟล์มันจะถูกเรพลิเคตทันที (เช่นไม่จำเป็นต้องเรียกโปรแกรมซิงค์ด้วยตนเอง) ฉันกำลังมองหาโซลูชันบรรทัดคำสั่ง / no-GUI เนื่องจากเซิร์ฟเวอร์ไม่มีส่วนหัว มีวิธีแก้ปัญหาในตัว Linux / Debian หรือไม่?

6
ทำไมโลก su ถึงสามารถปฏิบัติการได้?
ฉันมีเซิร์ฟเวอร์หัวขาดที่ลงชื่อเข้าใช้จากระยะไกลโดยผู้ใช้หลายคน ไม่มีผู้ใช้อื่น ๆ ที่อยู่ใน sudoers sudoไฟล์เพื่อให้พวกเขาไม่สามารถรับรากผ่าน อย่างไรก็ตามเนื่องจากสิทธิ์บนsuมี-rwsr-xr-xไม่มีอะไรหยุดพวกเขาจากการพยายามบังคับเดรัจฉานรหัสผ่านราก หนึ่งอาจโต้แย้งว่าถ้าผู้ใช้รู้รหัสผ่านรูทพวกเขาสามารถประนีประนอมระบบ แต่ฉันไม่คิดว่าเป็นกรณีนี้ OpenSSH ได้รับการกำหนดค่าด้วยPermitRootLogin noและPasswordAuthentication noและไม่มีผู้ใช้รายอื่นใดที่สามารถเข้าถึงเซิร์ฟเวอร์ได้ เท่าที่ฉันสามารถบอกได้โลกดำเนินการอนุญาต/usr/bin/suเป็นเพียงทางเดียวสำหรับผู้ใช้ที่พยายามรับรูทบนเซิร์ฟเวอร์ของฉัน มีอะไรทำให้ฉันสับสนอีกต่อไปเพราะมันไม่ได้มีประโยชน์แม้แต่น้อย มันช่วยให้ฉันทำงานsuได้โดยตรงแทนที่จะต้องทำsudo suแต่มันก็ไม่สะดวก ฉันมองอะไรบางอย่าง โลกนี้ได้รับอนุญาตจากที่suนั่นเพียงเพราะเหตุผลทางประวัติศาสตร์หรือไม่? มีข้อเสียในการลบการอนุญาตที่ฉันยังไม่เคยพบหรือไม่
20 sudo  su  headless 

3
อะไรคือจุดประสงค์ของ“ ความจริง” ใน bash“ ถ้า sudo จริง แล้ว”
ฉันแฮ็กสคริปสคริปต์นี้พร้อมกันซึ่งทดสอบว่าผู้ใช้มีสิทธิ์พิเศษของผู้ใช้ระดับสูงหรือไม่ ในที่สุดฉันกำลังพยายามกลับคำสั่ง 'ถ้า' ที่สองเพื่อให้ฉันสามารถลบสองบรรทัดต่อไปนี้ (echo "รหัสผ่าน ok" และอื่น ๆ ในบรรทัดต่อไปนี้) # Root user only if [[ "$EUID" != 0 ]]; then sudo -k # make sure to ask for password on next sudo if sudo true; then echo "Password ok" else echo "Aborting script" exit 1 fi fi echo "do …
20 bash  sudo 

4
มี POSIX (หรืออย่างน้อยเป็นที่นิยม) ยูทิลิตี้เพื่อตั้งไดเรกทอรีการทำงานปัจจุบันเมื่อเรียกใช้โปรแกรมหรือไม่?
เรามีenv (1)เพื่อแก้ไขสภาพแวดล้อมของคำสั่งที่เราต้องการเรียกใช้ (ตัวอย่างenv MANPAGER=more man dtrace) มีสิ่งที่คล้ายกัน แต่สำหรับการปรับเปลี่ยนไดเรกทอรีที่คำสั่งจะเริ่มต้นใน เป็นการดีที่ฉันต้องการให้มีลักษณะเช่นนี้: theMagicCommand /new/cwd myProgram วิธีนี้มันอาจจะ "ถูกล่ามโซ่" กับคำสั่ง env (1) เหมือนอื่น ๆ เช่น daemon -p /tmp/pid env VAR=value theMagicCommand /new/cwd myProgram จนถึงตอนนี้ฉันสามารถคิดถึงวิธีแก้ปัญหาต่อไปนี้ซึ่งน่าเสียดายที่ไม่มีอินเตอร์เฟสเหมือนกับ env (1): cd /new/cwd && myProgram นอกจากนี้ฉันสามารถสร้างเชลล์สคริปต์อย่างง่ายเช่นนี้: #! /bin/sh - cd "${1:?Missing the new working directory}" || exit 1 shift exec …
20 shell  freebsd  cwd 

5
ฉันจะกำหนดค่าที่แตกต่างให้กับตัวแปรได้อย่างไรโดยขึ้นอยู่กับตัวแปรอื่น?
ฉันจะทำให้เชลล์สคริปต์สั้นลงได้อย่างไร CODE="A" if test "$CODE" = "A" then PN="com.tencent.ig" elif test "$CODE" = "a" then PN="com.tencent.ig" elif test "$CODE" = "B" then PN="com.vng.pubgmobile" elif test "$CODE" = "b" then PN="com.vng.pubgmobile" elif test "$CODE" = "C" then PN="com.pubg.krmobile" elif test "$CODE" = "c" then PN="com.pubg.krmobile" elif test "$CODE" = "D" then …

1
ทำไม -a ใน“ #! / bin / sh -a” ส่งผลกระทบต่อ sed และ“ set -a” ไม่?
ถ้าฉันเรียกใช้ไฟล์. sh ต่อไปนี้: #!/bin/sh -a echo "a" | sed -e 's/[\d001-\d008]//g' ผลลัพธ์เป็นข้อผิดพลาด: sed: -e นิพจน์ # 1, อักขระ 18: ช่วงสิ้นสุดไม่ถูกต้อง แต่ถ้าฉันเรียกใช้ไฟล์. sh ต่อไปนี้: #!/bin/sh set -a echo "a" | sed -e 's/[\d001-\d008]//g' มันทำงานโดยไม่มีข้อผิดพลาด รหัสที่สองไม่ควรจะเทียบเท่ากับรหัสแรก? ทำไมข้อผิดพลาดในอันแรก?

7
หลีกเลี่ยงรายการไฟล์ที่ลงท้ายด้วย ~ (ไฟล์สำรอง)
ความต้องการของฉันคือรายการไฟล์ทั้งหมดในไดเรกทอรียกเว้นไฟล์ที่ลงท้ายด้วย~(ไฟล์สำรอง) ฉันพยายามใช้คำสั่ง: ls -l | grep -v ~ ฉันได้ผลลัพธ์นี้: asdasad asdasad~ file_names.txt normaltest.txt target_filename testshell1.sh testshell1.sh~ testshell2.sh testshell2.sh~ testtwo.txt testtwo.txt~ test.txt test.txt~ ฉันต้องการรับเฉพาะไฟล์เหล่านี้: asdasad file_names.txt normaltest.txt target_filename testshell1.sh testshell2.sh testtwo.txt test.txt
20 ls  filenames 

5
การพิมพ์เครื่องหมายอัศเจรีย์เดียวทำอะไรใน Bash
Bash ใช้เครื่องหมายอัศเจรีย์สำหรับการขยายประวัติตามที่อธิบายในคำตอบสำหรับคำถามนี้ (เช่นsudo !!เรียกใช้บรรทัดคำสั่งก่อนหน้าด้วยsudo) อย่างไรก็ตามฉันไม่พบที่ใดก็ได้ที่อธิบายสิ่งที่เรียกใช้คำสั่งต่อไปนี้ (เช่นเครื่องหมายอัศเจรีย์): ! ดูเหมือนว่าจะพิมพ์อะไรและออกด้วย 1 แต่ฉันไม่แน่ใจว่าทำไมมันถึงทำอย่างนั้น ฉันดูออนไลน์และในหน้า Bash man แต่ไม่พบอะไรเลยนอกจากความจริงที่ว่ามันเป็น "คำสงวน" - แต่เป็นเช่นนั้น}และใช้งานสิ่งนี้: } พิมพ์ข้อผิดพลาด: bash: syntax error near unexpected token `}'

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