Unix & Linux

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

2
`ผู้ใช้ - ปิดการใช้งานเข้าสู่ระบบ` ทำอะไร?
เอกสารการติดตั้งที่ฉันกำลังติดตามแนะนำให้เพิ่มผู้ใช้เช่นนั้น: sudo adduser --disabled-login --gecos 'GitLab' git --disabled-loginธงจะหายไปจากหน้าคนส่วนใหญ่ฉันได้ค้นหา ฉันได้สร้างผู้ใช้สองคนรายหนึ่งด้วย--disabled-login( foo) และอีกคนไม่มี ( git) เท่าที่ฉันสามารถบอกได้ว่า--disabled-loginธงไม่ทำอะไรเลย ฉันยังสามารถใช้suกับผู้ใช้ทั้งสองและทั้งสองใช้/bin/bashเป็นเชลล์ล็อกอิน ความแตกต่างเดียวที่ฉันเห็นคือgetent passwdมีเครื่องหมายจุลภาคพิเศษก่อนโฟลเดอร์โฮมของผู้ใช้ที่ปิดใช้งานการเข้าสู่ระบบ มีไม่มีเอกสารที่ฉันสามารถหาเพื่อแสดงให้เห็นว่าสิ่งที่นี้จะหมายถึง root@gitlab:~# getent passwd git git:x:998:998:GitLab:/home/git:/bin/bash root@gitlab:~# getent passwd foo foo:x:1001:1002:GitLab,,,:/home/foo:/bin/bash อัปเดต # 1 ฉันพบความแตกต่างอื่นผู้ใช้รายหนึ่งมี*รหัสผ่านและอีกอันมี!: root@gitlab:~# getent shadow git git:*:15998:::::: root@gitlab:~# getent shadow foo foo:!:15998:0:99999:7::: ไม่ว่าสิ่งที่--disabled-loginทำในอูบุนตู?
16 useradd 

4
ฉันจะรู้ได้อย่างไรว่าแพคเกจเสมือนถูก“ ติดตั้ง” บนระบบ Debian หรือไม่?
บางแพ็คเกจมีProvides:ส่วนหัว ยกตัวอย่างเช่นแพคเกจpostfixใน Debian ดังเสียงฮืด ๆ Provides: mail-transport-agentมี แพ็คเกจmail-transport-agentที่ไม่มีอยู่จริงถือเป็นแพ็คเกจ "เสมือน" ฉันจะทราบได้อย่างไรว่าบนระบบที่ใช้เดเบียนถ้าแพ็คเกจเสมือนที่ระบุนั้น "ติดตั้ง" (หรือ "ให้") ฉันสามารถแสดงรายการแพ็กเกจเสมือน "ที่ให้" ทุกรายการได้หรือไม่ คำแนะนำ : เพื่อแสดงรายการทุกแพ็คเกจเสมือนที่มีอยู่ติดตั้งหรือไม่ทำ:aptitude search "~v"

1
ยูทิลิตี้บลูทู ธ ระดับต่ำ
ยูทิลิตี้บลูทู ธ สำหรับ Linux คืออะไรที่จะให้ฉันจับคู่และเลิกจับคู่อุปกรณ์แสดงข้อความที่มาจากอุปกรณ์ส่งข้อความไปยังอุปกรณ์ (หวังว่าจะเสร็จสิ้นการใช้ระบบไฟล์!) และตั้งค่าสถานะใด ๆ แอปพลิเคชันในใจคือฉันแค่อยากจะพูด 10 แป้นพิมพ์บลูทู ธ เล็ก ๆ และแมปแต่ละปุ่มบนแต่ละแป้นพิมพ์เพื่อส่งข้อความ MIDI (เห็นได้ชัดว่าส่วน midi ไม่ได้เป็นส่วนหนึ่งของ OP นี้)
16 bluetooth 

1
มี ssh แก้ชื่อโฮสต์จากการตั้งค่าเมื่อใช้โหมด ProxyCommand และ netcat
ฉันพยายามที่จะตั้งค่าตัวเลือกสากลสำหรับการเชื่อมต่อ ssh ใหญ่ นี่คือ~/.ssh/configไฟล์ของฉันย่อ: Host *%via ProxyCommand ssh gateway -W $(echo %h | cut -d%% -f1) %p Host gateway HostName gateway.example.com User username ForwardAgent yes IdentityFile keypathg Host target User username HostName target.example.com IdentityFile keypatht เมื่อฉันใช้*%viaประโยชน์จากHostชื่อแทนฉันได้รับ: % ssh -vvv target%via OpenSSH_5.9p1, OpenSSL 0.9.8y 5 Feb 2013 debug1: Reading configuration data …
16 ssh  proxy 

