실제로 터미널을 사용하여 컴퓨터를 충돌시킬 수 있습니까?


48

터미널을 이해하지 못하는 사람들은 종종 자신의 명령을 어기거나 컴퓨터를 손상시킬 수 있다는 두려움 때문에 터미널을 사용하는 것을 두려워합니다. 터미널을 아는 사람들은 그렇지 않다는 것을 잘 알고 있습니다. 일반적으로 터미널은 오류 만 출력합니다. 그러나 실제로 컴퓨터를 손상시키는 명령이 있습니까?

경고 : 특히, 다음을 입력하거나 붙여 넣기를 복사 할 경우 데이터가 손실 될 수 sudorm명령.


어떤 사람은 우연히 자신의 회사 컴퓨터를 모두 한 줄로 닦았습니다. 몇 년 전에이 사이트에서 보았습니다. 가짜 였지만 여전히 쉽게 일어날 수있었습니다. 찾을 수 있으면 연결하겠습니다.
노아 크리스티 노

7
터미널은 프로그램을 실행하기 위한 명령 줄 인터페이스 일뿐 입니다. 그래픽 사용자 인터페이스 의 대안 입니다. 어느 하나에서 임의의 프로그램을 실행할 수 있습니다. 따라서 귀하의 질문은 실제로 의미가 없습니다. 프로그램을 실행하여 컴퓨터를 손상시킬 수 있습니까?
jamesdlin

"충돌"은 무슨 뜻입니까? 터미널에서 실행되는 명령은 종종 강력 할 수 있으며 대부분의 Mac OS X GUI 명령과 달리 묻지 않고 "무엇을 말하든 원하는대로하지 않습니다". 그러나 의도적으로 시도 하지 않으면 컴퓨터 가 충돌 하지 않을 수 있습니다. (그러나 의도적으로 그렇게하는 몇 가지 방법을 생각할 수 있습니다)
Josh

1
웹에 명령을 붙여 넣는 것은 매우 위험 할 수 있습니다 . 기계를 걸 수있는 가능성에 관계없이 적어도 모호하게 이해하는 명령을 입력하는 것은 위험하지 않아야합니다. 그렇지 않으면 컴퓨터를 망치는 많은 방법이 있습니다. GUI에서 임의의 시스템 구성 설정을 클릭하는 것과 같지만 GUI에서는 최소한 가능성이 더 제한적입니다. 붙여 넣기 명령의 위험-시각적으로 복사 된 텍스트는 복사 된 실제 텍스트와 다를 수 있으므로 악성 명령이 혼합되어 포함될 수 있습니다.
akostadinov

답변:


51

컴퓨터를 충돌시키는 한 가지 방법은 소위 fork-bomb 를 실행하는 것 입니다.

유닉스 시스템에서 다음을 수행하여 실행할 수 있습니다.

:(){ :|: & };:

OS가 너무 바쁠 때까지 재귀 적으로 프로세스를 생성하여 더 이상 어떤 조치에도 응답하지 않는 명령입니다.


49
@bunyaCloven 내가 제대로 명령을 이해한다면, 그것은하는 명령의 메시지를 표시하지 않고 모든 폴더를 제거 하고, 그것을 작동하는 경우 매우 위험은 . 나는 당신이 그것에 대한 경고 통지를 썼 으면 좋겠다.
Andrew T.

80
@AndrewT. 사람들은 인터넷에서 찾은 임의의 명령을 아무렇게나 입력해서는 안됩니다. (특히 "터미널을 통해 컴퓨터를 충돌시킬 수 있습니까?"라는 스레드에있는 스레드)
John Hamilton

34
OP는 와이프가 아닌 터미널에서 충돌을 요청했습니다.
piersb

16
포크 폭탄은 프로세스 수에 대한 상한이 있기 때문에 실제로 Mac OS X에서 최소한의 피해를줍니다.
GDP2

7
바꾸기 @bunyaCloven ;과를 &당신은 같은 시간에 모든 파일과 포크 폭탄을 제거에 도착, 먼저 시스템을 나누기 확인할!
Muzer

41

