Unix & Linux

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

4
ln -s พร้อมกับพา ธ ที่สัมพันธ์กับ pwd
ฉันพยายามสร้างลิงก์สัญลักษณ์มากมาย แต่ฉันไม่สามารถเข้าใจได้ว่าทำไมสิ่งนี้ถึงใช้งานได้ ln -s /Users/niels/something/foo ~/bin/foo_link ในขณะนี้ cd /Users/niels/something ln -s foo ~/bin/foo_link ไม่ใช่. ฉันเชื่อว่ามีบางอย่างเกี่ยวข้องกับการfoo_linkเชื่อมโยงไปยัง foo /Users/niels/binแทน/Users/niels/something ดังนั้นคำถามคือฉันจะสร้างลิงก์สัญลักษณ์ที่ชี้ไปยังเส้นทางที่แน่นอนได้โดยไม่ต้องพิมพ์ได้อย่างไร สำหรับการอ้างอิงฉันใช้ Mac OS X 10.9 และ Zsh
26 bash  shell  symlink  ln 

5
เรียกใช้สคริปต์ในเชลล์ปัจจุบันโดยไม่ต้อง ก่อนคำสั่ง
หากสคริปต์ควรถูกดำเนินการในเชลล์ปัจจุบันสามารถทำได้โดยการเพิ่มจุดก่อนคำสั่ง: . ./somescript.sh มีวิธีทำเช่นนี้โดยไม่ต้องพิมพ์จุดทุกครั้งหรือไม่ ตัวอย่างเช่นคำสั่งเปลี่ยนเป็น parent parent จากสคริปต์เอง?
26 shell 

7
ควรสคริปต์ที่ต้องใช้ sudo ล้มเหลวหากไม่มีหรือใช้ sudo และพรอมต์?
ฉันมีสคริปต์ที่ให้การควบคุมความสว่างแบ็คไลท์ของฉันอย่างละเอียดและต้องsudoดำเนินการ เป็นหลักนี้: backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | tee $backlight ~/bin/backlight-adjustและชีวิตที่ สคริปต์ต้องการsudoสิทธิ์เนื่องจากtee $backlightกำลังเขียนไปยังตำแหน่งที่มีสิทธิ์ sudoดังนั้นมันจะล้มเหลวถ้ามันไม่ได้ทำงานด้วย วิธีการนี้มีปัญหาเพราะฉันไม่สามารถวิ่งsudo backlight-adjustได้เพราะ~/binไม่ได้อยู่$PATHในsudoสภาพแวดล้อม แต่ในสภาพแวดล้อมของฉันเท่านั้น ดังนั้นฉันต้องวิ่งsudo env "PATH=$PATH" backlight-adjustหรืออะไรทำนองนั้น หรือฉันอาจจะเขียนมันแบบนี้ backlight="/sys/class/backlight/acpi_video0/brightness" echo $1 | sudo tee $backlight และแจ้งรหัสผ่านให้ฉัน วิธีที่สองใช้งานได้ดีกว่าสำหรับฉันเพราะฉันไม่ต้องจำให้พิมพ์ sudo; มันจะทำให้ฉัน และฉันสามารถรักษา$PATHเหมือนเดิม โดยรวมแล้วรู้สึกสะดวกกว่า แต่มีเหตุผลใดที่ฉันไม่ควรทำอย่างที่สอง? (ฉันใช้ Xubuntu 14.04 และเชลล์ของฉันคือ GNU ทุบตี 4.2.45 ถ้านั่นสร้างความแตกต่าง)

5
ฉันสามารถปิดการใช้งาน updatedb ได้หรือไม่
เป็นupdatedbสิ่งที่จำเป็นที่ทั้งหมดหรือไม่ ฉันไม่เคยใช้locateและเซิร์ฟเวอร์ของฉันมักจะมีไฟล์หลายสิบล้านไฟล์ซึ่งโดยปกติจะทำให้ updateb ทำงานเป็นเวลานานและใช้ I / O ที่จำเป็นโดย MySQL และ / หรือซอฟต์แวร์อื่น ๆ ฉันสามารถลบมันออกจาก cron และคาดหวังว่าทุกอย่างจะทำงานได้หรือไม่ (โดยทุกอย่างฉันหมายถึงซอฟต์แวร์ปกติที่พบในเซิร์ฟเวอร์: linux, cpanel, mysql, apache, php เป็นต้น)

