프로세스를 죽이는 쉘 스크립트를 구현해야합니다. 문제는 프로세스가 실행 중인지 확인할 수있는 조건부를 수행해야한다는 것입니다. 프로세스를 죽이는 쉘 스크립트
이
내 코드이지만, 그것은 작동하지 않습니다 : 당신이 사용할 수있는 프로세스가 맥 OS X에서 실행중인 경우line 3: [: missing `]'
프로세스를 죽이는 쉘 스크립트를 구현해야합니다. 문제는 프로세스가 실행 중인지 확인할 수있는 조건부를 수행해야한다는 것입니다. 프로세스를 죽이는 쉘 스크립트
이
내 코드이지만, 그것은 작동하지 않습니다 : 당신이 사용할 수있는 프로세스가 맥 OS X에서 실행중인 경우line 3: [: missing `]'
확인하기 :
#!/bin/sh
if [ -x "MY_PROCCESS_NAME"]; then
killall MY_PROCCESS_NAME
else
echo "Doesn't exist"
fi
이
오류입니다 을pid=$(ps -fe | grep 'process name' | grep -v grep | awk '{print $2}')
쉘 스크립트의 수를 줄이려면 프로세스 이름의 문자 중 하나를 묶을 수 있습니다 대괄호 :
pid=$(ps -fe | grep '[p]rocess name' | awk '{print $2}')
이의 모습 테스트 결합 :
pid=$(ps -fe | grep '[p]rocess name' | awk '{print $2}')
if [[ -n $pid ]]; then
kill $pid
else
echo "Does not exist"
fi
그것은 당신이 일반적으로 'pgrep을'명령을 가지고 리눅스에서해야 할 것보다 조금 더 복잡, 그것은 'ps -fe | grep ... | grep -v grep '
OSX에서 작동하는지 확실하지 않으면 우분투에서 작동합니다.
이ps aux | awk '$11~/vim/ {PID = $2} END {if (PID) print "kill -9 "PID; else print "echo no process"}' | bash
무슨 문자열이 발견되지 않는 경우가이 경우, 정력에, 프로세스를 발견하고 kill -9 pid
를 반환하는 일은이 echo no process
그 다음 파이프 출력을 반환
하지만 하나 라이너로
배쉬로.
오류는'''앞에 공백이 필요하다는 것을 알려주고 있습니다. (하지만'-x'는 프로세스가 실행 중인지 여부를 알려주지 않으므로 여전히 문제를 해결하지 못합니다). –