Чи можете ви насправді використовувати термінал для збою вашого комп'ютера?


48

Люди, які не розуміють Термінал, часто бояться його використовувати, побоюючись, що вони можуть зіпсувати свою команду і зламати комп'ютер. Ті, хто краще знає Термінал, знають, що це не так - зазвичай Термінал просто видасть помилку. Але чи є насправді команди, які зламають ваш комп’ютер?

ПОПЕРЕДЖЕННЯ: ви можете втратити дані, ввівши ці або скопіювавши пасту, особливо sudoта rmкоманди.


Якийсь хлопець випадково витер всі комп’ютери своєї компанії однією лінією, я бачив це на цьому сайті пару років тому, це було підробкою, але це все одно може легко трапитися. Я зв’яжу, якщо зможу його знайти.
Ной Крістіно

7
Термінал - це лише інтерфейс командного рядка для запущених програм. Це альтернатива графічному інтерфейсу користувача . Ви можете запускати довільні програми з будь-якої. Отже, ваше запитання не має великого сенсу; Ви натомість повинні запитати: Чи можете ви зірвати комп’ютер за допомогою програми?
jamesdlin

Що ви маєте на увазі під «крахом»? Команди, що виконуються в терміналі, часто можуть бути потужними і часто "роблять те, що ви говорите, а не те, що ви маєте на увазі", не запитуючи, на відміну від більшості команд GUI Mac OS X GUI. Але якщо ви навмисно не намагаєтеся , ви навряд чи зламаєте машину. (Але я можу придумати кілька способів навмисно зробити це)
Джош

1
Введення команд з Інтернету може бути дуже небезпечним . Незалежно від можливості повісити вашу машину. Введення команд, які ви принаймні невиразно розумієте, не повинно бути небезпечним. Інакше багато способів відкрутити комп’ютер. Це як натискання на випадкові параметри конфігурації системи в GUI, але принаймні можливості в GUI обмежені. wrt небезпека вставки команд - текст, який ви візуально бачите скопійованим, може відрізнятися від фактично скопійованого тексту, таким чином, він може містити шкідливі команди, змішані.
акостадінов

Відповіді:


51

Один із способів зірвати комп’ютер - це виконання так званої вилки-бомби .

Ви можете виконати його на unix-sytem:

:(){ :|: & };:

Це команда, яка буде рекурсивно нерестувати процеси, поки ОС не буде настільки зайнята, що більше не реагуватиме на жодні дії.


49
@bunyaCloven, якщо я правильно розумію вашу команду, то це команда видалити всі папки без підказки , що дуже небезпечно, якщо воно працює . Я хочу, щоб ви написали попередження про це.
Ендрю Т.

80
@AndrewT. Люди не повинні просто вводити випадкові команди, які вони знайшли в Інтернеті, всі мимоволі. (особливо в темі під назвою "чи можна збити комп'ютер через термінал")
Джон Гамільтон,

34
ОП попросили краху з терміналу, а не протирання.
пристань

16
Бомба вилки фактично нанесе мінімальний збиток на Mac OS X, оскільки має верхні межі для кількості процесів.
ВВП2

7
@bunyaCloven замінити ;з , &і ви отримаєте , щоб видалити всі файли і вилки бомби в той же час, і подивитися , що ламає систему першої!
Мюзер

41

Не впевнений, що ви маєте на увазі під час збою комп'ютера - якщо ви переформулюєте його, щоб сказати "зробити комп'ютер непридатним", то так. Безумовно, все, що потрібно, - це одна блукаюча команда - лише момент, коли ти не думаєш чітко про те, що робиш, подібно до того, коли ти говориш, не думаючи, і шкода може бути величезною і майже негайною. Класичний приклад:

$ sudo rm -rf /

Якщо ви дозволите цій команді виконуватись ще лише одну секунду, це може знищити достатню кількість вашої системи, щоб зробити її незавантаженою і, можливо, призвести до незворотної втрати даних. Не робіть цього.