3
รอการใช้คำสั่งใน Linux หรือไม่
#!/bin/bash function back() { sleep $1 exit $2 } back $1 $2 & b=$! if `wait $!`;then echo success else echo failure fi bash-3.00# ./back 300 0 failure bash-3.00# ./back 300 1 failure ผมคาดหวังว่าsuccessเป็นสถานะออกเมื่อฉันส่ง 0 failureแต่ฉันยังคงได้รับ นอกจากนี้waitไม่ต้องรอเป็นเวลา 300 วินาที แต่ฉันได้รับข้อความทันที ฉันถือว่า$!เป็นลูกของ$$สคริปต์ ไม่ใช่เหรอ สามารถจับสถานะทางออกของการรอได้exit_status=$(wait $!)หรือไม่? if ! ((exit_status));then echo sucess else …

5
ssh_config: ระบุคำสั่งที่จะดำเนินการบนเครื่องระยะไกลเมื่อเข้าสู่ระบบ
นี่คือการขยายตัวของฉันก่อนหน้าคำถาม ฉันจำเป็นต้องเรียกใช้คำสั่งที่เก็บไว้ในเครื่อง (เช่นmount /home) บนเครื่องระยะไกลเมื่อเข้าสู่ระบบ ssh ในขณะนี้ฉันกำลังใช้: ssh -t mymachine.example.com 'mount /home ; /bin/bash' ซึ่งใช้งานได้ดี แต่ฉันสงสัยว่าฉันสามารถใช้คำสั่งนี้.ssh/configเพื่อให้ฉันไม่ต้องพิมพ์ทุกครั้ง ฉันพบLocalCommandตัวเลือก แต่ฉันไม่เห็นRemoteCommandตัวเลือกใด ๆ มันเป็นสิ่งสำคัญที่command-to-be-executedจะถูกเก็บไว้ในเครื่องท้องถิ่นเพราะมันจะมีรหัสผ่านเพื่อเปิดดิสก์ที่เข้ารหัส นั่นคือเหตุผลที่ฉันไม่สามารถใส่คำสั่งลง.profileในเครื่องระยะไกล
16 ssh 


2
สิ่งใดอาจทำให้ประวัติทุบตีของฉันถูกล้างอย่างไม่คาดคิด
วันนี้ฉันสังเกตเห็นว่าประวัติทุบตีของฉันถูกล้างออกอย่างสมบูรณ์ ฉันไม่ได้ดำเนินการhistory -cหรือลบ.bash_historyไฟล์ นอกเหนือจากการลบ.bash_historyไฟล์history -cแล้วจะล้างประวัติทุบตีได้อย่างไร?

1
Linux เป็นเราเตอร์ที่มีผู้ให้บริการอินเทอร์เน็ตหลายราย
Linux เป็นเราเตอร์: ฉันมีผู้ให้บริการอินเทอร์เน็ต 3 รายแต่ละรายมีโมเด็มของตัวเอง Provider1ซึ่งเป็นเกตเวย์แอดเดรส 192.168.1.1 เชื่อมต่อกับ linux router eth1 /192.168.1.2 Provider2 ที่อยู่เกตเวย์ 192.168.2.1 เชื่อมต่อกับเราเตอร์ linux eth2 /192.168.2.2 Provider3 ที่อยู่เกตเวย์ 192.168.3.1 เชื่อมต่อกับเราเตอร์ linux eth3 /192.168.3.2 ________ +------------+ / | | | +----------------------+ Provider 1 +--------| __ |192.168.1.2 |192.168.1.1 | / ___/ \_ +------+-------+ +------------+ | _/ \__ | eth1 …

2
วิธีการตรวจสอบว่าดิสก์กำลังมองหา?
ฉันสามารถใช้เครื่องมือที่หลากหลายเพื่อวัดปริมาณของดิสก์ I / O ที่ไหลผ่านระบบในปัจจุบัน (เช่นiotopและiostat) แต่ฉันอยากรู้ว่าเป็นไปได้ที่จะตรวจสอบได้อย่างง่ายดายหรือไม่ว่าดิสก์กำลังมองหามากด้วยจำนวนเล็กน้อย I / O ฉันรู้ว่าเป็นไปได้ที่จะดึงข้อมูลนี้มาใช้blktraceแล้วถอดรหัสโดยใช้bttแต่สิ่งเหล่านี้ค่อนข้างไม่สะดวกและฉันหวังว่าจะมีทางเลือกที่ง่ายกว่า
16 linux  disk  measure 