'컴퓨터 충돌'에 대해 무슨 뜻인지 잘 모르겠습니다. 컴퓨터를 '사용할 수 없다'라고 다시 말하면 컴퓨터를 사용할 수 없습니다. 확실히 모든 것은 하나의 길 잃은 명령입니다-생각하지 않고 말할 때와 마찬가지로 현재하고있는 일에 대해 명확하게 생각하지 않는 순간, 그 피해는 엄청나고 즉각적입니다. 고전적인 예 :

$ sudo rm -rf /

이 명령을 1 초 동안 만 실행하면 시스템을 완전히 제거하여 부팅 할 수 없게되며 돌이킬 수없는 데이터 손실이 발생할 수 있습니다. 하지마


2
다시 말해서 이유를 공유하고 싶었습니다. 전통적인 의미에서 컴퓨터를 '충돌'하려면-잠그기 위해-CPU가 응답 할 수없는 충분한 작업을 수행해야합니다. 예를 들어 그래픽을 업데이트하고 커서를 이동하는 등 다른 작업에 적시에 수행 할 수 있습니다. 커맨드 라인에서 그렇게 할 수있는 방법이 있다고 확신합니다.
Harv

6
@DonielF -r는 디렉토리에서 파일을 재귀 적으로 삭제하는 것을 의미합니다. -f주어진 파일의 권한에 관계없이 확인을 요구하지 않는 "강제"를 의미합니다. /파일 시스템의 루트 디렉토리입니다. 즉, 일반적인 파일처럼 작동하지 않는 일부 특수 파일을 제외하고는 모든 것을 파괴합니다. 또한 루트 / 관리자 권한없이 시스템을 중단시키는 간단한 명령을 찾는 데 어려움을 겪을 수 있습니다.
GDP2

11
나는 rm -rf /잠시 후에 시도 하고 rm루트를 제거하려면 그런 플래그를 사용한다고 말했다. 데이터가 손실되지 않았습니다. 맹목적으로 달리는 것으로부터 보안 보호가있는 것 같습니다 rm -rf /.
alexyorke

27
--no-preserve-root 플래그는 2006 년 이후 이것이 의도 한대로 작동하기 위해 필요했습니다
Encaitar

6
여기에 '이 실제로 발생하는 실제 사건이야 - rm -rf 정말 정말 잘못된 즉, 법적 유사한는 : /
mgarciaisaia

30

수행중인 작업과 하드 드라이브 백업을 수행하려는 작업을 모르는 경우

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

글쎄, 당신이 그것들을 섞으면 (질문과 전환) 새로운 데이터를 오래된 데이터로 덮어 쓸 것입니다.

아카이브 유틸리티에서도 비슷한 혼합이 발생할 수 있습니다. 솔직히 대부분의 명령 줄 유틸리티를 사용하십시오.

시스템이 충돌하는 한 문자 혼합의 예를 원하면이 시나리오를 살펴보십시오. 현재 디렉토리의 모든 파일을 다른 디렉토리로 이동하려고합니다.

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

./현재 디렉토리를 표시하는 데 배운 사실을 받아들 입니다. 점을 생략하면 모든 파일이 이동 하기 시작 합니다. 시스템 파일 포함 당신이 이것을 sudo하지 않은 것은 운이 좋다. 그러나 'sudo -i'로 어딘가를 읽으면 sudo를 다시 입력 할 필요가 없습니다. 루트로 로그인하십시오. 그리고 지금 당신의 시스템은 당신의 눈 앞에서 스스로를 먹고 있습니다.

그러나 다시 한 번 문자 하나를 엉망으로 만들거나 매개 변수 순서를 섞어서 귀중한 코드 파일을 가비지로 덮어 쓰는 것과 같은 것이 더 문제가된다고 생각합니다.

gcc가 생성하는 어셈블러 코드를 확인하고 싶다고 가정 해 봅시다.

gcc -S program.c > 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
"이제 program.c에 어셈블러 코드가 있습니다." 너는 아무것도 없어. GCC가 파일을 열기 전에 파일 리디렉션이 잘 렸습니다.
muru

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
Alexander O'Mara

@ AlexanderO'Mara 두 번째 명령의 결과에 크게 놀라지 않습니다. Mac OS X에서는 커널 프로세스를 이런 식으로 중단시킬 수 없다고 생각했습니다. dtraceSIP가 효과적으로 중화 한
GDP2 07-31-17

