Unix & Linux

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

4
มีวิธีตั้งค่าสิทธิ์เพื่อให้กระบวนการสามารถใช้อุปกรณ์เฉพาะได้หรือไม่
อย่างที่คุณสามารถอ่านได้ที่นี่ logind ซึ่งเป็นส่วนหนึ่งของ systemd สามารถตั้งค่าการอนุญาตให้อุปกรณ์บางอย่างสำหรับเซสชันผู้ใช้ นอกจากนี้ยังมีวิดีโอแสดงให้เห็นว่าพฤติกรรมเช่นนี้ทำงานอย่างไรในทางปฏิบัติ กล่าวโดยย่อถ้าคุณเริ่มต้นสมมติว่า amarok และคุณเล่นเพลงบางเพลงคุณจะได้ยินเสียงจนกว่าคุณจะเปลี่ยนไปใช้ผู้ใช้อื่นหรือ TTY ที่คุณมีเพียงพรอมต์การเข้าสู่ระบบ นั่นเป็นเพราะเซสชั่นที่ใช้งานกลายเป็นไม่ได้ใช้งาน ฉันรู้ว่าคุณสามารถเพิ่มผู้ใช้ (หรือผู้ใช้) ในกลุ่มเฉพาะในกรณีนี้ "เสียง" และนั่นจะ 'แก้ไข' ปัญหานี้ แต่ฉันสงสัยว่ามีวิธีแก้ไขปัญหาอื่นหรือไม่ สิ่งที่ฉันต้องการคือการตั้งค่าสิทธิ์บางอย่างสำหรับกระบวนการเพื่อให้สามารถใช้การ์ดเสียงได้ตลอดเวลาแม้ว่าผู้ใช้ทุกคนจะถูกล็อคเซสชันก็ตาม เป็นไปได้ไหม ฉันถามเพราะฉันมักจะฟังเพลงและฉันไม่ต้องการจอมอนิเตอร์ของฉันเป็นส่วนใหญ่ดังนั้นฉันแค่ล็อคหน้าจอ แต่เมื่อฉันล็อคหน้าจอเซสชันที่ใช้งานจะไม่ทำงานและ amarok หยุดเล่น และใช่หน้าจอควรถูกล็อคและไม่เพียงปิด แก้ไข: ฉันไม่คิดว่ามันเป็นเรื่องสำคัญที่ฉันใช้ distro เพราะถ้ามี systemd อยู่บนกระดานมันจะเป็นปัญหาเดียวกันแน่นอน อย่างไรก็ตามฉันใช้ debian sid แต่แพ็คเกจบางอย่างเช่น systemd, udev (และบางส่วนพึ่งพา) มาจากสาขาทดลองและตอนนี้เป็นรุ่น 219-9

4
นับจำนวนไฟล์ในไดเรกทอรีที่มีสตริงชื่อเฉพาะหรือไม่
ฉันมีไฟล์ต่อไปนี้: Codigo-0275_tdim.matches.tsv Codigo-0275_tdim.snps.tsv FloragenexTdim_haplotypes_SNp3filter17_single.tsv FloragenexTdim_haplotypes_SNp3filter17.tsv FloragenexTdim_SNP3Filter17.fas S134_tdim.alleles.tsv S134_tdim.snps.tsv S134_tdim.tags.tsv ฉันต้องการนับจำนวนไฟล์ที่มีคำsnp(ตัวพิมพ์เล็กและใหญ่) ในชื่อของพวกเขา ฉันพยายามใช้ grep -a 'snp' | wc -l แต่ฉันก็รู้ว่าgrepค้นหาในไฟล์ คำสั่งที่ถูกต้องในการสแกนชื่อไฟล์คืออะไร?
12 bash 

4
การจัดการกลุ่ม cg ต้องการการเข้าถึงรูตหรือไม่?
ฉันพยายามทำงานกับกลุ่มควบคุมในระบบปฏิบัติการสองระบบ (Ubuntu และ CentOS) มีข้อกังวลเล็กน้อยที่ฉันอยากจะถาม ฉันพยายามสร้างกลุ่มควบคุมโดยใช้cgcreateคำสั่งและดูเหมือนว่าต้องมีการเข้าถึงรูทบนเครื่อง ตัวอย่างทั้งหมดที่ฉันเห็นมาแล้วไม่ได้พูดอะไรเกี่ยวกับการเป็นผู้ใช้รูทสำหรับการสร้างหรือแก้ไขกลุ่มควบคุม จำเป็นหรือไม่ที่จะต้องเป็นผู้ใช้รูท? เป้าหมายสุดท้ายคือการเขียนแอปพลิเคชัน C ++ ที่สร้างและจัดการกลุ่มควบคุมเพื่อควบคุมทรัพยากรโดยใช้ libcgroup API แต่แอปพลิเคชัน C ++ จะไม่ถูกเรียกใช้โดยผู้ใช้รูทใด ๆ อาจเป็นผู้ใช้ทั่วไปก็ได้

