Unix & Linux

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

1
วิธีหลีกเลี่ยง / usr / bin / env ถูกทำเครื่องหมายใน systemd ล็อกเป็นไฟล์เรียกทำงาน
ฉันได้สร้างบริการ systemd เรียกใช้โปรแกรมประยุกต์คราวบนพื้นฐานของข้อมูลที่พบในบทความนี้ บทความฉบับย่อแนะนำให้หลีกเลี่ยงเชลล์สคริปต์แรปเปอร์และเรียกใช้จาวาโดยตรงด้วยสภาพแวดล้อมและบรรทัดคำสั่งที่เหมาะสม นี่คือบริการทั้งหมดของ systemd (โดยแทนที่ชื่อแอพ): [Unit] Description=MyApp Tomcat Container [Service] EnvironmentFile=/opt/myapp/environment ExecStart=/usr/bin/env ${JAVA_HOME}/bin/java $JAVA_OPTS $CATALINA_OPTS \ -classpath ${CLASSPATH} \ -Dcatalina.base=${CATALINA_BASE} \ -Dcatalina.home=${CATALINA_HOME} \ -Djava.endorsed.dirs=${JAVA_ENDORSED_DIRS} \ -Djava.io.tmpdir=${CATALINA_TMPDIR} \ -Djava.util.logging.config.file=${CATALINA_BASE}/conf/logging.properties \ -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \ org.apache.catalina.startup.Bootstrap start ExecStop=/usr/bin/env $JAVA_HOME/bin/java $JAVA_OPTS \ -classpath $CLASSPATH \ -Dcatalina.base=$CATALINA_BASE \ -Dcatalina.home=$CATALINA_HOME \ -Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS \ -Djava.io.tmpdir=$CATALINA_TMPDIR \ …

5
การลบไฟล์คนพเนจรฉันเห็น. nfs0000000000b869e300000001
ฉันลบไฟล์และตอนนี้ฉันเห็น: $ ls total 64 -rw-rw-r-- 1 502 17229 Sep 17 16:42 page_object_methods.rb drwxrwxr-x 7 502 238 Sep 18 18:41 ../ -rw-rw-r-- 1 502 18437 Sep 18 18:41 new_page_object_methods.rb -rw-r--r-- 1 502 16384 Sep 18 18:42 .nfs0000000000b869e300000001 drwxrwxr-x 5 502 170 Sep 21 13:48 ./ 13:48:11 *vagrant* ubuntu-14 selenium_rspec_conversion และถ้าฉันพยายามที่จะลบมัน: …
15 files  nfs  rm  vagrant 

