여러 프로세스가 나타나고 kill 명령에 입력하려는 pgid 줄을 인쇄할 수 있습니다.
이것이 내가 가진 것입니다:
sudo ps o pgid,args | grep mininet: | sudo awk '{print -$0}'
다음과 같은 것을 반환합니다
-3834
-3841
-3844
-3846
-3848
-3853
-3856
-3859
-3862
나는 해당 부분의 출력을 무효화 {print -$0}
하여 하위 프로세스도 종료했습니다.
grep 명령은 bash 명령에서 상위 프로그램을 나타내는 매개변수를 검색합니다.
이제 전화하고 싶은데 sudo kill -SIGSTOP
여기 보이네http://www.chemie.fu-berlin.de/chemnet/use/info/gawk/gawk_9.html조건문, 인쇄 등 이외의 명령은 awk에서 사용할 수 없습니다. 제가 실수를 하고 있는 건가요? 아니면 프로세스를 중지하기 위해 입력을 kill 명령으로 리디렉션하는 방법이 있나요?
컨텍스트: mininet 네트워크 시뮬레이터를 일시중지하는 중입니다. 라인으로 하면 멋있을 것 같아서 하고 싶었어요. 우선순위를 부여하는 방법 |
과 한 명령을 다른 명령에 적용하는 방법에 대해 약간 혼란스럽습니다 .
Unix 철학에 따라 코딩하면 병목 현상에 대해 걱정할 필요가 없지만 이것이 나쁜 접근 방식이라고 생각하는 사람이 있다면 정보를 주시면 감사하겠습니다.
감사합니다~
편집하다:
이 명령은 프로세스를 중지합니다.
sudo ps o pgid,args | grep mininet: | sudo awk '{system("sudo kill --signal SIGSTOP -"$1)}' -
당신 은 awk
사용할 수 있습니다system("program ")
다음과 같은 효과적인 조언을 따르십시오.
sudo pgrep -f mininet: | sudo awk '{system("sudo kill --signal SIGCONT -"$1)}' -
답변1
이 명령은 프로세스를 중지합니다.
sudo ps o pgid,args | grep mininet: | sudo awk '{system("sudo kill --signal SIGSTOP -"$1)}' -
당신 은 awk
사용할 수 있습니다system("program ")
pgrep 사용에 대한 조언을 따르면 다음과 같이 작동합니다.
sudo pgrep -f mininet: | sudo awk '{system("sudo kill --signal SIGCONT -"$1)}' -