1
kernel_task정상적인 과정이 아닙니다. 불멸입니다. 자체 오류 (KP라고하며 시스템 전체를 다운시키는 것)를 제외하고는 죽일 수 없습니다. kernel_taskPID는 명목상 0이지만, kill(pid, sig)syscall에 제공하면 매뉴얼 페이지에 If pidequals 0이면 sig호출 프로세스의 프로세스 그룹에있는 모든 프로세스로 전송됩니다. . 따라서 kernel_task신호 를 보낼 수 없습니다 .
Idonotexist Idonotexist

@IwillnotexistIdonotexist 그래, 나는 그 경우가 많을 것이라고 생각했다. 정보 주셔서 감사합니다. 명심해야 할 것들.
GDP2 07-31-17

19

현대의 macOS는 UNIX 시스템이 수천 명의 사용자를 처리하여 시스템 전체를 손상시키지 않기 때문에 권한이없는 사용자 (예 :을 사용하지 않음 ) 로 시스템을 충돌 시키기가 매우 어렵습니다 sudo. 고맙게도 일반적으로 컴퓨터를 손상시키는 작업을 수행하기 전에 메시지가 표시되어야합니다.

불행히도, 그 보호는 시스템 자체에만 적용됩니다. XKCD 보듯이, 물건을 많이 거기에 당신이 루트 권한 또는 암호를 묻는 메시지 시스템 무결성 보호에 의해 보호되지 않도록 신경을 :

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
@ 조쉬 : 지적 해 주셔서 감사합니다. 그리고 일반적인 경우 find -print0 | xargs -0파일 이름에서 이상한 문자를 안전하게 처리 하는 데 사용해야 합니다.
nneonneo

1
동의했다. 보다 유용한 xargs 조언 : <whatever> | xargs echo <something>xargs가 실제로 실행할 명령을 미리 보려면 먼저 사용하십시오 . xargs는 CLI가 강력한 이유를 보여주는 훌륭한 예입니다. 성가신 확인과 손 잡기없이 한 번에 많은 항목을 조작 할 수 있습니다. 원하는대로하도록 지시하십시오.
Josh

16

당신이 할 수있는 또 다른 것은 (이전에 실수로 한 것입니다) :

sudo chmod 0 /

루트 사용자를 제외하고 전체 파일 시스템 (모든 명령과 프로그램을 의미 함)에 액세스 할 수 없게됩니다. 즉, 루트 사용자로 직접 로그인하고 파일 시스템을 복원해야하지만 sudo명령 (또는 그 문제에 대해서는 다른 명령)에 액세스 할 수 없습니다 . 단일 사용자 모드로 부팅하고 파일 시스템을 마운트 및 복원하여 명령 및 파일에 대한 액세스를 복원 할 수 있습니다 chmod 755 /.

이 작업을 재귀 적으로 수행 chmod -R 0 /하면 시스템을 사용할 수 없게됩니다. 이 시점에서 올바른 수정은 복구 파티션에서 디스크 유틸리티를 사용하여 디스크 권한복구하는 것 입니다. 파일 시스템의 재귀 적으로 실행 된 경우 파일 시스템의 스냅 샷 또는 백업을 복원하는 것이 좋습니다.


8
"당신은 ... chmod 755 /"로 고칠 수 있습니다 .- 아니요. 많은 파일은 보안을 위해 또는 전혀 작동하지 않기 위해 755와 다른 권한이 필요합니다. chmod 755 /시스템이 안전하지 않고 미묘한 방식으로 고장날 수 있습니다. 유일한 전체 복구 chmod 0 /는 스냅 샷 복원, 백업 복원 및 / 또는 재설치를 통한 것입니다.
marcelm

2
@marcelm 좋은 지적입니다. 내 제안은 영구적 수정이 아닌 명령에 대한 액세스를 복원하는 것입니다. 이를 반영하여 답변을 업데이트했습니다. 내가 아는 한 chmod는 -R플래그 를 사용하지 않으면 재귀 적이 지 않으므로 하위 디렉토리의 권한에 영향을 미치지 않을 것이라고 생각 했습니까?
musicman523

5
@marcelm 당신은 맞다되지만, 표시된 명령 하지 그래서에만 재귀가 /영향을받습니다.
Andrea Lazzarotto

