개발/리눅스
nohup, &, 표준입출력 리다이렉션
jenkins 빌드 시 종료가 되지 않고 계속 돌아가는 현상이 발생해서 확인한 내용을 정리해본다. jenkins 프로젝트 설정에는 아래와 같이 Post build task(빌드 후 실행)에 jenkins 빌드가 성공하였을 경우(BUILD SUCCESS 문자열이 생김) 특정 shell 파일을 실행하게 설정해두었다. shell 파일에서는 nohup으로 jar 파일을 백그라운드로 실행하고 있었다. nohup java -jar /home/test/testApi.jar & jenkins 빌드가 종료 되지 않는 이유는 SSH를 통해 스크립트를 수행시, 표준출력이 닫히거나 timeout이 발생할때까지 스크립트가 계속 열려있다고 한다. 그래서 script로 백그라운드 작업을 실행할 경우 모든 출력을 리다이렉트 해줘야 ..
sh bash 차이점
bash와 sh은 Unix 운영 체제의 shell 명령줄 인터프리터 shell은 사용자와 운영체제간의 인터페이스로 사용자가 장치와 상호 작용할수 있도록 도와줌 bash가 sh보다 더 많은 기능을 제공하고 사용하기가 더 쉬움 bash sh #!/bin/bash #!/bin/sh 더 많은 기능을 제공함 기능이 적음 작업 제어를 지원함 작업 제어를 지원하지 않음 유효한 POSIX 쉘이 아님 유효한 POSIX 쉘임 사용하기 쉬움 bash보다 사용하기 어려움 sh보다 휴대성이 떨어짐 bash보다 휴대하기 쉬움 확장된 언어 오리지날 언어 bash 전용 스크립팅 모든 쉘에서 스크립팅 명령 기록을 지원 명령 기록을 지원하지 않음 참고자료 https://www.geeksforgeeks.org/difference-betw..
shell script - if문
jenkins로 라즈베리파이 서버에 서버사이드 api 프로젝트를 배포할때 기존에 실행되고 있는 jar process가 존재한다면 kill하고 새로 배포한 jar를 실행하는 shell script를 만들어서 jenkins에서 빌드가 성공적으로 되었다면 shell script를 실행하도록 하였다. 실행되고 있는 jar process가 존재하는지 체크하기 위해서 shell script에서 if문을 사용하였는데 if문을 정리 해보았다. 1. if문 if [ 조건절 ] then 실행절 fi 주의 해야하는 점은 if와 괄호( [,] )와 조건절 사이의 공백을 만들어야 정상적으로 실행된다. 예시 value=0 if [ $value -eq 0 ] then echo "0입니다" fi 아래와 같이 if와 then을 같은 ..