2
จะเลิกทำการเปลี่ยนแปลงใน command-history ได้อย่างไร?
ในระบบ UNIX คุณสามารถกดลูกศรบนและล่างเพื่อเลื่อนดูคำสั่งก่อนหน้า มันมีประโยชน์มาก บางครั้งฉันก็ขึ้นไปและพบคำสั่งที่ฉันต้องการใช้อีกครั้ง แต่มีรูปแบบบางอย่าง historyถ้าฉันจะเปลี่ยนแปลงดังกล่าวแล้วผมไม่ได้มีวิธีการที่จะได้รับกลับคำสั่งเดิมจนกว่าฉันตรวจสอบใน มีวิธีใดบ้างที่จะ "เลิกทำ" การเปลี่ยนแปลงคำสั่งในประวัติการเข้าใช้ผ่านทางคีย์? วิธีแก้ปัญหาปัจจุบันของฉันคือการผนวก#คำสั่ง วิธีนี้ดำเนินการคำสั่งปัจจุบันเป็นความคิดเห็นจึงไม่มีอะไรเกิดขึ้น จากนั้นฉันสามารถเรียกดูอีกครั้งผ่านคำสั่งด้วยปุ่มต่างๆ ปัญหาคือว่าคำสั่งที่ฉันใช้อาจจะเป็นรายการที่อยู่ห่างไกลในรายการดังนั้นการขึ้นอีกสองร้อยครั้งนั้นค่อนข้างน้อย Control + R ไม่ใช่วิธีแก้ปัญหาอย่างใดอย่างหนึ่งเนื่องจากฉันอาจจำไม่ได้ว่าสิ่งที่ฉันกำลังมองหา ตัวอย่าง ฉันพิมพ์ "50 คำสั่งที่ผ่านมา" ต่อไปนี้: ls -l /etc/httpd/conf/ ตอนนี้ฉันขึ้นไปที่บรรทัดนั้นและเปลี่ยนเป็น ls -l /etc/init.d/ แต่ไม่ได้กด Enter ตอนนี้ฉันต้องการไปที่ls -l /etc/httpd/conf/อีกครั้ง สภาพแวดล้อมของฉัน $ echo $SHELL /bin/bash $ echo $TERM xterm

3
วิธีปิดใช้งานบริการโดยไม่ใช้ 'systemctl ปิดการใช้งาน'
มีบริการที่ฉันต้องการเรียกใช้เฉพาะเมื่อบริการอื่นล้มเหลว ( [Unit] OnFailure=foo) แต่ฉันไม่ต้องการให้บริการนี้ ( foo) เริ่มทำงานโดยอัตโนมัติเมื่อบูต ทางเลือกหนึ่งกำลังทำงานอยู่systemctl disable fooแต่ฉันกำลังมองหาวิธีอื่น แบ็คกราวด์: ฉันกำลังสร้างอิมเมจระบบปฏิบัติการและฉันไม่ต้องการบูตเครื่องให้รันคำสั่งนั้น ( systemctl disable foo) จากนั้นปิดเครื่องก่อนที่จะประกาศอิมเมจของฉันเป็นครั้งสุดท้าย
12 systemd 