2
І просто поділитися з тим, чому я хотів уточнити переформулювання фрази .., щоб "розбити" комп'ютер у традиційному розумінні - зробити його блокуванням - вам потрібно буде дати процесору достатньо роботи, щоб він не міг реагувати своєчасно виконувати інші завдання .. наприклад оновлення графіки та переміщення курсору, наприклад. Я впевнений, що існує спосіб зробити це з командного рядка.
Харв

6
@DonielF -rозначає рекурсивно видаляти файли в каталозі. -fозначає "примусити", як у не вимагайте підтвердження, незалежно від дозволів певного файлу. /це кореневий каталог файлової системи, що означає, що вона знищить все і все, крім, можливо, деяких спеціальних файлів, які не ведуть себе як типові файли. Крім того, вам доведеться досить важко знайти коротку команду, яка розбиватиме вашу систему без дозволів root / admin.
ВВП2

11
Я спробував rm -rf /деякий час назад і rmсказав, що якщо ви хочете видалити root, то використовуйте такий-і-такий прапор. Дані не втрачено. Схоже, зараз є захист від сліпого запуску rm -rf /.
alexyorke

27
- прапор без збереження-кореня потрібно з 2006 року, щоб це працювало за призначенням
Encaitar

6
Ось випадок із реального світу, в якому це насправді сталося - rm -rf справді схожий на юридичний, що пішов зовсім не так: /
mgarciaisaia

30

Припустимо, ви не знаєте, чим займаєтесь та намагаєтесь зробити резервну копію якогось жорсткого диска

dd if=/dev/disk1 of=/dev/disk2 

Добре, якщо ви змішаєте їх (перемкніть, якщо і на), вони замінять свіжі дані зі старими даними, запитань не задається.

Подібні поєднання можуть статися з утилітами архіву. І відверто кажучи з більшістю утиліт командного рядка.