한 번 sudo chmod -R 700 /새 컴퓨터를 사용하면 그렇게하면 훨씬 더 안전해질 것입니다. 놀랍게도 부팅되어 빈 메뉴 표시 줄과 빈 바탕 화면이 생겼습니다. 다른 작업은 없었지만 복구 파티션의 디스크 유틸리티 복원 권한은 실제로 거의 모든 것을 올바르게 설정했습니다!
nneonneo

2
@marcelm 디스크 유틸리티에는 전체 시스템 복원없이이를 수정해야하는 "권한 수정"옵션이 있습니다.
Josh

10

전화 sudo가 잘못 되었다고 응답 해야합니다. 이들은 이미 시스템에 대한 관리 액세스를 가정합니다.

시도하십시오 perl -e 'exit if fork;for(;;){fork;}'. OSX는 이제 이것을 막을 수 있습니다. is가 터미널 응용 프로그램과 하위 프로세스를 종료할지 묻는 사과 거품이 있으면 (거의) 좋습니다.

while true ; do cat /dev/zero > /dev/null & done또한 매우 편리합니다. 당신이없는 경우 perl.

for i in 1 2 3 4 ; do cat /dev/zero > /dev/null & done재미있는 작은 CPU 부하 테스트를 수행합니다. 방열판과 팬의 성능이 정상인지 확인하는 데 매우 좋습니다.


이것은 포크 폭탄 으로 알려져 있으며 시스템을 사용할 수 없게 만들거나 ( "충돌"으로 간주 될 수 있음) 영구적 손상을 일으키지 않습니다. 그러나 불쾌합니다!
Josh

@Josh "하지만 영구적 인 손상을 일으키지 않을 것입니다"현재 열려있는 저장되지 않은 작업을 제외하고.
reirab

@reirab Josh는 자신의 진술에 포괄 '모두'를 추가했습니다. 그러나 MacOS는 현재 사진과 비디오를 편집하기위한 것입니다. Adobe 프로그램에 자동 자동 저장 기능이 없습니까?
user2497

1
또한 저장되지 않은 작업은 저장 될 때까지 항상 위험합니다. 컴퓨터를 사용할 수 없게되면 열려있는 모든 것을 저장할 수 없습니다. :)
Josh

@Josh MacOS는 저장하기가 매우 쉽습니다. 항상 🍎-S입니다. 당신은 '가능한 것'을 작성해서는 안됩니다 👋🏾
user2497

7

물론 백업이 있는지 확인하고 관심있는 파일을 저장 한 후 다음을 입력하십시오. halt

그런 다음 sudo루트 로 사용한다고 가정하면 Mac이 중단됩니다.

명령 줄의 가장 큰 위험은 데이터 손실입니다. macOS 인터페이스는 수십 년 동안 사람들을 놀라게하지 않고 데이터 나 설정 또는 앱을 파쇄하도록 설계되었습니다. macOS 그래픽 인터페이스는 또한 안전하고 마스터 셸 스크립팅에 대한 학습 곡선 (가파른 것)을 제거하기 위해 존재합니다.

터미널 응용 프로그램이나 ssh로 시작하는 사람들에게주의를 기울이는 보호 기능을 잃어 버렸습니다. 백업이있는 경우 작동하는 것으로 알고 있으며 복원을 수행 할 시간과 자신감 / 기술이 있으면 다이빙을하고 배우고 심지어 부수어야합니다.


3
가상 머신에서 위험한 작업을 수행하기에 좋은 사용 사례입니다. :)
user3439894

1
이 충돌은 어떻게됩니까? 시스템을 즉시 종료합니다. 심지어 커널 버퍼를 플러시하므로 (저장된) 데이터 손실이 없습니다. developer.apple.com/legacy/library/documentation/Darwin/…
Josh

7
sudo kill -9 -1  

실수 kill -9 -1로 루트로 실행되는 펄 스크립트 로 수행했습니다 . 전원 코드를 당기는 것만 큼 빠릅니다. 다시 부팅 할 때 서버는 파일 시스템을 검사하고 계속 올바르게 실행했습니다.

나는 sudo kill -9 -1커맨드 라인에서 그 명령을 시도하지 않았다 . 프로세스 ID "-1"은 "호출자의 프로세스 그룹에 속하는 모든 프로세스 종료"를 의미하므로 작동하지 않을 수 있습니다.