2
เปลี่ยนรหัสผ่านโดยทางโปรแกรม
ใน Raspian รุ่นปัจจุบันฉันรู้ว่ามันเป็นไปได้ที่จะเปลี่ยนรหัสผ่านของผู้ใช้ที่เข้าสู่ระบบในปัจจุบันจากบรรทัดคำสั่งดังนี้: sudo passwd ซึ่งจะแจ้งให้ผู้ใช้ป้อนรหัสผ่านใหม่สองครั้ง สิ่งนี้จะสร้างผลลัพธ์เช่น: Changing password for pi. (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully ฉันสงสัยว่ามีวิธีที่เป็นไปได้ในการเปลี่ยนรหัสผ่านโดยทางโปรแกรมเช่นจากเชลล์สคริปต์ ฉันพยายามสร้างสคริปต์การกำหนดค่าเพื่อปรับใช้กับ Raspberry Pis ของฉันและฉันไม่ต้องการพิมพ์รหัสผ่านใหม่ด้วยตนเอง

2
สร้างตัวแปรและกำหนดค่าผ่านทางลูป (ทุบตี)
มีวิธีสร้างตัวแปร bash และกำหนดค่าผ่านลูปหรือไม่ บางสิ่งบางอย่างตาม: #!/bin/bash c=0 for file in $( ls ); do var"$c"="$file"; let c=$c+1; done แก้ไข: ขอบคุณ @Costas และ @mdpc สำหรับการชี้ให้เห็นว่านี่จะเป็นทางเลือกที่ไม่ดีสำหรับรายการ คำถามเป็นเชิงทฤษฎีเท่านั้น

2
ฉันจะอนุญาตให้ผู้ใช้ที่ไม่ใช่รูทควบคุมเซอร์วิส systemd ด้วยอินสแตนซ์ได้อย่างไร
ฉันต้องการอนุญาตให้ผู้ใช้ในdbaกลุ่มสามารถควบคุมdatabase@บริการได้ คำตอบสำหรับคำถามที่เกี่ยวข้องนี้คือการทำรายการsystemctl"คำกริยา" ทั้งหมดที่ฉันต้องการอนุญาตในsudoersไฟล์อย่างไรก็ตามนั่นไม่ได้ใช้กับกรณีของฉันเพราะฉันไม่รู้ว่าฐานข้อมูลใดที่อาจมีอยู่ในระบบ ตัวอย่างเช่นถ้าฉันแสดง %dba = /usr/bin/systemctl start database@awsesomeapp %dba = /usr/bin/systemctl start database@anotherawsesomeapp %dba = /usr/bin/systemctl start database@yetanotherawsesomeapp %dba = /usr/bin/systemctl start database@wowyetanotherawsesomeapp # ... other "verbs" omitted for brevity ที่ไม่ครอบคลุมอินสแตนซ์ที่อาจมีอยู่ในอนาคตและ dba จะไม่สามารถทำได้ $ sudo systemctl start database@omgwowyetanotherawsesomeapp อย่างไรก็ตามฉันคิดในแง่ของบรรจุภัณฑ์มากกว่าที่คิดกับระบบเฉพาะ โปรดทราบว่าดังที่แสดงในคำตอบที่น่าอัศจรรย์สำหรับคำถามอื่นที่เกี่ยวข้องการใช้ sudo globs สำหรับสิ่งนี้ไม่ปลอดภัยในท้ายที่สุด: %dba ALL = /usr/bin/systemctl start database@[a-z]* …

2
Brandbot คืออะไร
บริการ "brandbot" ทำงานใน Centos 7 คืออะไร มันทำอะไร? ทั้งหมดที่ฉันสามารถหาได้ (ไม่มี manpage) คือ "บริการสร้างแบรนด์ที่ยืดหยุ่น" และเป็นส่วนหนึ่งของ repo "base"
12 centos  services 


3
จะแสดงเฉพาะบรรทัดสุดท้ายของรายชื่อได้อย่างไร
สมมติว่าฉันสร้างรายชื่อและจัดเรียงไฟล์ตามคุณสมบัติชั่วคราว: ls -ltr -rwxrwxrwx 1 bla bla 4096 Feb 01 20:10 foo1 -rwxrwxrwx 1 bla bla 4096 Feb 01 20:12 foo2 . . . -rwxrwxrwx 1 bla bla 4096 Mar 05 13:25 foo1000 ฉันควรเพิ่มอะไรไว้ด้านหลัง ls -ltr ในไปป์ไลน์เพื่อรับเฉพาะบรรทัดสุดท้ายของรายชื่อ ฉันรู้ว่ามีคนใจอ่อนและตกใจ แต่ฉันไม่รู้วิธีใช้พวกเขาฉันรู้ว่าพวกเขาสามารถทำอะไรได้บ้าง
12 command-line  sed  awk  ls 

7
มี linux OS ที่สามารถโหลดลงใน RAM ทั้งหมดได้หรือไม่
ฉันมีหน่วยความจำ 32 GB ในพีซีของฉัน นี่เป็นมากกว่าเพียงพอสำหรับระบบปฏิบัติการลินุกซ์ มี Linux เวอร์ชันที่ใช้งานง่าย (ควรให้เป็น Ubuntu) ที่สามารถบู๊ตผ่านออปติคัลหรือดิสก์ USB และทำงานอย่างสมบูรณ์ภายใน RAM หรือไม่? ฉันรู้ว่าดิสก์สดสามารถบู๊ตด้วยฮาร์ดดิสก์ได้ แต่มีบางสิ่งที่ยังคงเล่นแผ่นดิสก์อยู่และใช้เวลาในการโหลด ฉันต้องการทุกอย่างที่โหลดลงใน RAM แล้วเรียกใช้จากที่นั่นระเหยอย่างสมบูรณ์ ไฟล์ใด ๆ ที่ฉันต้องการสร้างจะถูกบันทึกไว้ในดิสก์ USB ฉันทราบhttp://en.wikipedia.org/wiki/List_of_Linux_distribution_that_run_from_RAMแต่สิ่งเหล่านี้ทั้งหมดขึ้นอยู่กับ RAM เล็กน้อย ฉันต้องการบางสิ่งเช่นอูบุนตูแทนที่จะเป็นรุ่นไลท์
12 ram  ramdisk 

4
ฉันจะแก้ไขเส้นทางของ pip ได้อย่างไร
ฉันพยายามรับ pip ให้ชี้ไปที่การติดตั้งอื่นแทนที่จะเป็นค่าเริ่มต้น ขณะนี้ชี้ไปที่ / usr / bin / pip แต่ฉันต้องการให้ชี้ไปที่ / usr / local / bin / pip ฉันเชื่อว่าฉันมีเส้นทางที่ถูกต้องและทุกอย่างก็ชี้ไปยังตำแหน่งที่ถูกต้อง วิธีที่ดีที่สุดในการแก้ไขปัญหานี้คืออะไร # echo $PATH /usr/local/jdk/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin # which python /usr/local/bin/python # which easy_install /usr/local/bin/easy_install # which pip /usr/bin/pip
12 python  path  pip 

2
ปัญหาในการใช้ปุ่ม Ctrl + Arrow ใน Vim เมื่อใช้ Byobu กับ tmux
ในกลุ่มฉันได้ตั้งปุ่ม Ctrl + ลูกศรเพื่อข้ามคำ มันใช้งานได้ดีเมื่อใช้ Vim ภายใน gnome-terminal อย่างไรก็ตามเมื่อใช้byobu (tmux) มันจะแสดงพฤติกรรมแปลก ๆ : มันจะลบทุกอย่างหลังจากเคอร์เซอร์ สำหรับการอ้างอิงนี่คือการตั้งค่ากลุ่มของฉัน: :inoremap <C-Left> <C-\><C-O>b :inoremap <C-Right> <C-\><C-O>w
12 tmux  byobu  vim 

3
tar ไปป์ แต่เก็บเอาท์พุท verbose -v แยกจาก STDERR
คำสั่ง tar ปกติ tar cvf foo.tar ./foo >foo.out 2>foo.err มีสามสตรีม IO เอาต์พุต เก็บข้อมูลไปยัง foo.tar รายการชื่อไฟล์ไปยัง STDOUT (เปลี่ยนเส้นทางไปยัง foo.out) ข้อความแสดงข้อผิดพลาดไปยัง STDERR (เปลี่ยนเส้นทางไปยัง foo.err) ฉันสามารถตรวจสอบ foo.err เพื่อหาข้อความแสดงข้อผิดพลาดโดยไม่ต้องอ่านรายชื่อไฟล์ ถ้าฉันต้องการทำอะไรกับข้อมูลที่เก็บถาวร (ไพพ์ผ่าน netcat หรือโปรแกรมบีบอัดแบบพิเศษ) ฉันสามารถใช้-f -ตัวเลือกของ tar tar cvf - ./foo 2>foo.err | squish > foo.tar.S แต่ตอนนี้รายชื่อไฟล์ของฉันถูกผสมกับข้อความแสดงข้อผิดพลาดของฉันเพราะ-vเอาท์พุทของ tar ไม่สามารถไปที่ STDOUT (นั่นคือที่ที่เก็บข้อมูลไหล) ดังนั้น tar เขียนอย่างชาญฉลาดถึง STDERR …
12 tar  ksh  io 

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