소개
이 프로젝트에서는 지정된 포트에서 프로그램이 실행 중인지 확인하고, 프로그램의 전체 경로를 출력하거나, 프로그램이 실행 중이지 않은 경우 "OK"를 출력하는 스크립트를 만드는 방법을 배우게 됩니다.
👀 미리보기
## 예시
$ cd /home/labex/project
$ sh get.sh 3000
/usr/lib/code-server/lib/node
$ sh get.sh 43000
OK
🎯 과제
이 프로젝트에서는 다음을 배우게 됩니다:
- Zsh 스크립트를 만드는 방법
lsof명령어를 사용하여 포트 사용 여부를 확인하는 방법ps명령어를 사용하여 실행 중인 프로그램의 전체 경로를 얻는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- 지정된 포트에서 실행 중인 프로그램을 식별하는 스크립트 작성
- 개발 환경에서 포트 충돌 관련 문제 해결
- 특정 포트에서 실행 중인 프로그램을 확인하는 프로세스 자동화
get.sh 스크립트 생성
이 단계에서는 지정된 포트에서 프로그램이 실행 중인지 확인하는 get.sh 스크립트를 생성합니다.
텍스트 편집기를 열고
/home/labex/project디렉토리에get.sh라는 새 파일을 생성합니다.다음 코드를 추가하여 포트 번호가 인수로 제공되었는지 확인합니다:
## Check if the port number is provided as an argument if [ -z "$1" ]; then echo "Please provide a port number." exit 1 fi이 코드는 스크립트가 포트 번호를 인수로 호출되었는지 확인합니다. 그렇지 않은 경우, 오류 메시지를 출력하고 스크립트를 종료합니다.
다음 코드를 추가하여 포트 번호를 가져옵니다:
## Get the port number port=$1이 코드는 제공된 포트 번호를
port변수에 저장합니다.get.sh파일을 저장합니다.
지정된 포트에서 프로그램 실행 여부 확인
이 단계에서는 지정된 포트에서 프로그램이 실행 중인지 확인하는 코드를 추가합니다.
get.sh스크립트에 다음 코드를 추가합니다:## Check if the port is in use process=$(lsof -i :$port -sTCP:LISTEN -Fp | sed 's/^p//')이 코드는
lsof명령어를 사용하여 지정된 포트에서 프로세스가 리스닝 (listening) 중인지 확인합니다. 출력은process변수에 저장됩니다.다음 코드를 추가하여 프로그램이 실행 중인지 확인합니다:
## Check if a program is running if [ -z "$process" ]; then echo "OK" else ## Get the full path of the program path=$(ps -p $process -o args=) echo "$path" | awk '{print $1}' fi이 코드는
process변수가 비어 있는지 (즉, 지정된 포트에서 실행 중인 프로그램이 없는지) 확인합니다. 비어 있으면 스크립트는 "OK"를 출력합니다. 프로그램이 실행 중인 경우, 스크립트는ps명령어를 사용하여 프로그램의 전체 경로를 가져와 출력합니다.get.sh파일을 저장합니다.
get.sh 스크립트 테스트
이 단계에서는 get.sh 스크립트가 예상대로 작동하는지 확인하기 위해 테스트합니다.
터미널을 열고
/home/labex/project디렉토리로 이동합니다.포트 번호를 인수로 사용하여
get.sh스크립트를 실행합니다:$ sh get.sh 3000 /usr/lib/code-server/lib/node이는 포트 3000 에서 실행 중인 프로그램의 전체 경로를 출력해야 합니다.
사용 중이지 않은 포트 번호로
get.sh스크립트를 실행합니다:$ sh get.sh 43000 OK포트 43000 에서 실행 중인 프로그램이 없으므로 "OK"를 출력해야 합니다.
스크립트가 예상대로 작동하면 프로젝트가 완료된 것입니다.
축하합니다! 지정된 포트에서 프로그램이 실행 중인지 확인하고, 프로그램의 전체 경로를 출력하거나, 실행 중인 프로그램이 없으면 "OK"를 출력하는 스크립트를 만들었습니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