확실하지 않으면 sudo를 사용하면 init 및 모든 커널을 의미합니다 ...하지만 루트 인 kill -9 -1경우 전원 코드를 당기는 것처럼 즉시 중지합니다. 그건 그렇고-로그 파일에는 아무것도 나타나지 않습니다. 왜냐하면 그 명령은 서쪽에서 가장 빠른 킬러이기 때문입니다!

실제로 복구하기 위해 시스템 관리자에게 가서 내가 한 일을 알려주었습니다. 해당 서버 (RHEL6)에 로그인 할 방법이 없으므로 하드 재부팅을 수행했습니다.

kill -9 -1루트로 A 는 루트로 실행되는 모든 프로세스를 종료합니다. 즉 sshd입니다. 이로 인해 즉시 로그 아웃되어 다른 사람이 다시 로그인하지 못했습니다. UID 또는 GID를 변경하지 않으면 init를 포함하여 init로 시작한 모든 프로세스가 종료되었습니다. 시리얼 콘솔을 통한 로그인조차 더 이상 불가능했습니다. ps -eaf | grep root기본 방식으로 SIGKILL에 반응하면 HD에 대한 기본 쓰기조차 거의 막을 수있는 멋진 프로세스를 보여줍니다.

나는 이것을 내 랩탑에서 지금 시도하지 않을 kill -9 165것이다.


커널을 "킬 (kill)"할 수 없으며 이로 인해 파일 시스템 자체가 체크인되지 않아야합니다. 상황에서 어떻게 회복 했습니까? 하드 재부팅을 했습니까? 파일 시스템 검사의 원인 일 수 있습니다. :)
Josh

수정 된 답변이 의미가 있습니다. 실제로 init정상적으로 죽일 수는 없지만 모든 게티와 SSH 세션을 죽이고 기계를 사용할 수 없게 만들 수 있습니다. 매직 SysRq를이 깨끗하고 재부팅 허용하지만 :) 그냥 전원주기 종종 쉽게와 FS 저널에 의존해야
조쉬

5

예, 시스템을 완전히 파괴 할 수 있습니다. 실수로 sudo권한으로 무언가를하는 것은 터미널이 의도 한 것과 완전히 다른 것을 지시하는 문자 몇 개를 잊어 버렸는지 여부에 관계없이 게시 된 한 가지 예입니다. 대신 rming 은 5 자 차이입니다. 잘못된 장소에 공간을두면 완전히 다른 일을 할 수 있습니다. 다른 경우에는 겉보기에는 명령이 악성 코드를 난독 화했을 수 있습니다. 인터넷상의 일부 사람들은 코드를 난독 처리하는 데 능숙합니다.//tmp/\*

HTML을 사용하여 글꼴 크기를 0으로 만들 수있는 명령도 있으므로 클립 보드에 복사 할 때 완전히 무해한 것으로 보이는 것은 실제로 누군가의 git repo를 신뢰할 수있는 소스로 설치하고 맬웨어를 다운로드하는 것일 수 있습니다.

또한 실행할 수있는 명령이 있습니다.이 명령은 악의적 인 용도로 사용되거나 완벽하게 의도되었지만 중요한 파일이나 프로그램을 제거하거나 디스크를 손상시킵니다. 실제로 도구를 잘못 사용하면 부팅 섹터 나 디스크 헤드 또는 기타 여러 가지 문제를 실수로 덮어 쓰는 것처럼 기본적인 작업을 수행 할 수 있습니다.

게시되지 않은 덜 파괴적인 예는에서 바이너리 파일을 여는 것입니다 vi. 당신이 그것을 시도했다면, 그것은 사용할 수없는 시점까지 터미널을 망칠 수 있음을 알게 될 것입니다 reset.

또는 다음과 같이 컴퓨터를 정지시키는 명령이 있습니다.

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

당신은 그것을 시도 할 수 있습니다, 그것은 손상을 입히지 않을 것이지만, 프로세서를 멈출 것입니다. 그리고 당신이 생성 한 각 프로세스를 죽여야합니다.

