TIL - 0511
리눅스와 친해지기
명령어
pipe
- 두개의 프로그램을 연결해주는 명령어, 앞의 프로그램 결과를 뒤의 프로그램에 전달해줌
redirection
- 입출력을 변경해주는 명령어
- 표준 입력 : 키보드 / 표준 출력 : 화면(모니터)
- ’>’ : 출력을 변경함
$ ls -al > list.txt
- ’<’, ‘«’ : 입력을 변경함, ‘<’ 와 ‘«’ 의 차이는 덮어쓰기냐 덮어쓰지않느냐임
$ head < list.txt
filter
- 결과를 필터링할 때 쓰는 명령어들
- grep, head, tail, awk(패턴 매칭) 등이 있음
pgrep
- 프로세스의 ID나 속성값을 기반으로 특정 프로세스를 찾거나 특정 프로세스에 signal을 보내는 명령어
- java-qna 이름을 기반으로 찾음
$ pgrep -f java-qna
개념, 써보기
서비스와 소켓
- 서비스 : 메모리에 상주해있으면서(프로세스) 별도로 무언가를 제공하는 프로그램, 속도는 빠르지만 메모리에 상주하고 있음
- 소켓 : 요청을 받았을 때 메모리에 로드되어 무언가를 제공하는 프로그램, 서비스와 비교했을 때 속도는 느리지만 메모리로 따졌을 때 효율적임
- /etc/systemd/system에 위치함
- systemctl start/stop/restart $이름 으로 관리함
쉘스크립트 작성하기
- 명령어 실행 결과를 변수에 할당하기, 변수 사용하기
target_pid=`pgrep -f java-qna`
echo $target_pid
- 명령 실행 결과를 할당할 때는 ‘₩’ 로 명령을 감싸야함
- 사용할 땐 ‘$’ 표시를 변수명 앞에 항상 붙여야함
스프링부트로 웹어플리케이션 만들기
배포 자동화 - crontab 사용
자동 빌드 - 배포 쉘스크립트 작성
- 디렉토리변경으로 상대경로 쓸 수있도록 함
- pgrep 사용
/* auto.sh */
#!/bin/zsh
cd /home/ubuntu/java-qna
git fetch
local=`git rev-parse imjinbro`
remote=`git rev-parse origin/imjinbro`
if [ ! $local = $remote ]; then
rm -rf ./build
git merge origin/imjinbro
./gradlew build
target_pid=`pgrep -f java-qna`
kill -9 $ target_pid
java -jar ./build/libs/java-qna-1.0.0.jar &
fi
crontab 스크립트 작성
- java 실행 경로 설정
- 표준 출력 /dev/null 변경
- 에러 출력 또한 /dev/null로
/* /etc/crontab */
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/jvm/jdk1.8.0_172/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*/5 * * * * ubuntu /home/ubuntu/java-qna/auto.sh > /dev/null 2>&1
풀자, 알고리즘
문제를 풀면서…
- 반복 조건부터 생각하지않고, 분기 조건(여러 상황 - 조건에 대한 처리)부터 생각하기 : if문 관련 처리 문제에 약한게 느껴짐
- 테스트 케이스 성공 / 실패 각각 3개 이상은 생각해야 : 경계값은 무조건 포함시켜야함
참고자료
- 코드스쿼드 자바 백엔드 레벨3 과정
- youtube - 이것이 우분투다