3
sshfs - ปลายทางการขนส่งไม่ได้เชื่อมต่อ
หลังจากติดตั้งเซิร์ฟเวอร์ฉันไม่สามารถติดตั้งได้ sshfs root@domain.com:/var /remote_mount fuse: bad mount point `/remote_mount': Transport endpoint is not connected ปรับปรุง # ssh root@domain.com The authenticity of host 'domain.com (xxx.xxx.xxx.xxx)' can't be established. ECDSA key fingerprint is 57:b6:bd:76:17:80:73:85:4a:14:8a:6f:dc:fa:fe:7c. Are you sure you want to continue connecting (yes/no)?
15 ssh  sshfs 

2
Linux ล้างข้อมูลซ็อกเก็ตโดเมนนามธรรมโดยอัตโนมัติหรือไม่
มีคำตอบที่ดีเกี่ยวกับ StackOverflow เกี่ยวกับการมอบการล็อกที่ดีกว่าสำหรับ daemons (สังเคราะห์จากEduardo Fleury ) ที่ไม่ได้ขึ้นอยู่กับกลไกการล็อคไฟล์ PID ทั่วไปสำหรับ daemons มีความคิดเห็นที่ดีมากมายเกี่ยวกับสาเหตุที่ไฟล์ PID ล็อกบางครั้งอาจทำให้เกิดปัญหาดังนั้นฉันจะไม่ทำใหม่ที่นี่ กล่าวโดยย่อโซลูชันนี้ใช้ซ็อกเก็ตโดเมนเนมสเปซนามธรรมของ Linux ซึ่งคอยติดตามซ็อกเก็ตตามชื่อของคุณแทนที่จะใช้ไฟล์ซึ่งสามารถติดตั้งได้หลังจากที่ daemon คือ SIGKILL ตัวอย่างแสดงให้เห็นว่า Linux ดูเหมือนว่าจะเพิ่มซ็อกเก็ตเมื่อกระบวนการตาย แต่ฉันไม่สามารถหาเอกสารที่ชัดเจนใน Linux ที่บอกว่า Linux ทำอะไรกับซ็อกเก็ตนามธรรมเมื่อกระบวนการที่ถูกผูกไว้คือ SIGKILL มีใครรู้บ้าง ใส่อีกวิธีหนึ่งเมื่อซ็อกเก็ตบทคัดย่อให้อิสระที่จะใช้อีกครั้งอย่างแม่นยำ? ฉันไม่ต้องการแทนที่กลไกไฟล์ PID ด้วยซ็อกเก็ตที่เป็นนามธรรมเว้นแต่จะแก้ไขปัญหาได้อย่างแน่นอน

1
เหตุใดจึงไม่ Ctrl + m และ Ctrl + q ใช้ในทางลัด bash
เมื่อเร็ว ๆ นี้ฉันได้ตรวจสอบปุ่มทางลัดทุบตีและพยายามหาปุ่มที่เหมาะสมสำหรับรหัสเปิดใช้งาน tmux ของฉัน ฉันคิดว่ามันน่าสนใจที่ctrl + mและctrl + qไม่ได้ใช้ในทางลัดทุบตีตามhttps://en.wikipedia.org/wiki/Bash_(Unix_shell) ทำไมพวกเขาไม่ใช้? ฉันรู้สึกว่าctrl + mมีประโยชน์มาก ชุดค่าผสมทั้งสองนี้มีจุดประสงค์จากการออกแบบเพื่อDIY (define it yourself)การใช้งานหรือไม่ หรือมีเรื่องอื่นหรือไม่

6
ฉันจะแสดงผลลัพธ์ที่ n ของคำสั่ง ls ได้อย่างไร?
ฉันใช้คำสั่งนี้เพื่อแสดงผลลัพธ์แรกของไฟล์ในไดเรกทอรีของฉัน ls | head -n 1 คำถามง่ายๆของฉันคือฉันจะแก้ไขคำสั่งนี้เพื่อแสดงว่าผลลัพธ์ที่ n ได้อย่างไร ขอบคุณ!

1
อัพเดตประวัติทุบตีในเทอร์มินัลอื่นเมื่อออกจากเทอร์มินัลหนึ่ง
ฉันรู้ว่าคำถามนี้ไม่ปิดบังเนื่องจากมีการถามที่นี่ให้อัปเดต (และทำซ้ำที่นี่) สิ่งที่ฉันพยายามทำให้สำเร็จนั้นต่างออกไปเล็กน้อย ฉันไม่ชอบความคิดที่จะให้ฉันเขียนไฟล์ใหม่ทุกครั้งที่lsฉันพิมพ์ ( history -a; history -c; history -r) ฉันต้องการอัปเดตไฟล์เมื่อออก ง่ายมาก (จริง ๆ แล้วเป็นค่าเริ่มต้น) แต่คุณต้องต่อท้ายแทนที่จะเขียนใหม่: shopt -s histappend ตอนนี้เมื่อปิดเทอร์มินัลฉันต้องการทำให้คนอื่น ๆ ทั้งหมดที่ยังคงเปิดอยู่เพื่อรับทราบการอัพเดต ฉันชอบทำสิ่งนี้โดยไม่ตรวจสอบผ่าน$PS1ทุกอย่างcommandที่ฉันพิมพ์ ฉันคิดว่ามันจะดีกว่าถ้าจะจับสัญญาณบางอย่าง คุณจะทำอย่างไร ถ้าไม่ได้เป็นไปได้อาจจะเป็นที่เรียบง่ายcronjob? เราจะไขปริศนานี้ได้อย่างไร?

6
วิธีแก้ไขการดึงคีย์ GPG ล้มเหลว: [Errno 14]
ฉันใช้ Centos 6.5 และเมื่อฉันต้องการติดตั้งแพคเกจจากyumฉันได้รับข้อผิดพลาดนี้: GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puias ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
15 rpm  repository 

2
วิธีการตรวจสอบสิ่งที่อยู่ในการแลกเปลี่ยน?
ในระบบของฉันฉันมีจำนวน swap ที่ใช้: undefine@uml:~$ free total used free shared buffers cached Mem: 16109684 15848264 261420 633496 48668 6096984 -/+ buffers/cache: 9702612 6407072 Swap: 15622140 604 15621536 จะตรวจสอบสิ่งที่แลกเปลี่ยนได้อย่างไร ฉันพยายามตรวจสอบผ่านกระบวนการ แต่สำหรับ pid ทุกระบบ VmSwap คือ 0: undefine@uml:~$ awk '/VmSwap/ {print $2}' /proc/*/status |uniq 0 มีอะไรในการสลับ? ฉันคิดเกี่ยวกับ tmpfs - แต่ฉันอ่านไฟล์ทั้งหมดใน tmpfs-es อีกครั้งและมันไม่ได้ล้างขนาดของ swap
15 linux  swap 

2
โมดูลไดรเวอร์ถูกโหลดและยกเลิกการโหลดโดยอัตโนมัติหรือไม่?
บน Ubuntu 14.04 ผมพบว่าเมื่อฉันไม่เสียบอะแดปเตอร์ไร้สายของฉันภายนอกโมดูลยังคงแสดงในrt2800usblsmod การโหลดโมดูลไดรเวอร์อัตโนมัติจะเกิดขึ้นเมื่อใด มันคือเมื่ออุปกรณ์เชื่อมต่อกับคอมพิวเตอร์หรือเมื่อระบบปฏิบัติการบูท? การยกเลิกการโหลดโมดูลไดรเวอร์จะเกิดขึ้นโดยอัตโนมัติเมื่อใด มันคือเมื่ออุปกรณ์ถูกตัดการเชื่อมต่อกับคอมพิวเตอร์หรือเมื่อระบบปฏิบัติการปิดตัวลง?

4
วิธีการแพดขนาดไฟล์ที่ต้องการ?
ฉันมีไฟล์ที่ฉันต้องการแพดจนกว่าจะถึง 16 MiB (16777216 ไบต์) ปัจจุบันคือ 16515072 ไบต์ ความแตกต่างคือ 262144 ไบต์ ฉันจะรองมันได้อย่างไร ดูเหมือนว่าจะใช้งานไม่ได้: cp smallfile.img largerfile.img dd if=/dev/zero of=largerfile.img bs=1 count=262144
15 dd 

5
พิมพ์รูปแบบที่ไม่ตรงกันโดยใช้ grep พร้อมรูปแบบจากไฟล์
patterns.txt: "BananaOpinion" "ExitWarning" "SomeMessage" "Help" "Introduction" "MessageToUser" strings.xml <string name="Introduction">One day there was an apple that went to the market.</string> <string name="BananaOpinion">Bananas are great!</string> <string name="MessageToUser">We would like to give you apples, bananas and tomatoes.</string> ผลลัพธ์ที่คาดหวัง: "ExitWarning" "SomeMessage" "Help" ฉันจะพิมพ์คำศัพท์patterns.txtที่ไม่พบได้Strings.xmlอย่างไร ฉันสามารถพิมพ์ตรง / ตรงกันสายในStrings.xmlแต่ฉันจะพิมพ์เปรียบรูปแบบ ? ฉันใช้ ggrep (GNU grep) รุ่น 2.21 …
15 grep 

1
คุณต้องการระบุตัวเลือก“ ค่าเริ่มต้น” ใน fstab หรือไม่?
Arch วิกิพีเดียในการfstabระบุตัวเลือกของ/ที่จะเป็นdefaults,noatimeแต่ในการติดตั้งของฉันเริ่มต้นจะถูกสร้างขึ้นพร้อมกับตัวเลือกของfstab Arch วิกิพีเดียครอบคลุมประเด็น สิ่งที่ฉันอยากรู้คือตัวเลือก หน้าพูดว่า:rw,relatimeatimedefaultsmanmount ค่าเริ่มต้น ใช้ตัวเลือกเริ่มต้น: rw, suid, dev, exec, auto, nouser และ async โปรดทราบว่าชุดตัวเลือกการเมานต์เริ่มต้นที่แท้จริงทั้งหมดขึ้นอยู่กับเคอร์เนลและประเภทระบบไฟล์ ดูจุดเริ่มต้นของส่วนนี้สำหรับรายละเอียดเพิ่มเติม มีการใช้ตัวเลือกเริ่มต้นเฉพาะเมื่อdefaultsมีการจัดหาตัวเลือกหรือใช้ในทุกกรณีหรือไม่ ฉันต้องการdefaultsในของฉันfstab?
15 fstab  options 

3
บันทึกรหัสออกในภายหลัง
ดังนั้นฉันจึงมีสคริปต์เล็กน้อยสำหรับการทดสอบบางอย่าง javac *.java && java -ea Test rm -f *.class ตอนนี้ปัญหาของเรื่องนี้ก็คือเมื่อฉันเรียกใช้สคริปต์./testก็จะส่งกลับรหัสทางออกที่ประสบความสำเร็จแม้ว่าการทดสอบล้มเหลวเพราะrm -f *.classประสบความสำเร็จ วิธีเดียวที่ฉันสามารถคิดให้มันทำในสิ่งที่ฉันต้องการรู้สึกน่าเกลียด: javac *.java && java -ea Test test_exit_code=$? rm -f *.class if [ "$test_exit_code" != 0 ] ; then false; fi แต่ดูเหมือนว่ามีปัญหาบางอย่างที่พบได้ทั่วไป - ทำงานทำความสะอาดแล้วส่งคืนรหัสทางออกของงานต้นฉบับ อะไรคือวิธีที่ใช้สำนวนที่สุดในการทำสิ่งนี้ (โดยทั่วไปคือทุบตีหรือแค่กระสุน)?

4
sandboxing ที่ปลอดภัยที่สุดที่เป็นไปได้ง่ายที่สุด (ต้องการทรัพยากรที่ จำกัด )
ฉันกำลังทำงานในโครงการที่ใช้การจำลองแบบกระจาย: โค้ดโดยพลการถูกดำเนินการบนหลายโหนดและผลลัพธ์จะถูกรวบรวมและรวมในภายหลัง แต่ละโหนดเป็นอินสแตนซ์ของเครื่องเสมือน Ubuntu Linux และเรียกใช้กระบวนการหลักซึ่งดูแลการส่งต่อรหัสที่จะถูกดำเนินการไปยังกระบวนการของผู้ปฏิบัติงานจำนวนมาก (1 สำหรับแต่ละคอร์) คำถามนี้เกี่ยวกับวิธีการตรวจสอบให้แน่ใจว่าผู้ปฏิบัติงานแต่ละคนทำงานในสภาพแวดล้อมแบบ sandbox โดยไม่ต้องหันไปใช้อินสแตนซ์ของเครื่องเสมือนสำหรับแต่ละคน ข้อกำหนดที่แน่นอนสำหรับคนงานคือ: fs : ไม่มีสิทธิ์ในการเขียนสิทธิ์แบบอ่านอย่างเดียวถูก จำกัด ไว้ที่ไดเรกทอรีเดียว (และโฟลเดอร์ย่อย) สุทธิ : อนุญาตการสื่อสารในท้องถิ่นเท่านั้น (IPC, TCP, อะไรก็ตาม ... ) mem : ขีดสูงสุดในการใช้งานหน่วยความจำ (ไม่มีหน่วยความจำ swap) ฆ่าถ้าเกินขีด จำกัด mem cpu : อนุญาตให้ 1 คอร์เท่านั้น, ฆ่าถ้าเกินเวลาที่กำหนด ไม่ควรมีข้อ จำกัด อื่น ๆ : ผู้ปฏิบัติงานควรสามารถโหลดไลบรารีไดนามิก (จากโฟลเดอร์แบบอ่านอย่างเดียว), วางไข่เธรดหรือกระบวนการใหม่, เรียกฟังก์ชันระบบ, ecc …

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