3
ลบไฟล์ทั้งหมดที่สร้างขึ้นก่อนวันที่กำหนด
ฉันมีไดเรกทอรีที่มีไฟล์จำนวนมาก (เช่นบันทึกสำหรับทุกวันของปี) ฉันต้องการลบไฟล์ทั้งหมดที่สร้างขึ้นก่อนหน้านี้ว่า 22/11 ฉันจะบรรลุสิ่งนั้นได้อย่างไร ฉันจะต้องใช้findexec แล้ว-rmหรือไม่ ฉันใช้ ksh
26 shell  files  find  ksh 

9
วิธีการใช้ SFTP บนระบบที่ต้องใช้ sudo สำหรับการเข้าถึงรูตและการพิสูจน์ตัวตนโดยใช้รูทคีย์ & ssh?
ฉันต้องการใช้ SFTP เพื่อแก้ไขไฟล์ที่ต้องได้รับอนุญาตรูท ฉันใช้การรับรองความถูกต้องโดยใช้คีย์ SSH - คีย์ rsa บนสมาร์ทการ์ด หากระบบต้องการ sudo เพื่อดำเนินการคำสั่งระดับรูทฉันจะแก้ไขได้อย่างไร ฉันสามารถสร้างวิธีการเลี่ยงผ่าน sudo สำหรับ SFTP ได้หรือไม่ มีวิธีในการเก็บ sudo & การรับรองความถูกต้องของคีย์หรือไม่ ฉันใช้ windows เพื่อเชื่อมต่อกับ Ubuntu ฉันต้องการสิ่งนี้เพื่อทำงานกับ Mac ที่เชื่อมต่อกับ Ubuntu ด้วย ฉันเข้าใจวิธีการทำ SSH Tunneling เพื่อดูแลระบบบริการ ปัจจุบันฉันใช้การล็อกอินของผู้ใช้รูทโดยตรง แต่การล็อกอินรหัสผ่านถูกปิดใช้งาน ฉันไม่เข้าใจวิธีการใช้ sudo และ SFTP ในเวลาเดียวกัน น่าจะเป็นวิธีปฏิบัติที่ดีที่สุดที่จะต้องมีการล็อกอินในฐานะผู้ใช้ที่ไม่ใช่รูทและต้องการใช้ sudo เนื่องจากบันทึกจะบันทึกว่าใครได้รับสิทธิพิเศษที่เพิ่มขึ้นสำหรับแต่ละคำสั่ง ฉันควรจะกังวลกับสิ่งนี้เมื่อใช้การพิสูจน์ตัวตนแบบใช้คีย์หรือนี่เป็นความแตกต่างเล็กน้อยในการรักษาความปลอดภัย / การบันทึก ดูเหมือนว่าการพิสูจน์ตัวตนแบบใช้คีย์จะบันทึกหมายเลขซีเรียลของผู้ใช้ในบันทึกและคุณสามารถมีได้หลายคีย์สำหรับผู้ใช้รูทเพื่อระบุผู้ใช้แต่ละคน ดูเหมือนว่าจะมีผลเช่นเดียวกับการใช้ sudo …
26 ssh  sftp 