2
grep: แสดงชื่อไฟล์หนึ่งครั้งจากนั้นแสดงบริบทด้วยหมายเลขบรรทัด
ซอร์สโค้ดของเรามีรหัสข้อผิดพลาดกระจายอยู่ทั่วไป การค้นหามันเป็นเรื่องง่ายด้วย grep แต่ฉันต้องการฟังก์ชั่นทุบตีfind_codeที่ฉันสามารถดำเนินการ (เช่น. find_code ####) ซึ่งจะให้ผลลัพธ์ตามบรรทัดเหล่านี้: /home/user/path/to/source.c 85 imagine this is code 86 this is more code 87 { 88 nicely indented 89 errorCode = 1111 90 that's the line that matched! 91 ok this block is ending 92 } 93 } นี่คือสิ่งที่ฉันมีในปัจจุบัน: find_code() { # "= " …

3
วิธีสร้างไฟล์อิมเมจพาร์ติชั่นที่จัดรูปแบบจากศูนย์
ฉันต้องการสร้างระบบไฟล์ด้วยพาร์ติชันเดียวจากอะไรเลย ( /dev/zero) ฉันลองลำดับของคำสั่งนี้: dd if=/dev/zero of=mountedImage.img bs=512 count=131072 fdisk mountedImage.img n p 2048 131072 โดยทั่วไปฉันจำเป็นต้องสร้างไฟล์ภาพ 64MB ที่เต็มไปด้วยเลขศูนย์ จากนั้นฉันก็ใช้fdiskเพื่อเพิ่มพาร์ติชันใหม่สำหรับระบบไฟล์ใหม่ (ซึ่งควรเป็น FAT32) เริ่มต้นที่เซกเตอร์2048และใช้เซกเตอร์ที่เหลือทั้งหมด losetup /dev/loop1 mountedImage.img mkfs -t vfat /dev/loop1 แต่ที่นี่ฉันกำลังตีปัญหา หากฉันตั้งค่าloopอุปกรณ์และจัดรูปแบบโดยใช้mkfs -t vfatตารางพาร์ติชันจะถูกเขียนทับและวางระบบไฟล์ (FAT32) ลงในดิสก์ ฉันไม่ต้องการดิสก์ทั้งหมดที่ฟอร์แมตด้วย FAT32 ฉันแค่ต้องการพาร์ติชันหลักของฉันให้เป็นเช่นนั้น มีใครรู้บ้างว่าฉันจะฟอร์แมตพาร์ติชั่นเดียวของอิมเมจดิสก์ดิบได้อย่างไรไม่ใช่อิมเมจทั้งหมด?


2
ฉันจะอ้างอิงตัวแปรใน fish shell โดยใช้ทางเลือกเริ่มต้นได้อย่างไร
เปลือกปลาเทียบเท่ากับ bash ต่อไปนี้คืออะไร: echo ${TEST:-1} ในทุบตีนี้จะพิมพ์ค่าของการทดสอบถ้ามีอย่างใดอย่างหนึ่งหรือ 1 หากไม่มี
16 shell  fish 

3
ฉันจะตั้งค่า PATH หรือตัวแปรสภาพแวดล้อมอื่น ๆ เพื่อให้แอป X สามารถเข้าถึงได้อย่างไร
ฉันจะตั้งค่าตัวแปร env เพื่อให้ KDE จำแนกได้อย่างไร คุณจะตั้งค่าพา ธ ในระบบที่ไม่ใช่เชลล์ได้อย่างไร (KDE) ต่างจากคำถามสองข้อข้างต้นฉันต้องการทราบวิธีการทำสิ่งนี้กับ GNOME หรือดีกว่ายังมีวิธีการที่เป็นอิสระจากการจัดการหน้าต่าง สำหรับเปลือก / ~/.bashrcขั้วผมมักจะแก้ไข ฉันจะวางคำสั่งส่งออกได้ที่ใดเพื่อให้ตัวแปรสภาพแวดล้อมพร้อมใช้งานสำหรับแอปพลิเคชัน X ทั้งหมดไม่ว่าจะใช้ตัวจัดการหน้าต่างหรือไม่

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