Unix & Linux

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

2
บริการ Systemd ทำงานโดยไม่ออกจากเครื่อง
ฉันสร้างบริการของตัวเองสำหรับ jekyll และเมื่อฉันเริ่มบริการดูเหมือนว่ามันจะไม่ทำงานเป็นกระบวนการพื้นหลังเพราะฉันถูกบังคับให้ctrl+ cออกจากมัน มันอยู่ในเบื้องหน้าเพราะ - ดู ฉันไม่แน่ใจว่าจะไปรอบ ๆ และทำให้มันทำงานในพื้นหลังได้อย่างไร ความคิดใด ๆ # /etc/systemd/system/jekyll-blog.service [Unit] Description=Start blog jekyll [Service] Type=forking WorkingDirectory=/home/blog ExecStart=/usr/local/bin/jekyll build --watch --incremental -s /home/blog -d /var/www/html/blog & ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure User=root Group=root [Install] WantedBy=multi-user.target
30 systemd 

3
ฉันจะแยกไฟล์ tar ที่ไม่น่าเชื่อถือได้อย่างปลอดภัยได้อย่างไร
ฉันต้องการที่จะสามารถแยกไฟล์ tar เช่นว่าไฟล์ที่แยกทั้งหมดจะอยู่ภายใต้ไดเรกทอรีคำนำหน้าบางอย่าง ความพยายามใด ๆ โดยไฟล์ tar เพื่อเขียนไปยังไดเร็กทอรีภายนอกควรทำให้การแตกไฟล์ล้มเหลว อย่างที่คุณอาจจินตนาการนี่คือเพื่อให้ฉันสามารถแยกไฟล์ tar ที่ไม่น่าเชื่อถือได้อย่างปลอดภัย ฉันจะทำสิ่งนี้กับ GNU ได้tarอย่างไร ฉันมากับ: tar --exclude='/*' --exclude='*/../*' --exclude='../*' -xvf untrusted_file.tar แต่ฉันไม่แน่ใจว่านี่เป็นสิ่งที่หวาดระแวงเพียงพอ
30 security  tar 

1
เหตุใดการเชื่อมต่อ IPv4 TCP จึงแสดงเป็น tcp6
นี่คือผลลัพธ์ของnetsat -tupnบนเซิร์ฟเวอร์ Debian Jessie ของฉัน: Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 10.0.0.12:445 10.0.0.20:49729 ESTABLISHED 26277/smbd tcp 0 0 10.0.0.12:443 10.0.0.21:44162 ESTABLISHED 1400/nginx: worker tcp 0 0 10.0.0.12:445 10.0.0.21:46650 ESTABLISHED 23039/smbd tcp 0 0 10.0.0.12:443 10.0.0.20:54584 ESTABLISHED 1400/nginx: worker …
30 networking  tcp 

2
อธิบายคำสั่งเชลล์: shift $ (($ optind - 1))
ฉันไม่ได้เป็นผู้ชาย Linux แต่ติดอยู่ในสคริปต์บางอย่างที่ฉันต้องอ่านสำหรับโครงการของฉัน ดังนั้นทุกคนสามารถช่วยฉันในสิ่งที่คำสั่งนี้กำลังทำอะไรอยู่? shift $(($optind - 1))

2
ลบบรรทัดตามรายการที่ซ้ำกันภายในหนึ่งคอลัมน์โดยไม่มีการเรียงลำดับ
ฉันมีไฟล์ 3 คอลัมน์ขนาดใหญ่ (~ 10,000 บรรทัด) และฉันต้องการลบบรรทัดเมื่อเนื้อหาของคอลัมน์ที่สามของบรรทัดนั้นปรากฏในคอลัมน์ที่สามของอีกบรรทัดหนึ่ง ขนาดของไฟล์นั้นค่อนข้างยุ่งยากและฉันไม่สามารถใช้บางอย่างเช่นโค้ดด้านล่างได้เพราะทั้งบรรทัดนั้นไม่เหมือนกัน แค่เนื้อหาของคอลัมน์ 3 awk '!seen[$0]++' filename

