23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
터미널의 시작은 shell 이라 이에대한 간단한(?) 설명을 첨부한다.
개발자나 엔지니어로 처음 회사에 들어와 일을 시작하게 되면 제일 당황스러운 부분 중 하나가 Terminal 을 통해 infra 를 다루거나 server 관련 작업들이다.
서버 환경들이 Cloud 로 변경되고 PaaS 나 SaaS 들이 늘어나고 있어 이런 작업들이 줄어드는것 같았으나,
결국은 그런것도 CLI 를 통해 컨트롤 할 일이 많아지면서 Shell 과 터미널의 사용 빈도는 줄어들지 않고 있다.
< 흔히 사용되는 Cloud CLI 예제 들 >
# AWS Cli 예제
$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: ENTER
# az CLI 예제
$ az account set --subscription "my subscription name"
$ az role assignment create --assignee servicePrincipalName --role Reader --scope /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
$ az role assignment delete --assignee userSign-inName --role Contributor요즘은 실제 업무도메인 들에 대해 여러 정보들이 알려졌지만,
유독 Linux ( Unix ) 시스템을 다루는 도구적 기술들에 대한 교육이나 자료는 인터넷 여기저기 나뉘어 있어 이를 조금 정리 해 보고자 한다.
두괄식으로 선택지가 있다면 요즘은 zsh 를 많이 사용한다. 범용성은 Bash 가 더 높으나 하위 호환 가능하고 여러가지 plugin 들로 사용 편리성이 높아졌다.
< 엔틱을 넘어 시조새 같은 구성의 웹 페이지 >
Shell 을 선택할때는 몇가지 고려 사항들이 있으나, 현재는 대부분 bash 와 zsh 위주의 사용성이 높은 편이다.
서버들은 대부분 기본 shell 이 Bash 로 되어있으며, Mac 과 개인들의 PC 에서는 zsh 가 대세이다.
기존 작성 Shell Script 들과의 호환.
Shell 은 쉽게 말해서 터미널 프롬프트를 달리 부르는 이름이다.
내가 입력하거나 미리 입력한 명령어들을 그 규칙에 맞게 해석해서 동작 시키기 때문에 Shell 의 종류마다 약간 도는 좀 많이 다른 형태로 작성된다.
일반적으로 이전 리눅스들의 표준 shell 들을 따라가는 구도여서 대부분 sh ( Bourne Shell ), bash ( Bourne Again Shell ) 의 호환성을 가지는 형태로 작성된다.
표준화
현재 개발자들이 많이 사용하고 있는 Mac OS Catalina 부터 기본 쉘이 zsh 로 바뀌었다.
현재 서버들로 많이 사용되는 Linux OS 들의 기본 shell 은 대부분 bash 이다
혹시 사용하고 있는 Shell 종류를 확인하고 싶으면 아래와 같이 확인/변경 한다.
# SHELL 확인
$ echo $SHELL
/bin/bash
/bin/sh # This is the Bourne shell.
/bin/ksh93 # This is the Korn shell.
/bin/bash # This is the Bash shell.
/bin/zsh # This is the Z shell.
/bin/csh # This is the C Shell.
/bin/tcsh # This is the TC Shell.
# 단순히 위 shell 을 실행 해 주는것 만으로도 사용 가능 ( /bin 이 $PATH 에 등록되어 있을때 )
$ bash
$ zsh
# 기본 Shell 을 변경 하고 싶을 때
# INTERACTIVE METHOD
$ chsh
# NON-INTERACTIVE METHOD
$ chsh -s /bin/csh그럼 Shell 을 통해 많이 하는 작업들을 열거 해 보자
Local 에서 터미널을 통해 작업하거나, 개인서버, 상용서버들을 다루다보면 시간이나 주기 별로 자동으로 동작 해야 할 일들이 자주 있다. ( 거의 다 그런 일이다.)
주기적으로 파일을 보내거나,
주기적으로 프로세스의 상태를 검사하거나
주기적으로 메일로 알림을 보내거나
주기적으로 끄고 켜거나
여튼 주기적으로 뭔가 해야 할때 한다.
# 아래 명령을 통해 에디터 모드로 접근 해서 crontab 내용을 입력합니다.
$ crontab -e
# * * * * * echo "HELL OH! World!" 를 입력해보자 ( 오타아님 )
# 아래 명령을 통해 현재 등록된
$ crontab -l
* * * * * echo "HELL OH! World!"
#아래 명령으로 crontab 을 삭제한다 ( 잘 안쓴다. 안내없이 지우니 실행 안하는게 ... )
$ crontab -rcrontab 문법 관련 안내는 여기저기 많으니까 간추리면
* * * * *
분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
0 */1 * * * 매일 1시간 간격으로 실행
0 */12 * * * 매일 12시간마다 실행
0 6,12 * * * 매일 06시, 12시에 실행
5 3-5 * * * 매일 03시 ~ 05시 사이 매시간 10분에 실행 (03시 05분, 04시 05분, 05시 05분)이런 식이고, 간혹 약간 시간 강박이 있어서 초단위까지 맞춰야 하면 아래와 같은 방법도 있다.
( 실험 해 봤으나 정확하지는 않고, sleep 의 구조 특성상 해당 작업이 많이 등록되면 성능상 이슈가 생길 수 있다. - 결국 이것도 쓰지 말자 - )
$ crontab -e
* * * * * sleep 10; /run.sh
# 간단히 해당 시간에 10초 기다렸다 실행하라는 의미사실 요즘 대부분의 Web Server 나 Web Framework 들은 자체적으로도 logroatate 기능을 가지고 있어서 파일들을 나누거나 용량관리를 해 주기때문에 필요 없을수도 있으나,
자체적으로 log 관리를 하거나 할때는 분명 log 파일은 신경 써 줘야 하는 파일이다.
경험상 서버 관리할때 서버쪽 문제의 3할 이상은 디스크 부족으로 생겼던 경험들이 있다. ( 개인적 경험 )
그래서 잘 모를때는 서버 접속할때는 알아서 df 나 du 명령어랑 친해져야 했다.
Logrotate를 구성하는 파일들은 아래와 같은 구조를 가진다.
/usr/sbin/logrotate : Logrotate 데몬 프로그램
/etc/logrotate.conf : Logrotate 데몬 설정 파일
/etc/logrotate.d/ : Logrotate 프로세스 설정 파일
/etc/cron.daily/logrotate : Logrotate 작업내역 로그
그냥 설정 파일인 /etc/logrotate.conf 를 보자
# rotate log files weekly
# log 회전 주기 yearly : 매년, monthly : 매월, weekly : 매주, daily : 매일
daily
# keep 4 weeks worth of backlogs
# log 파일 개수, 해당 개수가 넘어가면 logrotate의 주기에 따라 실행됨
rotate 7
# create new (empty) log files after rotating old ones
# 새로운 log 파일 생성 여부, create : log 파일 생성, empty : log 파일 생성 안함
create
# use date as a suffix of the rotated file
# 파일명 날짜 여부, logrotate 실행 후 log파일에 날짜를 부여
dateext
# uncomment this if you want your log files compressed
# log파일 압축 여부, 로그 파일 크기 조절 용도
# compress
# RPM packages drop log rotation information into this directory
# 개별 로그 process 설정 경로
include /etc/logrotate.d대략 위와 같은 설정으로 동작하는데, 프로세스를 여러개 만들어서 사용 가능하다. ( 로그파일이 여러개있으니... )
관심있는 분들은 좀 더 자세한 사용법을 찾아보시길
좀 더 자세히 나온 [ 찰떡개발자 코딩 님 블로그 ]
원치않게 길어져서 1부는 여기까지
원하는 부분이나 이걸 더 많이 써요 하는것들 댓으로 주시면 추가 하겠습니다!!!
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.