UNIX-Solaris를 처음 접해서 스크립트를 만들어야 하는데 필요한 값을 찾는데 어려움을 겪고 있습니다.
기본적으로 두 프로세스가 실행 중인지 감지해야 합니다. 다음 명령을 사용하여 해당 정보를 얻을 수 있음을 발견했습니다.
ps -fu "user" | grep -i "name_oftheprocess/file"
실행하면 이런 메시지가 뜹니다.
user 16544 16530 0 08:00:00 ? 0:08 /bin/bash /path/file
user 19098 16544 0 15:44:38 ? 0:00 /bin/bash /path/file
그래서 여기에서는 모든 것이 괜찮습니다. 문제는 행 1의 두 번째 값(16544)과 행 2의 세 번째 값(16544)을 비교해야 한다는 것입니다. 일치하면 모든 것이 정상이라는 메시지가 전송되어야 합니다. 그렇지 않으면 뭔가 잘못되었습니다.
awk를 사용하여 이 두 값을 분리하는 방법을 찾으려고 합니다. 내가 사용한다면
ps -fu "user" | grep -i "name_oftheprocess/file" | awk '{print $2}'
그것은 나에게 결과를 준다
16544 19098
(마지막 것은 필요하지 않습니다)
ps -fu "user" | grep -i "name_oftheprocess/file" | awk '{print $2}'
그것은 나에게 결과를 준다
16530 16544 (this fist one I don't need it)
그래서 두 값을 별도의 변수에 저장한 후 if 문과 비교하고 싶습니다.
답변1
이 AWK에 얻은 정보를 파이프하십시오.
awk 'NR==1{a=$2}NR==3{print a==$3?"everything is ok":"something is wrong"}'
귀하의 경우 전체 명령은 다음과 같습니다.
ps -fu "user" | grep -i "name_oftheprocess/file" | awk 'NR==1{a=$2}NR==3{print a==$3?"everything is ok":"something is wrong"}'
노트:
이것은 매우 강력하지 않을 수 있습니다! 이 답변은 귀하가 게시한 텍스트를 입력으로 사용합니다. 수행하려는 작업에 대한 자세한 내용을 제공하고 첫 번째 명령의 출력을 포함하면 추가 고려가 이루어지고 더 적합한 솔루션을 찾을 수 있습니다.