Якщо ви хочете, щоб приклад суміші з одним символом, що призведе до аварійної роботи вашої системи, подивіться на цей сценарій: Ви хочете перемістити всі файли в поточному каталозі в інший:

 mv -f ./* /path/to/other/dir

Приймемо той факт, який ви навчились використовувати ./для позначення поточного каталогу. (Я так) Добре, якщо ви опустите крапку, вона почне переміщати всі ваші файли. Включаючи ваші системні файли. Вам пощастило, що ви цього не судили. Але якщо ви десь прочитали, що за допомогою "sudo -i" вам більше ніколи не доведеться вводити sudo, ви зараз увійшли як root. А тепер ваша система їсть сама перед вашими очима.

Але я знову думаю, що такі речі, як перезапис моїх коштовних файлів коду сміттям, тому що я переплутав один символ або тому, що я змішав порядок параметрів, - це більше клопоту.

Скажімо, я хочу перевірити код асемблера, який генерує gcc:

gcc -S program.c > program.s

Припустимо, у мене вже було program.s і я використовую завершення TAB. Я поспішаю і забуваю двічі TAB:

gcc -S program.c > program.c

Тепер я маю код асемблера у своєму program.c і більше немає коду c. Що для декого є принаймні справжньою невдачею, а для інших - часом починається з нуля.

Я думаю, що це ті, які завдадуть реальної «шкоди». Мені дуже не байдуже, якщо моя система виходить з ладу. Я б переймався втратою моїх даних.

На жаль, це помилки, які доведеться робити, поки ви не навчитесь користуватися терміналом з дотриманням відповідних заходів обережності.


16
Ваш останній пункт є однією з багатьох причин, чому всі повинні використовувати контроль над версіями
Darren H

4
Одного разу я знищив програму, над якою працював gcc program.c -o program.cзавдяки саме заповненню вкладки. Після цього я навчився релігійно користуватися контролем версій.
nneonneo

2
Найкраща відповідь поки що: розміщення команди, що мають законний вигляд, яка може бути результатом простого друку, але все ж може призвести до серйозної шкоди.
gaazkam

1
"Тепер я маю код асемблера у своїй програмі.c" Ні. У вас нічого немає. Перенаправлення врізало файл, перш ніж GCC навіть відкрив його.
муру

1
О людино, я насправді щасливий, що вони додали, що покращення інтерфейсу користувача в GCC. Минув час з моєї останньої помилки, але приємно бачити, що я буду мати невеликий захист від цього наступного разу.
nneonneo

28

Викликання паніки в ядрі є більш схожим на збій, ніж інші відповіді, які я бачив тут поки що:

sudo dtrace -w -n "BEGIN{ panic();}"

(код взятий звідси і також знайдений у власній документації Apple )

Ви також можете спробувати:

sudo killall kernel_task

Я не перевірив, що другий там насправді працює (і я не маю наміру, оскільки зараз я відкриваю якусь роботу).


2
Щойно спробував другий у 10.12.3 VM, і він просто говорить:No matching processes were found
Alexander O'Mara

3
Крім того, перший, здається, не працює, принаймні, якщо включено SIP,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
Олександр О'Мара,

@ AlexanderO'Mara Не дуже здивований вашими результатами другої команди; Я подумав, що Mac OS X не дозволить вам просто зняти процес ядра таким чином. Результатів для першої команди також слід очікувати, як це dtraceбуло ефективно зафіксовано SIP.
ВВП2

1
kernel_taskце не нормальний процес. Це безсмертне; Його не можна вбити, за винятком власної помилки (і це називалося б КП і збиває всю машину). kernel_taskPID PID номінально дорівнює 0, але якщо ви kill(pid, sig)подаєте його на системний виклик, сторінка man каже, що якщо pidдорівнює 0, то sigнадсилається до кожного процесу в групі процесів виклику процесу. . Тож ви просто не можете надіслати kernel_taskсигнал.
Iwillnotexist Idonotexist

@IwillnotexistIdonotexist Так, я вважав, що так би і було; спасибі за інформацію, хоча. Гарні речі, які потрібно мати на увазі.
ВВП2

19

Сучасний macOS робить дуже важким збій вашої машини як непривілейованого користувача (тобто без використання sudo), оскільки системи UNIX призначені для обробки тисяч користувачів, не дозволяючи жодному з них зламати всю систему. Тож, на щастя, зазвичай вам потрібно буде запропонувати перед тим, як зробити щось, що руйнує вашу машину.

На жаль, цей захист стосується лише самої системи. Як показує xkcd, існує багато речей, які вам не важливі, але не захищені Захистом цілісності системи, привілеями root або паролем:

XKCD 1200

Отже, ви можете ввести багато речей, які просто зірвуть ваш обліковий запис користувача та всі ваші файли, якщо ви не будете обережні. Кілька прикладів:

  • 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 знищить кожну вашу програму, досить швидко вийде з системи та, можливо, спричинить втрату даних.

3
FYI (для інших, хто читає це) findмає -deleteаргумент, який набагато безпечніший, ніж трубопроводиxargs rm
Джош

Чи сучасний MacOS справді більш стійкий до ударів? Більшість цих систем призначені для одного користувача. Чи справді вони мають здорові maxprocs / cpulimits? Чи можете ви надати довідку?
user2497

1
Ви, з усіх людей, добре знаєте, яку шкоду ln -sfможе зробити ... і як відновитись з неї :-)
Iwillnotexist Idonotexist

1
@Josh: дякую, що вказали на це. І, в загальному випадку, слід використовувати find -print0 | xargs -0для безпечного поводження з незнайомими символами у назви файлів.
nneonneo

1
Домовились. Більш корисна порада xargs: <whatever> | xargs echo <something>спочатку скористайтеся для перегляду того, які команди насправді запустять xargs. xargs - чудовий приклад того, чому CLI є настільки потужним: ви можете одразу керувати багатьма, багатьма предметами без прискіпливого підтвердження та тримання рук ... просто переконайтесь, що ви говорите йому робити те, що ви хочете.
Джош

16

Ще одне, що ви можете зробити (що я раніше робив помилково):

sudo chmod 0 /

Це зробить вашу всю файлову систему (що означає всі команди та програми) недоступною ... за винятком кореневого користувача. Це означає, що вам потрібно буде увійти безпосередньо як користувач root і відновити файлову систему, Але ви не можете отримати доступ до sudoкоманди (або будь-якої іншої команди з цього приводу). Ви можете відновити доступ до команд та файлів, завантажившись в однокористувацький режим, встановивши та відновивши файлову систему за допомогою chmod 755 /.

Якщо це робити рекурсивно, chmod -R 0 /тоді це зробить систему непридатною. Правильним виправленням у цьому пункті є використання Disk Utility з розділу відновлення для відновлення дозволів на диск . Можливо, вам буде краще просто відновити знімок або резервну копію вашої файлової системи, якщо це було запущено рекурсивно.


8
"Ви можете виправити це за допомогою ... chmod 755 /" - Ні, ви не можете. Для багатьох файлів потрібні різні дозволи від 755, або для безпеки, або для роботи взагалі. chmod 755 /залишить вашу систему невпевненою і зламаною в тонких образах. Єдине повне відновлення chmod 0 /- це відновлення знімків, відновлення резервного копіювання та / або перевстановлення.
marcelm

2
@marcelm Добре. Моя пропозиція полягала лише в тому, щоб відновити доступ до команд, а не як постійне виправлення. Я оновив свою відповідь, щоб це відобразити. Наскільки я знаю, chmod не є рекурсивним, якщо ви не використовуєте -Rпрапор - значить, я думав, що дозволи на підкаталоги не вплинуть?
musicman523

5
@marcelm Ви праві, але показана команда не є рекурсивною, тому /впливає лише вона.
Андреа Лацаротто

Я колись sudo chmod -R 700 /новий комп'ютер, вважаючи, що це буде набагато безпечніше, якби я це зробив. Дивно, але він завантажився і закінчився порожнім меню та порожнім робочим столом. Ніщо інше не працювало, але дозволи на відновлення Disk Utility Recovery Permissions насправді вдалося встановити майже все правильно!
nneonneo

2
У програмі @marcelm Disk є опція "Fix Permissions", яка повинна виправити це без повного відновлення системи
Josh

10

Відповіді на дзвінок 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просто зробить маленький кумедний тест на завантаження процесора. Дуже добре для перевірки, чи радіатор і вентилятор не відповідають номіналу.


Це відомо як Fork Bomb і, ймовірно, зробить систему непридатною (можна вважати "аварією"), але, швидше за все, не призведе до постійного збитку. Але це бридко!
Джош

@Josh ", але, швидше за все, не завдасть жодної постійної шкоди" За винятком будь-якої роботи, яка зараз не працює
reirab

@reirab Josh додав у свою заяву «все можливе». Але MacOS в основному зараз редагує фотографії та відео. Чи не мають програми Adobe автоматичне автоматичне збереження?
user2497

1
Також збережена робота завжди під загрозою, поки її не врятують. Якщо ваш комп'ютер зробить непридатним, ви не можете зберегти все, що ви відкрили :)
Josh

@Josh MacOS так легко зберігати речі. Це завжди 🍎-S. Ви не повинні були писати "ймовірно" user
user2497

7

Звичайно, переконайтеся, що у вас є резервна копія та збережіть усі важливі вами файли, а потім введіть halt

Якщо припустити, що ви використовуєте sudoкорінь, Mac вийде з ладу.

Найбільший ризик командного рядка - втрата даних. Інтерфейс macOS розроблений протягом десятиліть, щоб не дивувати людей і не роздрібнювати їх дані, налаштування чи програми. Графічний інтерфейс macOS також існує, щоб прибрати криву навчання (круту), щоб бути безпечною та освоїти сценарій оболонки.

Ви втрачаєте ці засоби захисту, тому я застерігаю людей, починаючи з терміналу або ssh. Якщо у вас є резервна копія, яку ви знаєте, працює і маєте час і впевненість / вміння виконати відновлення, тоді вам слід зануритися і навчитися і навіть розбити речі.


3
Ви сказали: "... і навіть ламати речі". Це гарний варіант використання для того, щоб робити ризиковані речі у віртуальній машині. :)
користувач3439894

1
Як буде цей збій? Він просто вимикає систему негайно. Він навіть промиває буфери ядра, щоб не було (збережених) втрат даних. developer.apple.com/legacy/library/documentation/Darwin/…
Джош

7
sudo kill -9 -1  

Я випадково виконав kill -9 -1perl-скрипт, що працює як root. Це було так само швидко, як тягнення шнура живлення. Після перезавантаження сервер здійснив перевірку файлової системи та продовжив належну роботу.

Я ніколи не пробував цю sudo kill -9 -1команду в командному рядку. Це може не працювати, оскільки ідентифікатор процесу "-1" означає "знищити всі процеси, що належать до групи процесів абонента".

Не впевнений, якщо з sudo, це також означає init та всі ядра ядра ... Але якщо ви корінь, kill -9 -1обов'язково зробите негайну зупинку - як і витягування шнура живлення. До речі - у журналах нічого не з’явиться, бо ця команда - найшвидший вбивця на заході!

Власне, щоб видужати, я пішов до наших сисадмінів і сказав їм, що я зробив. Вони зробили важку перезавантаження, тому що не було можливості ввійти на цей сервер (RHEL6).

Як kill -9 -1корінь вбиває кожен процес, який працює як корінь. Тобто тобто sshd. Це негайно вийшло з мене і заважало комусь знову входити. Будь-який процес, розпочатий init - включаючи init, був убитий, якщо вони не змінили UID або GID. Навіть увійти через серійну консоль вже не було можливо. ps -eaf | grep rootпоказує деякі фантазійні процеси, які, якщо вони реагують на SIGKILL за замовчуванням, в значній мірі зупинять навіть базові записи на HD.

Я зараз не спробую цього на своєму ноутбуці :-) Мені не цікаво дізнатися, чи kill -9 165дійсно ([ext4-rsv-conver]) перестане писати на HD.


Ви не можете "вбити" ядро, і це не повинно викликати перевірку файлової системи і самої себе. Як ви оговталися від ситуації? Ви зробили важку перезавантаження? Тому що це, напевно, викликало перевірку файлової системи :)
Josh

Ваша відредагована відповідь має сенс. Насправді ви не можете вбити initнормально, але ви можете знищити всі сеанси gettys та SSH та зробити машину непридатною. Магія SysRq повинно було дозволити для чистої перезавантаження, але це часто легше просто сила циклу і покладатися на журнал FS :)
Джош

5

Так, ви можете повністю знищити вашу систему. Випадково зробити щось з sudoпривілеями - це один із прикладів, який виклав, будь то забуття кількох символів, які доручають терміналу зробити щось зовсім інше, ніж ви задумали. rming /замість /tmp/\*лише 5 різниць символів. Розміщення місця в неправильному місці може також зробити щось зовсім інше. В інших випадках, здавалося б, добре значущі інструкції можуть містити в ньому шкідливий код. Деякі люди в Інтернеті дуже добре обманюють код.

Також є команди, які за допомогою html можуть зробити нульовий розмір шрифту, тож щось абсолютно нешкідливе виглядає, коли копіюється в буфер обміну, насправді може бути встановлення чиїхось git repo як надійного джерела та завантаження зловмисного програмного забезпечення.

І є команди, які ви можете запустити, які відкривають вас для експлуатації, або які можуть бути ідеально сприятливими, але видаляють важливі файли чи програми або пошкоджують ваш диск. Насправді, неправильне використання інструментів може зробити щось настільки ж базове, як випадкове записування у ваш завантажувальний сектор, у голову вашого диска чи багато інших проблем.

Прикладом чогось менш руйнівного, що не було розміщено, є відкриття бінарних файлів у vi. Якщо ви коли-небудь пробували це, ви знаєте, що він може зіпсувати ваш термінал до того, що він непридатний, поки він не стане reset.

Крім того, існують команди, які заблокують вашу машину, наприклад:

yes >> /dev/null & yes >> /dev/null & yes >> /dev/null & yes >> /dev/null & 

Ви можете спробувати це, він не заподіює шкоди, але він заблокує ваш процесор, і вам доведеться вбивати кожен процес, який ви породили.

За словами, в обчислюванні прийнято вважати, що не можна робити омлет, не розбивши кілька яєць. Вам слід бути обережними в терміналі, але єдиний спосіб покращити використання ОС - це навчання та практику.


Ваш перший приклад навряд чи шкідливий. Vim насправді досить розумний під час редагування бінарних файлів. І в гіршому випадку можна просто закрити вікно. Другий приклад з "так" викликає роздратування і задіяє неабияку частину CPU користувача, але система залишатиметься чуйною і ви зможете легко вбити вікно батьківського терміналу.
nneonneo

1
Я не погоджуюся з тим, що "зіпсувати ваш термінал до того, що він непридатний до перезавантаження" - спробуйте reset, це повинно очистити термінал, на якому було надруковано бінарний вихід. або, просто породив новий TTY
Josh

1
Класно, ні @JFA. Насправді мені знадобилися найне роки, щоб навчитися resetтрюку! Для отримання додаткової інформації: unix.stackexchange.com/questions/79684
Josh

1
@Josh дякую за це, це була велика допомога. Мені справді було багато років: P
JFA

1
@Josh Тоді 'stty sane ^ M' та 'tput reset' також повинні бути для вас захоплюючими.
user2497

4

Я лише початківець баш, але ви могли встановити час True; робити КОМАНД; зроблено; Більшість людей спробують Ctrl + C, що зупинить команду, а не зовнішній процес (ctrl + Z, який потім потрібно вбити). Я здогадуюсь, що якщо команда - це якась важка операція, як множення великої кількості на власну силу, то це може зіпсуватись із вашими ресурсами. Але дійсно, сучасна ОС зазвичай захищена від такого безладу.


2
Він просто працює дуже швидко, він нічого не руйнує. Вам просто потрібно роздрібнити інтенсивні розрахунки, щоб maxprocs ядра не сумував. trywhile true do cat /dev/zero > /dev/null & done
user2497

Дякую. Я б очікував, що обробка великої кількості дозволяє зробити комп'ютер повільним, іноді це траплялося з дуже простими програмами java / python, які я використовував для машинного навчання.
Андо Юрай

1
Кіт від нуля до нульового біта - це велика операція з числом, принаймні, введення / виведення. Я використовую один із них на ядро ​​центрального процесора, щоб робити теплові випробування.
user2497

1
І ^C буде також вбивати цикл while, але він просто повторюється занадто швидко, щоб перерва була схоплена. Утримування ^Cможе вирватися з петлі. Закрити термінал також буде :)
Josh

2
@Josh Легше зловити INT, якщо після завдання, що вимагає процесора, є невелика пауза, як сон 0,1.
user2497

3

Звичайно, ви все одно можете викликати збій системи за допомогою команд, введених разом з терміналом.

З роками стає важче, мабуть, через всілякі обмеження та захисні заходи, які застосовуються, але, як стверджує закон Мерфі: "Ніщо не є надійним для дурного".

"Бомби на вилках" і все те, rm -rfщо стосується дітей із сценарію, - це давно відомі речі для UNIX. За допомогою Mac OS X ви можете розважитися, скориставшись його частинами підсистеми графічного інтерфейсу ( WindowServerзгадавши) або чимось на зразок брандмауера OpenBSD, PFякий інженери Apple внесли, але так і не встигли оновити з 2008 року. PFпрацює в ядрі так , коли він ловить примху цього час Apple , каже вам « ви перезавантаження комп'ютера з - за паніки» або речі , як це.

Найгірше - це те, що ти ніколи не можеш уявити, де-чому-чому панікувала - тому що Apple не надає значущих слідів стека; ви можете мати лише шістнадцяткові номери зворотних адрес кадру стека.


Гарна відповідь та відмінні бали. Я хотів би додати до вашого списку чудових способів змусити OS X панікувати на танцполі мого особистого улюбленого, але без чітких термінів, щоб уникнути глупостей сценарію дитячого. Я вивантажую розширення ядра, що стосується NFC. Працює кожен раз, миттєво. Можна легко озброїти це в DOS, запланувавши це на ділене число, як 5 хвилин. Значить, він завантажиться, тоді лебідь зануриться. Це потребує перевстановлення ОС, яке дасть більшість адміністраторів, і навіть техники пропустять це ....
Френсіс з ResponseBase

3

Трохи неоднозначно, що ви маєте на увазі під «збоєм» вашого комп’ютера ... і для цього немає однозначної правильної відповіді, хоча в інших відповідях є корисні приклади. Оскільки ваше запитання є більш неоднозначним та загальним, я хотів би зупинитися на природі питання та дати більш загальну відповідь.

Люди, які не розуміють Термінал, часто бояться його використовувати, побоюючись, що вони можуть зіпсувати свою команду і зламати комп'ютер

Я вважаю, що командний рядок - це двосхилий меч, і часто дуже гострий. Його найбільшою силою є також його найбільша слабкість для нових користувачів: програми CLI роблять те, що ви говорите, не запитуючи, чи це дійсно те, що ви мали на увазі. Вони часто не просять підтвердження, не надають ручну чи інтерактивну допомогу, а їх варіанти короткі, часто стислі, іноді заплутані в текстових рядках. Зауважте, що вони, як правило, дуже добре задокументовані, потрібно лише прочитати посібник (що майже завжди man <command you are about to run>) і витратити час, щоб зрозуміти, що буде робити командний рядок, який вони будуть виконувати.

Цей режим роботи є потужним - це означає, що досвідчені користувачі CLI можуть створювати довгі команди "конвеєри", які виконують складні завдання за допомогою окремих команд. Це тому, що завдання не запитає "Ви впевнені?" кожен крок шляху, він робить те, що йому сказано. Але для користувача, незнайомого з цим режимом, і звичного до графічного інтерфейсу, де допомога в Інтернеті за один клік , незнайома і страшна.

Але чи є насправді команди, які зламають ваш комп’ютер?

Чи можете ви "зламати" комп'ютер за допомогою CLI? Може бути. Ви безсумнівно можете викликати втрату даних, якщо неправильно використовувати деструктивну команду. EG багато відповідей тут згадують rm, команду, яка видаляє файли. Очевидно, що ви можете викликати втрату даних за допомогою цієї команди, це те, що команда була розроблена.

Як вказували інші відповіді, ви можете використовувати командний рядок, щоб зробити вашу машину практично непридатною протягом певного періоду часу: ви можете вимкнутись без підтвердження, викликати процес використання 100% наявних ресурсів без підтвердження, вбити всі ваші програми або знищити вашу файлову систему. Якщо ви дійсно цього хотіли, ви можете використовувати CLI для створення розширення ядра, яке спричиняє паніку ядра (що є найближчим до "аварії", про яку я можу придумати).

Командний рядок (доступ до якого здійснюється через Термінал) - це потужний інструмент. Часто вирішити проблему за допомогою Terminal швидше, ніж GUI. Деякі рішення доступні лише за допомогою команд Terminal. Однак ключовим для CLI є розуміння . Не виконуйте випадкові команди, які ви бачите в Інтернеті. Прочитайте сторінки чоловіка і зрозумійте, що виконують команди. Якщо ви не впевнені, запитайте когось або дізнайтеся більше про команду, перш ніж виконувати її.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.