2012-10-12 1 views
1

두 개의 프로그램 (cxLog 및 cx)을 시작하는 스크립트 (runcx)가 있습니다. 나는 모든 혼란을 죽일 수있을하고자하는, 그래서 스크립트 작성 :왜 스크립트에서 killall 작업을하지 않습니까?

50:/root # cat stop 
killall runcx 
killall cx 
killall cxLog 

을하지만이 작동하지 않습니다

50:/root # ./stop 
: no process killed 
: no process killed 
: no process killed 

반면 개별 명령이 수행

50:/root # killall runcx 
50:/root # killall cx 
killall: Could not kill pid '256': No such process 
50:/root # 

(cx 스레드를 사용하고 pid '256'부모 프로세스가 죽었을 때 분명히 사라졌다)

여기에? 타이핑없이 모든 프로그램을 죽게하려면 어떻게해야합니까? 환경은 Linux kernel 2.4.26이며 상당히 오래된 버전의 busybox입니다.

답변

1

위의 내용을 모두 입력했지만 게시 버튼을 누르기 전에 이것을 알아 냈습니다. vim을 사용하여 PC에서 스크립트 "stop"을 만들었으며 기본 파일 형식은 dos입니다. 따라서 killall은 "runcx^M", "cx^M"및 "cxLog^M"이라는 프로그램을 죽이려고했습니다.^Ms를 제거하고 스크립트가 훨씬 잘 작동했습니다!

+0

유닉스 명령'dos2unix'와'unix2dos'는 ASCII 파일을 유닉스와 윈도우 형식으로 변환하여 수동으로 처리하는 번거 로움을 덜어줍니다. – Gareth

+0

간단히 ": fileformat = unix"를 vim으로 설정합니다. – rich