즉, 컴퓨팅에서는 일반적으로 계란 몇 개를 깨지 않으면 오믈렛을 만들 수 없다는 것이 일반적입니다. 터미널에주의를 기울여야하지만, OS를보다 잘 사용할 수있는 유일한 방법은 배우고 연습하는 것입니다.


첫 번째 예는 거의 해롭지 않습니다. Vim은 바이너리 파일을 편집 할 때 실제로 제정신입니다. 최악의 경우 창을 닫을 수 있습니다. "yes"를 사용하는 두 번째 예는 성가 시며 사용자 CPU를 상당히 사용하지만 시스템은 응답을 유지하며 부모 터미널 창을 쉽게 종료 할 수 있습니다.
nneonneo

1
나는 "다시 시작할 때까지 터미널을 사용할 수 없다는 점에 동의하지 않는다"는 것에 동의하지 않습니다.- reset이진 출력이 인쇄 된 터미널을 정리해야합니다. 또는 새로운 TTY를 생성하십시오
Josh

1
멋지다, nw @JFA. reset트릭 을 배우는 데 실제로 몇 년이 걸렸습니다 ! 자세한 정보 : unix.stackexchange.com/questions/79684
Josh

1
@Josh 감사합니다. 큰 도움이되었습니다. 실제로 나를 위해 몇 년이
JFA

1
@Josh 그렇다면 'stty sane ^ M'과 'tput reset'도 흥미로울 것입니다.
user2497

4

나는 단지 배쉬 초보자이지만, 당신은 잠시 True를 설정할 수 있습니다. 명령을 수행; 끝난; 대부분의 사람들은 외부 프로세스가 아닌 명령을 중지하는 Ctrl + C를 시도합니다 (Ctrl + Z). 명령이 많은 수를 자신의 힘에 곱하는 것과 같은 무거운 작업이라면 리소스가 엉망이 될 수 있습니다. 그러나 실제로 현대 OS는 일반적으로 그러한 혼란으로부터 보호됩니다.


2
그것은 정말 빠르게 실행되며 아무것도 충돌하지 않습니다. 커널 maxprocs가 당신을 슬프게하지 않도록 집중 계산을해야합니다. 시도while true do cat /dev/zero > /dev/null & done
user2497

감사. 컴퓨터를 느리게 만들기 위해 많은 수를 처리 할 것으로 예상했을 때, 때로는 기계 학습에 사용한 매우 간단한 java / python 프로그램에서 발생했습니다.
Ando Jurai

1
cat zero to null 비트는 적어도 I / O에서 큰 숫자 연산입니다. CPU의 코어 당 하나를 사용하여 열 테스트를 수행합니다.
user2497

1
그리고 ^C 또한 while 루프를 죽일 수 있지만, 그것은 단지 인터럽트가 잡힐하기에 너무 빨리 반복합니다. 누르고 있으면 ^C루프가 끊어 질 수 있습니다. 터미널을 닫으면 역시 :)
Josh

2
@Josh CPU를 많이 사용하는 작업 후 수면 0.1과 같이 작은 일시 중지가 있으면 INT를 잡기가 더 쉽습니다.
user2497

3

확실히 터미널로 입력 한 명령을 사용하여 시스템 충돌이 발생할 수 있습니다.

머피의 법칙에 따르면 수년 동안 모든 종류의 제한과 보호 조치가 적용되어 어려워 질 것입니다. "충분한 능력을 가진 바보에게는 아무것도 없습니다."

"포크 폭탄"과 모든 rm -rf스크립트 키즈 항목은 고대 유닉스 용으로 알려져 있습니다. Mac OS X을 사용하면 GUI 하위 시스템 부분 ( WindowServer또는 언급)을 사용하거나 PFApple 엔지니어가 가져 왔지만 2008 년 이후 업데이트 된 적이없는 OpenBSD 방화벽과 같은 기능을 사용하면 더 재미있을 수 있습니다 . PF커널에서 작동하므로 문제가 생길 때 Apple이 " 공황으로 인해 컴퓨터 다시 시작했습니다"라고 말하거나 이와 비슷한 것을 알려야합니다.

이것의 최악의 부분은 어디서 당황했는지에 대한 아이디어를 결코 가질 수 없다는 것입니다. Apple이 의미있는 스택 추적을 제공하지 않기 때문입니다. 16 진수의 스택 프레임 반환 주소 만 가질 수 있습니다.


