bash에서 프로세스가 실행되는 것을 방지하는 방법


5

다음 명령이 입력되었습니다 :

sleep 12h; nuke-russia

데비안 중 하나에 입력되었습니다 tty. 나는 아무것도 핵무기없이 수면을 취소하고 싶습니다. 나는 nuke 명령이 한 순간이라도 실행되기를 원하지 않습니다. 다른 5 개의 터미널을 사용할 수 있습니다. 내가 무엇을 할 수 있을지?


3
궤도에서 핵무기-확실한 유일한 방법입니다
Linker3000

전원 차단 스위치를 치는 것이 옵션입니까?
Mokubai

@ Mokubai : 나는 그 옵션을 사소한 것으로 생략했다. 또한 2 개월의 가동 시간을 잃고 싶지도 않습니다.
Mark

암호 00000000을 가진 사람 이 이것을 잘라 붙여
넣지

답변:


0

앞으로는 Ctrl + C &&;
sleep X && echo bla누르지 말고 수면을 멈추고 반향을 울리지 않고 대신 사용해보십시오.

가능하다면 담당 바이너리 이름을 바꿀 수 있습니다. 그렇게하면 bash는 nuke-russia존재하지 않기 때문에 실행할 수 없습니다.

다른 해결책은 담당 쉘을 죽이는 것입니다.

편집 :
책임있는 쉘의 PID를 찾는 방법 (부모가 있어야 함)
pid of sleep 12h가 1234 인 경우
책임있는 쉘을 찾은 ps -o ppid= 1234
다음 kill -9로 종료하십시오.


운동의 요점은 수면 명령이 종료되면 핵 러시아가 실행되도록하기 위해 &&가 특별히 사용되지 않았다는 것입니다. 그렇지 않으면 훌륭한 제안 솔루션이 있습니다.
Matrix Mole

2
  1. 검색 nuke-russia
  2. 이름을 바꿉니다 old-nuke-russia
  3. 같은 디렉토리에 lsahem ...,이라는 링크를 작성하십시오 nuke-russia.

잠자기 명령을 원하는대로 실행하십시오. 당신은 12 시간 동안 명령을 수행 한 사람을 찾아서 세계 대전을 시작하려고했기 때문에 목을 졸랐습니다.


1
가장 쉬운 솔루션. 또는 잠시 chmod 000 파일을 잠시 동안 명령을 종료하십시오.
Sirex

1

분명히

kill -s SIGHUP [pid]

해당 터미널 세션을 완전히 종료하고 해당 세션을 효과적으로 끊어야합니다.

따라서 다른 답변과 마찬가지로 명령 ps -ef | grep sleep을 통해 pid신호를 보내야합니다.

-= 수정 =-

kill플래그는 -s내 경우 SIGHUP에서 사용하는 신호를 지정 걸려 명령을 알려줍니다.

내가 왜 kill -s SIGHUP [pid](또는 ppidpeth가 제안한) 사용을 제안하기로 선택한지 명확히하기 위해 Wikipedia 의 도움을 요청 합니다.

POSIX 호환 플랫폼에서 SIGHUP은 제어 터미널이 닫힐 때 프로세스로 전송되는 신호입니다. (이것은 원래 직렬 회선 삭제 프로세스에 알리기 위해 설계되었습니다). SIGHUP은 헤더 파일 signal.h에 정의 된 기호 상수입니다.

...

직렬 회선을 통한 액세스가 감소함에 따라 SIGHUP의 의미는 최신 시스템에서 다소 변경되었습니다. 이는 종종 제어 의사 또는 가상 터미널이 닫 혔음을 의미합니다.

터미널이 종료되면 완전히 종료되는 프로그램을 많이 발견 했으며이 경우 bash 쉘 (sleep 명령 실행)이 다르지 않을 것이라고 생각합니다.


슬립 명령의 PPID가 담당 tty의 PID가 아닙니까?
bbaja42

2
터미널에는 프로세스 ID 가 없습니다 bbaja42. peth쉘이 다음 명령 실행을 중지시키기 위해 쉘을 죽여야한다는 중요한 점을 지적하고 있습니다.
JdeBP

@JdeBP 정보 주셔서 감사합니다, 나는 몰랐다. 여전히 플래그를 이해하지 못합니까?
bbaja42

-1

Linker3000의 비슷한 답변-다른 터미널에서 루트로 로그인하고 tty 프로세스를 종료하십시오 (CentOS에서는 데비안에 대해 확실하지 않은 프로세스 이름이 login입니다).


아니요, 작동하지 않습니다. 으로 peth지적하고있다, 그것은 그렇지 않으면 간단하게 할 것입니다 그것의 다음 명령을 실행에서 쉘을 중지, 하나는 쉘, 죽일 필요가 없습니다 모든 로그인 프로세스를.
JdeBP

잘 작동합니다 (nuke-russia를 종료로 대체)
jrb

껍질을 깨뜨 리거나 부작용으로 껍질을 죽였습니다.
JdeBP

-3

다른 터미널에서 루트 사용자로 로그인하십시오.

nuke-russia 스크립트 (또는 명령)를 찾아 다른 이름으로 바꾼 다음 ...

[root@mysvr ~]# ps -ef | grep sleep
root      1362  1338  0 17:23 pts/0    00:00:00 sleep 12h
root      1393  1367  0 17:24 pts/1    00:00:00 grep sleep

목록에서 올바른 절전 명령을 선택하고 (둘 이상인 경우) PID 번호를 기록하십시오. 제 경우에는 1362입니다.

유형 명령 : kill -9 [PID]예 : kill -9 1362


그것을 시도, 그것은 여전히 nuke-russia잠을 죽인 후에 실행
bbaja42

흠, Fedora 컴퓨터에서 작성하기 전에 시험해 보았고 파일이나 명령을 찾을 수 없다는 오류와 함께 휴면 명령이 삭제되었습니다.
Linker3000

찾을 수없는 파일이나 명령은 "nuke-russia"입니다. 당신은 아마 핵무기 러시아 명령이 없기 때문에 예상됩니다. 대신 에코 "nuke-russia"로 시도하십시오.
bbaja42

감사합니다-그러나 요점은 오류 메시지가 표시되지만 nuke 명령 실행을 중지하는 것이 었습니다.
Linker3000

??? 당신은 오류 메시지가없는 수 있기 때문에 nuke-russia솔루션이 잘못,
bbaja42
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.