ผู้ที่ไม่เข้าใจ Terminal มักจะกลัวที่จะใช้เพราะกลัวว่าพวกเขาอาจทำตามคำสั่งและทำให้คอมพิวเตอร์พัง ผู้ที่รู้จักเทอร์มินัลจะรู้ดีว่าไม่ใช่กรณี - โดยปกติเทอร์มินัลจะส่งข้อผิดพลาด แต่จริงๆแล้วมีคำสั่งที่จะทำให้คอมพิวเตอร์ของคุณพังหรือไม่?
ผู้ที่ไม่เข้าใจ Terminal มักจะกลัวที่จะใช้เพราะกลัวว่าพวกเขาอาจทำตามคำสั่งและทำให้คอมพิวเตอร์พัง ผู้ที่รู้จักเทอร์มินัลจะรู้ดีว่าไม่ใช่กรณี - โดยปกติเทอร์มินัลจะส่งข้อผิดพลาด แต่จริงๆแล้วมีคำสั่งที่จะทำให้คอมพิวเตอร์ของคุณพังหรือไม่?
sudo
และrm
คำสั่งคำตอบ:
วิธีหนึ่งที่จะผิดพลาดของคอมพิวเตอร์คือการดำเนินการที่เรียกว่าส้อมระเบิด
คุณสามารถรันมันบนระบบยูนิกซ์โดย:
:(){ :|: & };:
มันเป็นคำสั่งที่จะวางไข่กระบวนการซ้ำจนกระทั่ง OS ยุ่งจนไม่ตอบสนองต่อการกระทำใด ๆ อีกต่อไป
;
ด้วย&
และคุณจะได้รับการลบไฟล์ทั้งหมดและการทิ้งระเบิดในเวลาเดียวกันและดูว่าระบบใดที่ทำลายก่อน!
ไม่แน่ใจว่าสิ่งที่คุณหมายถึงเกี่ยวกับ 'ความผิดพลาด' ของคอมพิวเตอร์ - ถ้าคุณจะวลีว่า "ทำให้คอมพิวเตอร์ใช้ไม่ได้" อีกครั้งใช่แล้ว สิ่งที่ต้องทำทั้งหมดคือคำสั่ง stray เดียว - เพียงชั่วขณะที่คุณไม่ได้คิดอย่างชัดเจนเกี่ยวกับสิ่งที่คุณทำคล้ายกับเวลาที่คุณพูดโดยไม่คิดและความเสียหายอาจมหาศาลและเกือบจะทันที ตัวอย่างคลาสสิก:
$ sudo rm -rf /
หากคุณปล่อยให้คำสั่งนั้นรันเป็นเวลาเพียงหนึ่งวินาทีระบบของคุณก็จะสามารถล้างข้อมูลได้เพียงพอที่จะทำให้มันไม่สามารถบูตได้และอาจทำให้ข้อมูลสูญหายได้ อย่าทำมัน
-r
หมายถึงการลบไฟล์ซ้ำในไดเรกทอรี -f
หมายถึง "แรง" ในขณะที่ไม่ขอการยืนยันไม่ว่าจะมีการอนุญาตของไฟล์ใดก็ตาม /
เป็นไดเรกทอรีรากของระบบไฟล์ซึ่งหมายความว่ามันจะทำลายทุกอย่างยกเว้นไฟล์พิเศษบางไฟล์ที่ไม่ทำงานเหมือนไฟล์ทั่วไป นอกจากนี้คุณยังมีเวลาค่อนข้างยากในการค้นหาคำสั่งสั้น ๆ ที่จะทำให้ระบบของคุณล้มเหลวโดยไม่ได้รับอนุญาตจาก root / admin
rm -rf /
สักครู่แล้วrm
บอกว่าถ้าคุณต้องการลบรูทให้ใช้การตั้งค่าสถานะเช่นนั้น ไม่มีข้อมูลสูญหาย rm -rf /
มันดูเหมือนว่ามีการรักษาความปลอดภัยในขณะนี้จากการทำงานสุ่มสี่สุ่มห้า
rm -rf
มันคล้ายกับกฎหมายหนึ่งที่ผิดพลาดจริงๆ: /
สมมติว่าคุณไม่รู้ว่าคุณกำลังทำอะไรอยู่และพยายามทำสำเนาสำรองของฮาร์ดไดรฟ์บางตัว
dd if=/dev/disk1 of=/dev/disk2
ถ้าคุณผสมมัน (เปลี่ยนถ้าและจาก) มันจะเขียนทับข้อมูลใหม่ด้วยข้อมูลเก่าไม่มีคำถามถาม
มิกซ์อัพที่คล้ายกันสามารถเกิดขึ้นได้ด้วย utils เก็บถาวร และตรงไปตรงมากับอรรถประโยชน์บรรทัดคำสั่งส่วนใหญ่
หากคุณต้องการตัวอย่างของการผสมผสานตัวละครตัวหนึ่งที่จะทำให้ระบบของคุณพังดูสถานการณ์นี้: คุณต้องการย้ายไฟล์ทั้งหมดในไดเรกทอรีปัจจุบันไปยังอีกอันหนึ่ง:
mv -f ./* /path/to/other/dir
มายอมรับความจริงที่คุณเรียนรู้ที่จะใช้./
เพื่อแสดงถึงไดเรกทอรีปัจจุบัน (ฉันทำได้) ถ้าคุณไม่ใส่จุดก็จะเริ่มย้ายไฟล์ทั้งหมดของคุณ รวมถึงไฟล์ระบบของคุณ คุณโชคดีที่คุณไม่ได้ทำสิ่งนี้ แต่ถ้าคุณอ่านที่ไหนสักแห่งด้วย 'sudo -i' คุณจะไม่ต้องพิมพ์ sudo อีกครั้งคุณจะเข้าสู่ระบบในฐานะ root ทันที และตอนนี้ระบบของคุณกำลังกินต่อหน้าต่อตาคุณ
แต่อีกครั้งฉันคิดว่าสิ่งต่าง ๆ เช่นการเขียนทับไฟล์รหัสที่มีค่าของฉันกับขยะเพราะฉันทำตัวละครตัวหนึ่งหรือเพราะฉันผสมคำสั่งของพารามิเตอร์เป็นปัญหามากขึ้น
สมมติว่าฉันต้องการตรวจสอบรหัสแอสเซมเบลอร์ที่ gcc กำลังสร้าง:
gcc -S program.c > program.s
สมมติว่าฉันมีโปรแกรมแล้วและฉันใช้ TAB ที่สมบูรณ์ ฉันรีบแล้วลืม TAB สองครั้ง:
gcc -S program.c > program.c
ตอนนี้ฉันมีรหัสแอสเซมเบลอร์ใน program.c ของฉันและไม่มีรหัส c อีกต่อไป ซึ่งอย่างน้อยก็เป็นความพ่ายแพ้ที่แท้จริงสำหรับบางคน แต่สำหรับคนอื่น ๆ มันเริ่มต้นใหม่จากเวลา
ฉันคิดว่าสิ่งเหล่านี้เป็นสิ่งที่จะทำให้เกิด "อันตราย" ที่แท้จริง ฉันไม่สนใจว่าระบบของฉันจะล่มหรือไม่ ฉันจะดูแลเกี่ยวกับข้อมูลที่สูญหาย
น่าเสียดายที่สิ่งเหล่านี้เป็นข้อผิดพลาดที่จะต้องทำจนกว่าคุณจะเรียนรู้การใช้เครื่องด้วยความระมัดระวังที่เหมาะสม
gcc program.c -o program.c
ขอขอบคุณอย่างแม่นยำเพื่อให้แท็บสมบูรณ์ ฉันเรียนรู้ที่จะใช้การควบคุมเวอร์ชันอย่างเคร่งครัดหลังจากนั้น
การทำให้เกิดความตื่นตระหนกของเคอร์เนลนั้นคล้ายกับการหยุดทำงานมากกว่าคำตอบอื่น ๆ ที่ฉันได้เห็นที่นี่:
sudo dtrace -w -n "BEGIN{ panic();}"
(รหัสที่นำมาจากที่นี่และพบได้ในเอกสารของ Apple เอง )
คุณอาจลอง:
sudo killall kernel_task
ฉันไม่ได้ตรวจสอบว่าอันที่สองที่ใช้งานได้จริง (และฉันไม่ได้ตั้งใจเพราะตอนนี้ฉันมีงานเปิดอยู่)
No matching processes were found
dtrace: system integrity protection is on, some features will not be available
dtrace: description 'BEGIN' matched 1 probe
dtrace: could not enable tracing: Permission denied
dtrace
ได้รับการอย่างมีประสิทธิภาพโดย SIP
kernel_task
ไม่ใช่กระบวนการปกติ มันเป็นอมตะ ไม่สามารถฆ่าได้ยกเว้นผ่านข้อผิดพลาดของตัวเอง (และจะเรียกว่า KP และทำให้ทั้งเครื่องหมด) kernel_task
PID นั้นคือ 0 แต่ถ้าคุณส่งไปที่kill(pid, sig)
syscall หน้า man จะบอกว่าถ้าpid
เท่ากับ 0 ดังนั้นsig
จะถูกส่งไปยังทุกกระบวนการในกลุ่มกระบวนการของกระบวนการเรียก . ดังนั้นคุณไม่สามารถส่งkernel_task
สัญญาณได้
โมเดิร์น MacOS ทำให้มันยากที่จะเกิดความผิดพลาดเครื่องของคุณเป็นผู้ใช้ที่ด้อยโอกาส (เช่นโดยไม่ต้องใช้sudo
) เพราะระบบ UNIX จะหมายถึงการจัดการกับพันของผู้ใช้โดยไม่ต้องแจ้งใด ๆ ของพวกเขาทำลายทั้งระบบ ดังนั้นขอขอบคุณคุณมักจะต้องได้รับแจ้งก่อนที่จะทำสิ่งที่ทำลายเครื่องของคุณ
น่าเสียดายที่การป้องกันนั้นใช้กับระบบเท่านั้น ตามที่ xkcd แสดงให้เห็นมีสิ่งต่าง ๆ มากมายที่คุณใส่ใจเกี่ยวกับสิ่งนั้นที่ไม่ได้รับการคุ้มครองโดยการป้องกันความสมบูรณ์ของระบบสิทธิ์การใช้งานรูทหรือการแจ้งรหัสผ่าน:
มีหลายสิ่งที่คุณสามารถพิมพ์ได้ซึ่งจะทำลายบัญชีผู้ใช้และไฟล์ทั้งหมดของคุณหากคุณไม่ระวัง ตัวอย่างบางส่วน:
rm -rf ${TEMPDIR}/*
. TMPDIR
นี้ดูเหมือนว่าเหมาะสมโดยสิ้นเชิงจนกว่าคุณจะรู้ว่าตัวแปรสภาพแวดล้อมถูกสะกด มักจะไม่ได้กำหนดซึ่งจะทำให้นี้TEMPDIR
rm -rf /
แม้จะไม่มีsudo
สิ่งนี้จะเป็นการลบสิ่งที่คุณมีสิทธิ์ลบอย่างมีความสุขซึ่งโดยปกติจะรวมโฟลเดอร์หลักทั้งหมดของคุณ หากคุณปล่อยให้สิ่งนี้ทำงานได้นานพอมันจะดักจับไดรฟ์ใด ๆ ที่เชื่อมต่อกับเครื่องของคุณเช่นกันเนื่องจากโดยปกติคุณจะมีสิทธิ์ในการเขียนfind ~ -name "TEMP*" -o -print | xargs rm
. find
โดยปกติจะหาไฟล์ที่ตรงกับเกณฑ์ที่กำหนดและพิมพ์ออกมา หากไม่มีสิ่ง-o
นี้จะทำสิ่งที่คุณคาดหวังและลบทุกไฟล์ที่ขึ้นต้นด้วยTEMP*
( ตราบใดที่คุณไม่มีช่องว่างในพา ธ ) แต่-o
หมายความว่า "หรือ" (ไม่ใช่ "เอาท์พุท" เหมือนที่ทำกับคำสั่งอื่น ๆ !) ทำให้คำสั่งนี้ลบไฟล์ทั้งหมดของคุณจริงๆ คนเกียจคร้านln -sf link_name /some/important/file
. ฉันได้รับไวยากรณ์สำหรับคำสั่งนี้ผิดในบางครั้งและมันจะค่อนข้างเขียนทับไฟล์สำคัญของคุณอย่างมีความสุขด้วยลิงก์สัญลักษณ์ไร้ประโยชน์kill -9 -1
จะฆ่าทุกโปรแกรมของคุณออกจากระบบคุณอย่างรวดเร็วและอาจทำให้ข้อมูลสูญหายfind
มี-delete
ข้อโต้แย้งที่ปลอดภัยกว่าการไปถึงxargs rm
ln -sf
สามารถทำได้ ... และวิธีการกู้คืนจากมัน :-)
find -print0 | xargs -0
เพื่อจัดการกับตัวละครแปลก ๆ ในชื่อไฟล์อย่างปลอดภัย
<whatever> | xargs echo <something>
ก่อนเพื่อดูตัวอย่างคำสั่ง xargs ที่จะทำงานจริง xargs เป็นตัวอย่างที่ดีว่าเหตุใด CLI จึงทรงพลังมาก: คุณสามารถใช้งานได้หลายรายการหลายรายการพร้อมกันโดยไม่มีการยืนยันที่น่ารำคาญและการถือครองมือ ... เพียงให้แน่ใจว่าคุณกำลังบอกให้ทำสิ่งที่คุณต้องการ
อีกอย่างที่คุณสามารถทำได้ (ที่ฉันเคยทำผิดพลาดมาก่อน) คือ:
sudo chmod 0 /
สิ่งนี้จะทำให้ระบบไฟล์ทั้งหมดของคุณ (ซึ่งหมายถึงคำสั่งและโปรแกรมทั้งหมด) ไม่สามารถเข้าถึงได้ ... ยกเว้นผู้ใช้รูท ซึ่งหมายความว่าคุณจะต้องเข้าสู่ระบบโดยตรงในฐานะผู้ใช้รูทและกู้คืนระบบไฟล์ แต่คุณไม่สามารถเข้าถึงsudo
คำสั่ง (หรือคำสั่งอื่น ๆ สำหรับเรื่องนั้น) chmod 755 /
คุณสามารถเรียกคืนการเข้าถึงคำสั่งและไฟล์โดยการบูตเข้าสู่โหมดเดียวที่ผู้ใช้ติดตั้งและการฟื้นฟูระบบไฟล์ที่มี
หากทำซ้ำด้วยchmod -R 0 /
สิ่งนี้จะทำให้ระบบใช้ไม่ได้ การแก้ไขที่เหมาะสมที่จุดนั้นคือการใช้ Disk Utility จากพาร์ทิชันการกู้คืนเพื่อซ่อมแซมสิทธิ์ดิสก์ คุณอาจจะดีกว่าเพื่อกู้คืนสแน็ปช็อตหรือการสำรองข้อมูลของระบบไฟล์ของคุณหากการดำเนินการนี้ซ้ำ
chmod 755 /
จะทำให้ระบบของคุณไม่ปลอดภัยและแตกหักในรูปแบบที่ลึกซึ้ง การกู้คืนแบบเต็มรูปแบบเท่านั้นจากchmod 0 /
ผ่านการกู้คืนสแน็ปช็อตการคืนค่าการสำรองข้อมูลและ / หรือติดตั้งใหม่
-R
แฟล็ก - ดังนั้นฉันคิดว่าสิทธิ์ของไดเรกทอรีย่อยจะไม่ได้รับผลกระทบหรือไม่
/
จะได้รับผลกระทบเท่านั้น
sudo chmod -R 700 /
เป็นคอมพิวเตอร์เครื่องใหม่คิดว่ามันจะปลอดภัยกว่านี้ถ้าฉันทำอย่างนั้น น่าแปลกที่มันบูทและจบลงด้วยเมนูย่อยและเดสก์ท็อปว่างเปล่า ไม่มีอะไรทำงานได้ แต่ Disk Utility Restore Permissions ได้รับการจัดการเพื่อตั้งเกือบทุกอย่างถูกต้อง!
คำตอบที่เรียกว่าsudo
ควรถือว่าไม่ถูกต้อง สิ่งเหล่านี้ถือว่าการเข้าถึงระดับผู้ดูแลระบบ
ลองperl -e 'exit if fork;for(;;){fork;}'
ดู OSX อาจมีการป้องกันบางอย่างในขณะนี้ หากมีฟองแอปเปิ้ลถามว่าคุณต้องการที่จะยุติแอป Terminal และการประมวลผลย่อยคุณเกือบจะดี
while true ; do cat /dev/zero > /dev/null & done
ยังมีประโยชน์มากโดยเฉพาะอย่างยิ่ง perl
ถ้าคุณไม่ได้มี
for i in 1 2 3 4 ; do cat /dev/zero > /dev/null & done
จะทำการทดสอบโหลดซีพียูเล็กน้อย ดีมากสำหรับการตรวจสอบว่าฮีทซิงค์และพัดลมของคุณมีระดับ
ตรวจสอบให้แน่ใจว่าคุณมีข้อมูลสำรองและบันทึกไฟล์ใด ๆ ที่คุณสนใจจากนั้นพิมพ์ halt
สมมติว่าคุณใช้sudo
เป็นรูทเครื่อง Mac จะขัดข้อง
ความเสี่ยงที่ใหญ่ที่สุดจากบรรทัดคำสั่งคือการสูญเสียข้อมูล อินเทอร์เฟซ macOS ได้รับการออกแบบมานานหลายทศวรรษเพื่อไม่ให้คนแปลกใจและฉีกข้อมูลหรือการตั้งค่าหรือแอพ อินเทอร์เฟซกราฟิก macOS ยังมีอยู่เพื่อลบเส้นโค้งการเรียนรู้ (อันชัน) เพื่อความปลอดภัยและการสร้างสคริปต์เชลล์
คุณสูญเสียการป้องกันเหล่านั้นซึ่งเป็นเหตุผลที่ฉันเตือนผู้คนที่เริ่มต้นด้วยแอปเทอร์มินัลหรือ ssh หากคุณมีการสำรองข้อมูลที่คุณรู้ว่ามีผลงานและมีเวลาและความมั่นใจ / ทักษะในการทำการกู้คืนคุณควรดำน้ำและเรียนรู้และแม้แต่ทำลายสิ่งต่าง ๆ
sudo kill -9 -1
ฉันบังเอิญkill -9 -1
เขียนสคริปต์ Perl โดยทำงานเป็นรูท มันเร็วเหมือนดึงสายไฟ เมื่อรีบูตเซิร์ฟเวอร์ทำระบบไฟล์ตรวจสอบและทำงานอย่างต่อเนื่อง
ฉันไม่เคยลองsudo kill -9 -1
คำสั่งนั้นใน commandline อาจไม่ทำงานเนื่องจาก process-ID "-1" หมายถึง "kill กระบวนการทั้งหมดที่เป็นของกลุ่มกระบวนการของผู้โทร"
ไม่แน่ใจว่าถ้าใช้ sudo นั่นก็หมายความว่า init และเคอร์เนลทุกอย่าง ... แต่ถ้าคุณรูทkill -9 -1
จะหยุดทันที - เหมือนดึงสายไฟ โดยวิธีการ - ไม่มีอะไรจะปรากฏใน logfiles เพราะคำสั่งนั้นเป็นนักฆ่าที่เร็วที่สุดในตะวันตก!
จริง ๆ แล้วเพื่อกู้คืนฉันไป sysadmins ของเราและบอกพวกเขาสิ่งที่ฉันทำ พวกเขาทำการรีบูตอย่างหนักเนื่องจากไม่มีวิธีการเข้าสู่ระบบบนเซิร์ฟเวอร์นั้น (RHEL6)
A kill -9 -1
ในฐานะที่เป็นรากฆ่าทุกกระบวนการที่ทำงานเป็นราก นั่นคือ sshd นั่นทำให้ฉันออกจากระบบทันทีและป้องกันไม่ให้ทุกคนเข้าสู่ระบบอีกครั้ง กระบวนการใด ๆ ที่เริ่มต้นโดย init - รวมถึง init ถูกฆ่ายกเว้นว่าพวกเขาเปลี่ยน UID หรือ GID แม้แต่การเข้าสู่ระบบผ่านทางคอนโซลอนุกรมก็ไม่สามารถทำได้อีกต่อไป ps -eaf | grep root
แสดงให้เห็นถึงกระบวนการแฟนซีบางอย่างซึ่งหากพวกเขาทำปฏิกิริยากับ SIGKILL ในวิธีการเริ่มต้นจะหยุดการเขียน HD ขั้นพื้นฐาน
ฉันจะไม่ลองตอนนี้บนแล็ปท็อปของฉัน :-) ฉันไม่อยากรู้อยากเห็นพอที่จะค้นพบว่าถ้าkill -9 165
([ext4-rsv-conver]) จะหยุดเขียนเป็น HD
init
ตามปกติ แต่คุณสามารถฆ่าเซสชัน gettys และ SSH ทั้งหมดและทำให้เครื่องใช้ไม่ได้ เมจิก SysRqควรจะได้รับอนุญาตให้รีบูตสะอาด แต่ก็มักจะง่ายขึ้นเพียงแค่อำนาจวงจรและพึ่งพาวารสารงบ :)
ใช่คุณสามารถทำลายระบบของคุณได้อย่างสมบูรณ์ การทำสิ่งที่มีsudo
สิทธิพิเศษโดยบังเอิญเป็นตัวอย่างหนึ่งที่โพสต์ไว้ไม่ว่าจะเป็นการลืมตัวละครสองสามตัวที่สั่งให้เครื่องเทอร์มินัลทำสิ่งที่แตกต่างไปจากที่คุณตั้งใจไว้อย่างสิ้นเชิง rm
ไอเอ็นจี/
แทนที่จะ/tmp/\*
เป็นเพียงความแตกต่าง 5 ตัวอักษร การวางช่องว่างในสถานที่ที่ไม่ถูกต้องอาจทำสิ่งที่แตกต่างอย่างสิ้นเชิงเช่นกัน ในบางครั้งคำแนะนำที่มีความหมายดูเหมือนจะมีโค้ดที่เป็นอันตรายซึ่งทำให้เข้าใจผิด บางคนในอินเทอร์เน็ตใช้โค้ดได้ดีมาก
นอกจากนี้ยังมีคำสั่งที่ใช้ html ซึ่งสามารถทำให้ขนาดฟอนต์เป็นศูนย์ได้ดังนั้นสิ่งที่ดูไร้เดียงสาอย่างสมบูรณ์เมื่อคัดลอกไปยังคลิปบอร์ดอาจเป็นการติดตั้ง git repo ของคนในฐานะแหล่งที่เชื่อถือได้และดาวน์โหลดมัลแวร์
และมีคำสั่งที่คุณสามารถเรียกใช้ที่เปิดให้คุณหาประโยชน์หรืออาจตั้งใจดีอย่างสมบูรณ์ แต่ลบไฟล์หรือโปรแกรมที่สำคัญหรือทำให้ดิสก์ของคุณเสียหาย ในความเป็นจริงการใช้เครื่องมืออย่างไม่ถูกต้องสามารถทำอะไรบางอย่างที่เป็นพื้นฐานโดยไม่ตั้งใจเขียนเหนือเซกเตอร์สำหรับเริ่มระบบของคุณหรือหัวของดิสก์ของคุณหรือปัญหาอื่น ๆ มากมาย
vi
ตัวอย่างของสิ่งที่ทำลายน้อยที่ยังไม่ได้โพสต์จะเปิดไฟล์ไบนารีใน หากคุณเคยพยายามมันคุณจะรู้ว่ามันสามารถเลอะ terminal reset
ของคุณไปยังจุดที่มันไม่ได้จนกว่าจะเป็น
หรือมีคำสั่งที่จะทำให้เครื่องของคุณชะงักเช่น:
yes >> /dev/null & yes >> /dev/null & yes >> /dev/null & yes >> /dev/null &
คุณสามารถลองสิ่งนั้นมันจะไม่สร้างความเสียหาย แต่มันจะทำให้หน่วยประมวลผลของคุณชะงักและคุณจะต้องฆ่าแต่ละโพรเซสที่คุณวางไข่
อย่างที่บอกไปแล้วว่าในการคำนวณนั้นโดยทั่วไปแล้วคุณจะไม่สามารถสร้างไข่เจียวได้โดยไม่ทำให้ไข่แตก คุณควรระมัดระวังที่เทอร์มินัล แต่วิธีเดียวที่จะทำให้การใช้งาน OS ดีขึ้นคือการเรียนรู้และฝึกฝน
reset
ที่ควรล้างเทอร์มินัลที่มีเอาต์พุตไบนารี่พิมพ์ออกมา หรือเพิ่งวางไข่ TTY ใหม่
reset
เคล็ดลับ! สำหรับข้อมูลเพิ่มเติม: unix.stackexchange.com/questions/79684
ฉันเป็นเพียงผู้เริ่มต้นทุบตี แต่คุณสามารถตั้งค่าในขณะที่ True; ทำคำสั่ง; ทำ; คนส่วนใหญ่จะลอง Ctrl + C ที่จะหยุดคำสั่งไม่ใช่กระบวนการภายนอก (ctrl + Z ซึ่งจะต้องถูกฆ่า) ฉันเดาว่าถ้าคำสั่งเป็นการดำเนินการที่หนักหน่วงเช่นการทวีคูณเป็นจำนวนมากกับพลังของตัวเองนั่นอาจทำให้สับสนกับเนื้อหาที่คุณใช้ แต่แท้จริงแล้วระบบปฏิบัติการสมัยใหม่มักจะได้รับการป้องกันจากความยุ่งเหยิงดังกล่าว
while true do cat /dev/zero > /dev/null & done
^C
จะฆ่าขณะที่ลูปด้วย แต่เพียงแค่ทำซ้ำเร็วเกินไปสำหรับการขัดจังหวะที่จะถูกจับ การกดค้างไว้^C
อาจทำให้วงแตก ปิดเทอร์มินัลด้วยเช่นกัน :)
แน่นอนคุณยังสามารถทำให้ระบบพังโดยใช้คำสั่งที่ป้อนด้วย Terminal
หลายปีที่ผ่านมามันอาจจะยากขึ้นเนื่องจากข้อ จำกัด และมาตรการป้องกันทุกประเภทที่บังคับใช้ แต่ในฐานะกฎหมายของเมอร์ฟี:
"Fork bombs" และrm -rf
สิ่งของ kiddies ทั้งหมดนั้นเป็นสิ่งที่รู้จักกันมานานสำหรับ UNIX ด้วย Mac OS X คุณสามารถสนุกไปกับการใช้ส่วนย่อยของระบบ GUI ( WindowServer
พูดถึง) หรือสิ่งอื่น ๆ เช่นไฟร์วอลล์ OpenBSD หรือPF
ที่วิศวกรของ Apple นำเข้ามา แต่ไม่เคยจัดการอัปเดตตั้งแต่ปี 2008 PF
ทำงานในเคอร์เนลดังนั้นเมื่อถึงเวลาที่จะต้องจับตามองมันถึงเวลาที่ Apple บอกคุณว่า " คุณรีสตาร์ทคอมพิวเตอร์เนื่องจากความตื่นตระหนก" หรืออะไรทำนองนี้
ส่วนที่แย่ที่สุดของเรื่องนี้คือคุณไม่มีทางรู้ได้ว่าเหตุใดจึงต้องตื่นตระหนก - เพราะ Apple ไม่ได้ให้ร่องรอยสแต็คที่มีความหมายใด ๆ คุณสามารถมีเลขฐานสิบหกของที่อยู่ผู้ส่งคืนของสแต็กเฟรมเท่านั้น
มันเป็นสิ่งที่คลุมเครือเล็กน้อยในสิ่งที่คุณหมายถึงโดย "ขัดข้อง" คอมพิวเตอร์ของคุณ ... และไม่มีคำตอบที่ถูกต้องที่ชัดเจนถึงแม้ว่าจะมีตัวอย่างที่เป็นประโยชน์ในคำตอบอื่น ๆ เนื่องจากคำถามของคุณมีความคลุมเครือและทั่วไปมากกว่าฉันจึงต้องการให้ความสำคัญกับลักษณะของคำถามและให้คำตอบทั่วไปมากขึ้น
ผู้ที่ไม่เข้าใจ Terminal มักจะกลัวที่จะใช้เพราะกลัวว่าพวกเขาอาจทำตามคำสั่งและทำให้คอมพิวเตอร์พัง
ฉันคิดว่าบรรทัดคำสั่งเป็นดาบสองคมและมักจะคมมาก จุดแข็งที่ยิ่งใหญ่ที่สุดของมันยังเป็นจุดอ่อนที่ยิ่งใหญ่ที่สุดสำหรับผู้ใช้ใหม่: โปรแกรม CLI ทำในสิ่งที่คุณพูดโดยไม่ถามว่าจริง ๆ แล้วคุณหมายถึงอะไร บ่อยครั้งที่พวกเขาไม่ขอการยืนยันพวกเขาไม่ได้ให้ความช่วยเหลือในการจับมือหรือการโต้ตอบและตัวเลือกของพวกเขาสั้นกระชับบ่อยครั้งบางครั้งสับสนสตริงข้อความตาม โปรดทราบว่าโดยทั่วไปแล้วพวกเขาจะมีเอกสารที่ดีมากเพียงแค่ต้องอ่านคู่มือ (ซึ่งเกือบจะทุกครั้งman <command you are about to run>
) และใช้เวลาในการทำความเข้าใจว่าบรรทัดคำสั่งที่พวกเขากำลังจะเรียกใช้จะทำอะไร
โหมดการทำงานนี้มีประสิทธิภาพ - หมายความว่าผู้ใช้ CLI ที่มีประสบการณ์สามารถสร้างคำสั่งยาว "pipelines" ซึ่งทำงานที่ซับซ้อนด้วยคำสั่งเดียว นี่เป็นเพราะงานจะไม่ถามว่า "คุณแน่ใจหรือไม่?" ทุกย่างก้าวมันทำในสิ่งที่มันบอก แต่สำหรับผู้ใช้ที่ไม่คุ้นเคยกับโหมดนี้และคุ้นเคยกับ GUI ที่ความช่วยเหลือออนไลน์คลิกเพียงครั้งเดียวก็ไม่คุ้นเคยและน่ากลัว
แต่จริงๆแล้วมีคำสั่งที่จะทำให้คอมพิวเตอร์ของคุณพังหรือไม่?
คุณ "ผิดพลาด" คอมพิวเตอร์ของคุณโดยใช้ CLI ได้หรือไม่ อาจจะ. คุณสามารถทำให้ข้อมูลสูญหายได้หากคุณใช้คำสั่งทำลายอย่างไม่ถูกต้อง EG คำตอบมากมายที่นี่พูดถึงrm
คำสั่งที่ลบไฟล์ เห็นได้ชัดว่าคุณสามารถทำให้ข้อมูลสูญหายด้วยคำสั่งนั้นเป็นสิ่งที่คำสั่งถูกออกแบบมาให้ทำ
คุณสามารถใช้บรรทัดคำสั่งเพื่อทำให้เครื่องของคุณไม่สามารถใช้งานได้เป็นระยะเวลาหนึ่ง: คุณสามารถปิดเครื่องโดยไม่ต้องยืนยันทำให้กระบวนการใช้ทรัพยากรที่มีอยู่ 100% โดยไม่มีการยืนยันฆ่าโปรแกรมทั้งหมดของคุณ หรือทำลายระบบไฟล์ของคุณ หากคุณต้องการจริงๆคุณสามารถใช้ CLI เพื่อสร้างส่วนขยายเคอร์เนลซึ่งทำให้เคอร์เนลตื่นตระหนก (ซึ่งใกล้เคียงกับ "ความล้มเหลว" ที่ฉันคิดได้)
บรรทัดคำสั่ง (เข้าถึงได้จาก Terminal) เป็นเครื่องมือที่ทรงพลัง บ่อยครั้งที่มันเร็วกว่าในการแก้ปัญหาโดยใช้ Terminal มากกว่า GUI วิธีแก้ปัญหาบางอย่างใช้ได้เฉพาะเมื่อใช้คำสั่งเทอร์มินัล แต่กุญแจสำคัญในการ CLI คือความเข้าใจ อย่าเรียกใช้คำสั่งสุ่มที่คุณเห็นทางออนไลน์ อ่าน man pages และเข้าใจว่าคำสั่งทำอะไร หากคุณไม่แน่ใจให้ถามใครสักคนหรือเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่งก่อนเรียกใช้