좋은 답변과 훌륭한 포인트. 스크립트 플로어 어리 석음을 피하기위한 명확한 용어없이 OS X가 댄스 플로어에서 개인적으로 좋아하는 패닉을 일으키는 훌륭한 방법 목록에 추가하고 싶습니다. NFC와 관련된 커널 확장을 언로드합니다. 매번 즉시 작동합니다. 이것을 5 분의 수로 나눠서 이것을 DOS로 쉽게 무기화 할 수 있습니다. 따라서 스완 다이빙을 시작합니다. 이것은 대부분의 관리자에게 OS를 다시 설치해야하며 심지어 기술자조차도 이것을 놓칠 것입니다 ....
ResponseBase

3

컴퓨터를 "충돌"한다는 말의 의미는 모호합니다. 다른 답변에는 유용한 예가 있지만 그에 대한 확실한 정답은 없습니다. 귀하의 질문이 더 모호하고 일반적이므로 질문의 성격에 초점을 맞추고 더 일반적인 답변을 드리고자합니다.

터미널을 이해하지 못하는 사람들은 종종 자신의 명령을 어기거나 컴퓨터를 망칠 수 있다는 두려움 때문에 터미널을 사용하는 것을 두려워합니다.

커맨드 라인은 양날의 칼이며 종종 매우 날카로운 것 같습니다. CLI의 가장 큰 장점은 새로운 사용자에게 가장 큰 약점이기도합니다. CLI 프로그램은 사용자가 원하는 바를 묻지 않고 사용자가하는 말을합니다. 그들은 종종 확인을 요구하지 않고, 손 잡기 나 대화식 도움을 제공하지 않으며, 옵션이 짧고 간결하며 때로는 혼란스러운 텍스트 기반 문자열입니다. 그것들 일반적으로 매우 잘 문서화되어 있으므로 매뉴얼을 읽고 (거의 항상 man <command you are about to run>) 명령 행을 이해하는 데 시간이 걸립니다.

이 운영 모드는 강력 합니다. 즉, 숙련 된 CLI 사용자는 단일 명령으로 복잡한 작업을 수행하는 긴 명령 "파이프 라인"을 만들 수 있습니다. 작업이 "확실합니까?"라는 메시지를 표시하지 않기 때문입니다. 모든 단계에서, 그것이 말하는 것을 수행합니다. 그러나이 모드에 익숙하지 않고 온라인 도움말을 클릭 하는 GUI에 익숙한 사용자에게는 익숙하지 않고 무섭습니다.

그러나 실제로 컴퓨터를 손상시키는 명령이 있습니까?

CLI를 사용하여 컴퓨터를 "충돌"할 수 있습니까? 아마도. 파괴적인 명령을 잘못 사용하면 데이터가 손실 될 수 있습니다. EG 여기에 많은 대답이 언급되어 있는데 rm, 파일을 삭제하는 명령입니다. 분명히, 당신은 그 명령으로 데이터 손실을 일으킬 수 있습니다, 그것은 명령이 의도 한 것입니다.

다른 답변에서 지적했듯이 명령 줄을 사용하면 일정 기간 동안 컴퓨터를 거의 사용할 수 없게 만들 수 있습니다. 확인하지 않고 종료하고 프로세스가 확인없이 사용 가능한 리소스를 100 % 사용하도록 설정하고 모든 프로그램을 종료합니다 또는 파일 시스템을 파괴하십시오. 정말로 원한다면 CLI를 사용하여 커널 확장을 만들면 커널이 패닉 상태에 빠질 수 있습니다.

터미널을 통해 액세스되는 명령 줄은 강력한 도구입니다. 종종 GUI보다 터미널을 사용하여 문제를 해결하는 것이 더 빠릅니다. 일부 솔루션은 터미널 명령을 통해서만 사용할 수 있습니다. 그러나 CLI의 핵심은 이해하는 것 입니다. 온라인에서 보는 임의의 명령을 실행하지 마십시오. 매뉴얼 페이지를 읽고 명령이 수행하는 작업을 이해하십시오. 확실하지 않은 경우 명령을 실행하기 전에 다른 사람에게 요청하거나 명령에 대해 자세히 알아보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.