2
วันที่ใน Linux ทุบตี [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันพยายามที่จะแสดงเวลาวันที่ในรูปแบบของ 07/08/2013 16:52:13 โดยใช้คำสั่งในสคริปต์ทุบตี: dt=`date '+%d/%m/%Y_%H:%M:%S'` ตัวแปรใดที่ใช้เพื่อเติมไฟล์ CSV ถ่านที่ยอมรับเท่านั้นคือ "_" (ขีดล่าง) หรือ "-" ระหว่างวันที่และเวลาเอาต์พุตคือ 8/7 / 2013_16: 52: 13 ฉันจะได้รับช่องว่างระหว่างวันที่และเวลาได้อย่างไร ฉันพยายามทุกอย่าง (หวังว่า) ทุกอย่าง
26 date  time 

3
ps: คำสั่งแบบเต็มยาวเกินไป
ขอให้เป็นวันที่ดี! ฉันใช้ 'ps' เพื่อดูคำสั่งที่เริ่มต้นกระบวนการ ปัญหาคือคำสั่งนั้นยาวเกินไปและ 'ps' ไม่แสดงอย่างสมบูรณ์ ตัวอย่าง: ฉันใช้คำสั่ง 'ps -p 2755 | น้อยกว่าและมีผลลัพธ์ต่อไปนี้ PID TTY STAT TIME COMMAND 2755 ? Sl 305:05 /usr/java/jdk1.6.0_37/bin/java -Xms64m -Xmx512m -Dflume.monitoring.type=GANGLIA -Dflume.monitoring.hosts=prod.hostname.ru:8649 -cp /etc/flume-ng/conf/acrs-event:/usr/lib/flume-ng/lib/*:/etc/hadoop/conf:/usr/lib/hadoop/lib/activation-1.1.jar:/usr/lib/hadoop/lib/asm-3.2.jar:/usr/lib/hadoop/lib/avro-1.7.4.jar:/usr/lib/hadoop/lib/commons-beanutils-1.7.0.jar:/usr/lib/hadoop/lib/commons-beanutils-core-1.8.0.jar:/usr/lib/hadoop/lib/commons-cli-1.2.jar:/usr/lib/hadoop/lib/commons-codec-1.4.jar:/usr/lib/hadoop/lib/commons-collections-3.2.1.jar:/usr/lib/hadoop/lib/commons-compress-1.4.1.jar:/usr/lib/hadoop/lib/commons-configuration-1.6.jar:/usr/lib/hadoop/lib/commons-digester-1.8.jar:/usr/lib/hadoop/lib/commons-el-1.0.jar:/usr/lib/hadoop/lib/commons-httpclient-3.1.jar:/usr/lib/hadoop/lib/commons-io-2.1.jar:/usr/lib/hadoop/lib/commons-lang-2.5.jar:/usr/lib/hadoop/lib/commons-logging-1.1.1.jar:/usr/lib/hadoop/lib/commons-math-2.1.jar:/usr/lib/hadoop/lib/commons-net-3.1.jar:/usr/lib/hadoop/lib/guava-11.0.2.jar:/usr/lib/hadoop/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop/lib/jackson-jaxrs-1.8.8.jar:/usr/lib/hadoop/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop/lib/jackson-xc-1.8.8.jar:/usr/lib/hadoop/lib/jasper-compiler-5.5.23.jar:/usr/lib/hadoop/lib/jasper-runtime-5.5.23.jar:/usr/lib/hadoop/lib/jaxb-api-2.2.2.jar:/usr/lib/hadoop/lib/jaxb-impl-2.2.3-1.jar:/usr/lib/hadoop/lib/jersey-core-1.8.jar:/usr/lib/hadoop/lib/jersey-json-1.8.jar:/usr/lib/hadoop/lib/jersey-server-1.8.jar:/usr/lib/hadoop/lib/jets3t-0.6.1.jar:/usr/lib/hadoop/lib/jettison-1.1.jar:/usr/lib/hadoop/lib/jetty-6.1.26.cloudera.2.jar:/usr/lib/hadoop/lib/jetty-util-6.1.26.cloudera.2.jar:/usr/lib/hadoop/lib/jline-0.9.94.jar:/usr/lib/hadoop/lib/jsch-0.1.42.jar:/usr/lib/hadoop/lib/jsp-api-2.1.jar:/usr/lib/hadoop/lib/jsr305-1.3.9.jar:/usr/lib/hadoop/lib/junit-4.8.2.jar:/usr/lib/hadoop/lib/kfs-0.3.jar:/usr/lib/hadoop/lib/log4j-1.2.17.jar:/usr/lib/hadoop/lib/mockito-all-1.8.5.jar:/usr/lib/hadoop/lib/native:/usr/lib/hadoop/lib/paranamer-2.3.jar:/usr/lib/hadoop/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop/lib/servlet-api-2.5.jar:/usr/lib/hadoop/lib/snappy-java-1.0.4.1.jar:/usr/lib/hadoop/lib/stax-api-1.0.1.jar:/usr/lib/hadoop/lib/xmlenc-0.52.jar:/usr/lib/hadoop/lib/xz-1.0.jar:/usr/lib/hadoop/lib/zookeeper-3.4.5-cdh4.3.0.jar:/usr/lib/hadoop/.//bin:/usr/lib/hadoop/.//cloudera:/usr/lib/hadoop/.//etc:/usr/lib/hadoop/.//hadoop-annotations-2.0.0-cdh4.3.0.jar:/usr/lib/hadoop/.//hadoop-annotations.jar:/usr/lib/hadoop/.//hadoop-auth-2.0.0-cdh4.3.0.jar:/usr/lib/hadoop/.//hadoop-auth.jar:/usr/lib/hadoop/.//hadoop-common-2.0.0-cdh4.3.0.jar:/usr/lib/hadoop/.//hadoop-common-2.0.0-cdh4.3.0-tests.jar:/usr/lib/hadoop/.//hadoop-common.jar:/usr/lib/hadoop/.//lib:/usr/lib/hadoop/.//libexec:/usr/lib/hadoop/.//sbin:/usr/lib/hadoop-hdfs/./:/usr/lib/hadoop-hdfs/lib/asm-3.2.jar:/usr/lib/hadoop-hdfs/lib/commons-cli-1.2.jar:/usr/lib/hadoop-hdfs/lib/commons-codec-1.4.jar:/usr/lib/hadoop-hdfs/lib/commons-daemon-1.0.3.jar:/usr/lib/hadoop-hdfs/lib/commons-el-1.0.jar:/usr/lib/hadoop-hdfs/lib/commons-io-2.1.jar:/usr/lib/hadoop-hdfs/lib/commons-lang-2.5.jar:/usr/lib/hadoop-hdfs/lib/commons-logging-1.1.1.jar:/usr/lib/hadoop-hdfs/lib/guava-11.0.2.jar:/usr/lib/hadoop-hdfs/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop-hdfs/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop-hdfs/lib/jasper-runtime-5.5.23.jar:/usr/lib/hadoop-hdfs/lib/jersey-core-1.8.jar:/usr/lib/hadoop-hdfs/lib/jersey-server-1.8.jar:/usr/lib/hadoop-hdfs/lib/jetty-6.1.26.cloudera.2.jar:/usr/lib/hadoop-hdfs/lib/jetty-util-6.1.26.cloudera.2.jar:/usr/lib/hadoop-hdfs/lib/jline-0.9.94.jar:/usr/lib/hadoop-hdfs/lib/jsp-api-2.1.jar:/usr/lib/hadoop-hdfs/lib/jsr305-1.3.9.jar:/usr/lib/hadoop-hdfs/lib/log4j-1.2.17.jar:/usr/lib/hadoop-hdfs/lib/protobuf-java-2.4.0a.jar:/usr/lib/hadoop-hdfs/lib/servlet-api-2.5.jar:/usr/lib/hadoop-hdfs/lib/xmlenc-0.52.jar:/usr/lib/hadoop-hdfs/lib/zookeeper-3.4.5-cdh4.3.0.jar:/usr/lib/hadoop-hdfs/.//bin:/usr/lib/hadoop-hdfs/.//cloudera:/usr/lib/hadoop-hdfs/.//hadoop-hdfs-2.0.0-cdh4.3.0.jar:/usr/lib/hadoop-hdfs/.//hadoop-hdfs-2.0. ดังนั้นบรรทัดคำสั่งยาวเกินไปและคำสั่งหยุดกลางวลี ฉันจะเห็นมันทั้งหมดได้อย่างไร?
26 linux  ps 

2
Bash ไม่พบโปรแกรมแม้ว่าจะอยู่ในเส้นทางของฉัน
ฉันมีโปรแกรมบนเส้นทางของฉัน โปรแกรมรันเมื่อเรียกใช้งานโดยระบุพา ธ แบบเต็ม แต่ไม่พบโปรแกรมเมื่อฉันรันด้วยชื่อของมัน โดยพื้นฐานแล้วฉันต้องการเข้าใจว่าผลลัพธ์ด้านล่างเป็นไปได้อย่างไรและจะแก้ไขอย่างไรเพื่อให้โปรแกรมของฉันสามารถพบได้โดยไม่ต้องระบุเส้นทางแบบเต็ม: root:/usr/local/bin# ./siege **************************************************** siege: could not open /usr/local/bin/etc/siegerc run 'siege.config' to generate a new .siegerc file **************************************************** root:/usr/local/bin# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games root:/usr/local/bin# siege bash: /usr/bin/siege: No such file or directory root:/usr/local/bin# wtf!?!? ฉันใช้ Ubuntu 12.04 โดยใช้ bash นอกจากนี้โปรดทราบว่าผลลัพธ์ของคำเตือนจากการล้อมนั้นไม่เกี่ยวข้องกับวัตถุประสงค์ของคำถามนี้เพราะฉันสนใจเพียงแค่ว่าจะสามารถค้นหาและเรียกใช้โปรแกรมได้หรือไม่
26 bash  path 

10
วิธีบู๊ต Linux เป็นโหมดบรรทัดคำสั่งแทน GUI ได้อย่างไร
ฉันใช้ Red Hat Linux 32 บิตใน VM ของฉัน ฉันต้องการบูตมันเป็นโหมดบรรทัดคำสั่งไม่ใช่โหมด GUI ฉันรู้ว่าจากที่นั่นฉันสามารถเปลี่ยนเป็นโหมด GUI โดยใช้startxคำสั่ง ฉันจะสลับกลับไปเป็นโหมดบรรทัดคำสั่งได้อย่างไร

5
ทำไมการวนซ้ำไฟล์เร็วกว่าการอ่านลงในหน่วยความจำและการคำนวณสองครั้งทำไม
ฉันกำลังเปรียบเทียบสิ่งต่อไปนี้ tail -n 1000000 stdout.log | grep -c '"success": true' tail -n 1000000 stdout.log | grep -c '"success": false' ด้วยดังต่อไปนี้ log=$(tail -n 1000000 stdout.log) echo "$log" | grep -c '"success": true' echo "$log" | grep -c '"success": false' และน่าประหลาดใจที่สองใช้เวลานานกว่าครั้งแรกเกือบ 3 เท่า มันควรจะเร็วกว่านี้ใช่ไหม
26 bash  performance  io 

4
วิธีการแก้ปัญหาและแก้ไขการเติมข้อความอัตโนมัติช้าในทุบตี?
หลังจากอัปเดตล่าสุด (Ubuntu 12.04 LTS) TAB เสร็จสมบูรณ์ในบรรทัดคำสั่งช้า หลังจากป้อนคำสั่งบางส่วน (เช่นevi [TAB]) หรือชื่อไฟล์บางส่วน (เช่นevince somedocu[TAB]) เชลล์บางครั้งอาจไม่เสมอไปแขวนเป็นเวลาหลายวินาที โดยส่วนตัวแล้วฉันต้องการให้การเติมข้อความอัตโนมัติที่มีประสิทธิภาพน้อยลงไปยังเครื่องที่ช้า มีวิธีแก้ไขง่ายๆหรือไม่? แก้ไข:ข้อมูลเพิ่มเติมที่เกี่ยวข้องกับความคิดเห็น: PATH นั้นค่อนข้างมาตรฐาน ~ / bin มีสคริปต์ทุบตีบางส่วน $ echo $PATH /home/USERNAME/bin:/usr/local/bin:/usr/bin:/bin:/usr/games จำนวนไฟล์ในไดเรกทอรีการทำงานน้อยกว่า 100 คุณลักษณะการเติมข้อความอัตโนมัติช้าลงอย่างมากหลังจากการทำงานของดิสก์ผิดปกติ (อัพเกรดระบบ) ดังนั้นจึงเป็นไปได้ว่าการอ่านซ้ำ / usr / bin และไดเรกทอรีอื่น ๆ ทำให้เกิดความล่าช้า

4
เซิร์ฟเวอร์ค้นหาว่าพอร์ตลูกค้าใดที่จะส่งไป?
ตามที่ฉันเข้าใจแล้วนี่เป็นสิ่งที่เกิดขึ้นเมื่อไคลเอนต์ทำการร้องขอการเชื่อมต่อ: เซิร์ฟเวอร์จะถูกผูกไว้กับหมายเลขพอร์ตเฉพาะ หมายเลขพอร์ตนั้นจะเชื่อมโยงกับกระบวนการรับฟังเสมอ เนื่องจากมีเพียงเซิร์ฟเวอร์เท่านั้นที่กำลังรับฟังการเชื่อมต่อขาเข้าเราจึงไม่จำเป็นต้องเชื่อมโยงฝั่งไคลเอ็นต์ เซิร์ฟเวอร์จะคอยฟังหมายเลขพอร์ตนั้นต่อไป ลูกค้าจะส่งconnect()คำขอ accept()เซิร์ฟเวอร์จะยอมรับคำขอใช้ ทันทีที่เซิร์ฟเวอร์ยอมรับคำขอของลูกค้าเคอร์เนลจะจัดสรรหมายเลขพอร์ตแบบสุ่มสำหรับเซิร์ฟเวอร์เพิ่มเติมsend()และreceive()เนื่องจากหมายเลขพอร์ตเดียวกันบนเซิร์ฟเวอร์ไม่สามารถใช้สำหรับการส่งและฟังได้และพอร์ตก่อนหน้ายังคงอยู่ กำลังฟังการเชื่อมต่อใหม่ จากทั้งหมดนั้นเซิร์ฟเวอร์จะหาพอร์ตที่ไคลเอ็นต์ได้รับอย่างไร ฉันรู้ว่าไคลเอนต์จะส่งเซกเมนต์ TCP พร้อมพอร์ตต้นทางและพอร์ตปลายทางดังนั้นเซิร์ฟเวอร์จะใช้พอร์ตต้นทางของเซ็กเมนต์นั้นเป็นพอร์ตปลายทาง แต่เซิร์ฟเวอร์เรียกใช้ฟังก์ชันใดเพื่อค้นหาข้อมูลเกี่ยวกับพอร์ตนั้น มันคือaccept()อะไร
26 tcp  socket 


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