3
วิธีการใช้ yum เพื่อให้ได้ RPM ทั้งหมดที่จำเป็นสำหรับการใช้งานออฟไลน์?
ฉันมีเซิร์ฟเวอร์หนึ่งเครื่องที่มีการเชื่อมต่อเน็ตซึ่งฉันสามารถใช้ "yum install $ PACKAGE" ฉันต้องการคำสั่ง yum เช่นyum cache-rpms $PACKAGE $DIRECTORYเช่นไฟล์ RPM ที่จำเป็นทั้งหมดจะถูกดาวน์โหลดไปยัง $ DIRECTORY ซึ่งจะมีไฟล์ ( Install.sh) ระบุลำดับการติดตั้ง RPM เหล่านี้บนเซิร์ฟเวอร์อื่น ๆ โดยไม่ต้องเชื่อมต่อเน็ต Install.shแม้อาจจะเป็นสคริปต์เชลล์ซึ่งมีพฤติกรรมเช่นเดียวกับการyum install $PACKAGEยกเว้นว่ามันจะไม่ใช้เครือข่าย $DIRECTORYแต่จะใช้เท่านั้น ไปได้หรือไม่ ฉันกำลังมองหาโซลูชันทั่วไปที่ yum และ RPM พร้อมใช้งาน แต่เฉพาะ: อยู่ในชุดของเซิร์ฟเวอร์ CENTOS 6.7
30 yum  rpm 

1
เปลี่ยนรหัสผ่านบนระบบไฟล์ LUKS โดยไม่ทราบรหัสผ่าน
ฉันมีเซิร์ฟเวอร์ Debian Wheezy ที่ทำงานมาระยะหนึ่งด้วยไดรฟ์ที่เข้ารหัส รหัสผ่านสำหรับไดรฟ์ที่เข้ารหัส ( /dev/sda5) หายไปเมื่อไฟล์รหัสผ่านที่เข้ารหัสของฉันเสียหาย ฉันต้องการที่จะรีบูตเซิร์ฟเวอร์นี้ แต่แน่นอนว่าจะต้องใช้รหัสผ่านนั้น เนื่องจากไดรฟ์อยู่ในสถานะถอดรหัสอย่างชัดเจนจึงมีวิธีการเปลี่ยนรหัสผ่านโดยไม่รู้จักตัวเก่าหรือไม่ cryptsetup luksChangeKey /dev/sda5 ต้องใช้รหัสผ่านของไดรฟ์ แน่นอนฉันสามารถrsyncปิดและสร้างใหม่ได้ แต่ฉันต้องการหลีกเลี่ยงสิ่งนั้น ฉันมองผ่านความทรงจำ ( #cat /dev/mem | less) แต่หาไม่เจอ (ซึ่งเป็นสิ่งที่ดีมาก!)
30 linux  luks 

3
fork () คัดลอก heap ของกระบวนการทั้งหมดใน Linux ทันทีหรือไม่
การfork()เรียกระบบโคลนกระบวนการลูกจากกระบวนการทำงาน กระบวนการทั้งสองนั้นเหมือนกันยกเว้น PID ตามธรรมชาติแล้วหากกระบวนการเพิ่งอ่านจากกองของพวกเขามากกว่าที่จะเขียนลงไปการคัดลอกฮีปนั้นจะเป็นการสูญเสียความทรงจำครั้งใหญ่ คัดลอกฮีปกระบวนการทั้งหมดหรือไม่ มันได้รับการปรับให้เหมาะสมในวิธีที่เขียนเฉพาะการทริกเกอร์สำเนาฮีป
30 linux  fork 

5
วิธีการใช้หน่วยความจำ (ใช้ RAM) โดยใช้คำสั่ง Linux
ฉันพยายามดึงหน่วยความจำที่ใช้ (RAM) เป็นเปอร์เซ็นต์โดยใช้คำสั่ง Linux cpanel ของฉันแสดงหน่วยความจำที่ใช้ซึ่งฉันต้องการแสดงบนหน้าเว็บเฉพาะ จากฟอรั่มฉันพบว่าหน่วยความจำที่ถูกต้องสามารถพบได้จากต่อไปนี้: free -m ผล: -/+ buffers/cache: 492 1555 - / + บัฟเฟอร์ / แคช: มีการใช้งานหน่วยความจำที่ถูกต้อง ฉันไม่ทราบวิธีการวิเคราะห์ข้อมูลนี้หรือหากมีคำสั่งต่าง ๆ เพื่อรับหน่วยความจำที่ใช้เป็นเปอร์เซ็นต์
30 centos  memory  cpanel 

5
-bash: / dev / null: ปฏิเสธการอนุญาต
ฉันกำลังพยายามสร้างผู้ใช้ใหม่บนระบบ Centos 6 ก่อนอื่นเลย useradd kevin จากนั้นฉันพยายามเรียกใช้คำสั่งในฐานะผู้ใช้รายนั้น su - kevin อย่างไรก็ตามฉันได้รับข้อความแสดงข้อผิดพลาดดังต่อไปนี้ -bash: /dev/null: Permission denied -bash: /dev/null: Permission denied -bash: /dev/null: Permission denied -bash: /dev/null: Permission denied -bash: /dev/null: Permission denied -bash: /dev/null: Permission denied [kevin@gazelle ~]$ และฉันไม่สามารถทำอะไรได้มากเท่ากับผู้ใช้รายนั้น สิทธิ์บน/dev/nullมีดังนี้: -rwxr-xr-x 1 root root 9 Jul 25 17:07 null เหมือนกับบน Mac …

6
จะใช้คำสั่ง shell เพื่อแสดงเฉพาะคอลัมน์แรกและคอลัมน์สุดท้ายในไฟล์ข้อความได้อย่างไร
ฉันต้องการความช่วยเหลือในการหาวิธีใช้คำสั่ง sed เพื่อแสดงเฉพาะคอลัมน์แรกและคอลัมน์สุดท้ายในไฟล์ข้อความ นี่คือสิ่งที่ฉันมีจนถึงคอลัมน์ 1: cat logfile | sed 's/\|/ /'|awk '{print $1}' ความพยายามที่อ่อนแอของฉันในการทำให้คอลัมน์สุดท้ายแสดงเช่นกันคือ: cat logfile | sed 's/\|/ /'|awk '{print $1}{print $8}' อย่างไรก็ตามการดำเนินการนี้จะใช้คอลัมน์แรกและคอลัมน์สุดท้ายแล้วรวมเข้าด้วยกันในรายการเดียว มีวิธีพิมพ์คอลัมน์แรกและคอลัมน์สุดท้ายอย่างชัดเจนด้วยคำสั่ง sed และ awk หรือไม่? ตัวอย่างอินพุต: foo|dog|cat|mouse|lion|ox|tiger|bar
30 shell  sed  awk 

3
ถ้าฉัน sudo เรียกใช้ไฟล์สคริปต์ Bash คำสั่งทั้งหมดภายในสคริปต์ Bash จะถูกเรียกใช้งานเป็น sudo ด้วยหรือไม่
ฉันต้องการเขียนสคริปต์หลังการติดตั้งอัตโนมัติใน Bash ( post-install.shเช่นชื่อ) สคริปต์จะเพิ่มและอัปเดตที่เก็บติดตั้งและอัพเดทแพ็คเกจโดยอัตโนมัติแก้ไขไฟล์กำหนดค่า ฯลฯ ตอนนี้ถ้าฉันรันสคริปต์นี้เช่นsudo post-install.shฉันจะได้รับแจ้งให้ป้อนsudoรหัสผ่านครั้งเดียวเท่านั้นหรือฉันจะต้องป้อนsudoรหัสผ่านในแต่ละการเรียกใช้คำสั่งภายในสคริปต์ซึ่งต้องsudoได้รับอนุญาตหรือไม่ กล่าวอีกนัยหนึ่งคำสั่งภายในสคริปต์ทุบตี 'สืบทอด' สิทธิ์การดำเนินการดังนั้นจะพูดหรือไม่ และถ้าพวกเขาทำจริง ๆแล้วยังมีความเป็นไปได้ไหมที่sudoสิทธิ์จะหมดเวลา (ตัวอย่างเช่นคำสั่งเฉพาะใช้เวลานานพอที่จะsudoหมดเวลา) หรือการป้อนsudoรหัสผ่านครั้งแรกจะมีอายุการใช้งานตลอดช่วงเวลาของสคริปต์ทั้งหมดหรือไม่

3
สิ่งที่ทำให้กระบวนการ Unix ตายด้วย Broken pipe?
นี่คือตัวเลือกบางอย่างที่ฉันคิดว่าไม่แน่ใจว่าเป็นตัวเลือกที่เหมาะสมหรือไม่ มีข้อผิดพลาด I / O ที่อ่านจากไปป์ กระบวนการเขียนไปยังปลายอีกด้านหนึ่งของท่อตายด้วยความล้มเหลว กระบวนการทั้งหมดที่สามารถเขียนไปยังไพพ์ได้ปิดลง บัฟเฟอร์การเขียนของไพพ์เต็ม เพียร์ได้ปิดทิศทางอื่น ๆ ของท่อดูเพล็กซ์ การเขียนล้มเหลวเนื่องจากไม่มีกระบวนการที่สามารถอ่านได้จากไปป์ การเรียกระบบส่งคืนข้อผิดพลาด EPIPE และไม่มีการติดตั้งตัวจัดการข้อผิดพลาด
30 pipe 

4
วิธีนำอินเตอร์เฟส wi-fi ขึ้นมาจากบรรทัดคำสั่ง?
ฉันไม่สามารถหาวิธีนำการ์ด wi-fi มาบนแล็ปท็อปของฉันได้อย่างถูกต้อง เมื่อฉันเปิดและปัญหา $ sudo iwconfig wlan0 txpower auto $ sudo iwlist wlan0 scan wlan0 Interface doesn't support scanning : Network is down มันรายงานว่าเครือข่ายไม่ทำงาน การพยายามทำให้มันล้มเหลวเช่นกัน: $ sudo ifup wlan0 wlan0 no private ioctls. Failed to bring up wlan0. เห็นได้ชัดว่าฉันขาดiw...คำสั่งพื้นฐานระดับต่ำ เมื่อฉันออกdhclientอินเทอร์เฟซ: $ sudo dhclient -v wlan0 Internet Systems Consortium DHCP …

6
X ไคลเอนต์ส่งต่อผ่าน SSH“ ไม่สามารถเปิดการแสดง: localhost: 11.0”
ฉันได้เปิดใช้งานการส่งต่อ X บนเครื่องระยะไกลที่เซิร์ฟเวอร์ SSH กำลังทำงาน: # grep -i forward /etc/ssh/sshd_config X11Forwarding yes # บนเครื่องโลคัลฉันเริ่มต้นไคลเอ็นต์ SSH ด้วย-Xแฟล็กซึ่งสั่งให้เซิร์ฟเวอร์ SSH รันบนเครื่องรีโมตเพื่อตั้งค่าพร็อกซี X-server นอกจากนี้มันจะสร้าง$DISPLAYตัวแปรที่ชี้ไปยังพร็อกซีนี้และเรียกใช้xauthเพื่อติดตั้งพร็อกซีคีย์ซึ่งจะตรวจสอบความถูกต้องของพร็อกซีเซิร์ฟเวอร์ X นี้บนเครื่องระยะไกล: # echo "$DISPLAY" localhost:11.0 # xauth list | grep 11 A58/unix:11 MIT-MAGIC-COOKIE-1 39324086672d1ae35e373476c3891a77 # อย่างไรก็ตามไคลเอนต์ X บนเครื่องระยะไกลไม่เริ่มทำงานอย่างถูกต้อง: # wireshark (wireshark:10083): Gtk-WARNING **: cannot open display: localhost:11.0 # xterm …
30 ssh  x11  sshd 

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