Bash Script

mimic1995·2023년 10월 30일
0
post-thumbnail

날짜 로깅 및 형식 지정

logdate=$(date +%Y-%m-%d)
sysdate=`date +%y-%m-%d\ %H:%M:%S`
rmdtime=`date -d "3Days ago" +%Y-%m-%d`

삭제 구문

find $DIR/* -daystart -mtime +NUM -exec rm -rf {} \;
Date=$(date +%Y-%m-%d)
KEEP=3
OLDDATE=`date +%Y-%m-%d -d "${KEEP} day ago"`
rm -f 백업파일생성경로/${OLDDATE}*.tar.gz
del_log_days="14"
$log_dir="/절대경로"
find $log_dir \( -name "raid_check-*" -mtime +$del_log_days \) -exec rm -f {} \;

시스템 로그에 남기기

logger "남길 메시지"

delay 걸기

# 기본적으로 초 단위이므로 분=m, 시간=h을 붙여서 써야 함
sleep 1m

top 일정 부분만 체크

top -n 1 -b | head -n 숫자

패스워드 및 만료일 변경

# 만료일 초기화
/sbin/pam_tally2 --user root --reset
chage -M30 root
# 패스워드 초기화
echo '$username1:$password1' | chpasswd
chage -l $username1

메모리 초기화

# swap memory
swapoff -a && swapon -a
# cache memory
sync && echo 3 > /proc/sys/vm/drop_caches

echo 값으로 프로세스 성공여부 판단 함수

# 로깅
plog="/절대경로"
# 함수 정의
function PSCHK() {
    CHK=$1
    if [ $CHK -eq 0 ]; then
        echo "SUCCESS" >> $plog
    else
        echo "FAIL" >> $plog
    fi
}
# 실사용 시
CHK=`echo $?`
PSCHK $CHK

로깅 철저히 하려는 rsync (백업 용)

rsync -avzPprt --delete --log-file="$log" 123.456.789.1::BACKUP/* /$backupdir/

tar 압축파일

# 생성
tar -zcvf 생성할_파일.tar.gz 원본_파일_경로
# 해제
tar -zxvf 압축파일.tar.gz (-C 해제 경로 지정)

if문

if [ $1 조건 $2 ]; then
	실행 코드
fi

대표 표현

==같으면!=다르면!부정

값 비교 조건문

의미
-z ${A}${A} 문자열 길이가 0이면 TRUE
-n ${A}${A} 문자열 길이가 0이 아니면 TRUE
$1 -eq $2$1과 $2의 값이 같으면 TRUE
$1 -ne $2$1과 $2의 값이 다르면 TRUE
$1 -gt $2$1 > $2 TRUE
$1 -ge $2$1 >= $2 TRUE
$1 -lt $2$1 < $2 TRUE
$1 -le $2$1 <= $2 TRUE

파일 조건문

의미
-d ${dir}${dir}이라는 디렉토리가 존재하면 TRUE
-e ${file}${file}이라는 파일(모든 파일 유형 가능)이 존재하면 TRUE
-f ${file}${file}이라는 파일이 일반 파일이면 TRUE
-S ${socket_file}${socket_file}이라는 소켓 파일이 존재하면 TRUE
-L ${s_link}${s_link}라는 심볼릭 링크가 존재하면 TRUE
-r ${file}${file} 파일이 read 권한이 있으면 TRUE
-w ${file}${file} 파일이 write 권한이 있으면 TRUE
-x ${file}${file} 파일이 excute 권한이 있으면 TRUE
-s ${file}${file}이라는 파일 크기가 0보다 크면 TRUE
${f1} -nt ${f2}${f1}이 ${f2}보다 최신 파일이면 TRUE
${f1} -ot ${f2}${f1}이 ${f2}보다 오래된 파일이면 TRUE
${f1} -ef ${f2}${f1}과 ${f2}이 같은 파일이면 TRUE

다중조건 표현

# 1. if ~ else
if [ $1 -eq 0 ]; then
	echo "$1은 0입니다."
else echo "$1은 0이 아닙니다."
fi
# 2. if ~ elif 
if [ $1 -eq 0 ]; then
	echo "$1은 0입니다."
elif [ $1 -eq 1 ]; then
	echo "$1은 1입니다."
else "$1은 0도 1도 아닙니다."
fi
# 3. 다중 조건
if [[ $num1 -gt 100 && $num1 -lt 90 ]]; then
혹은
if [ $num1 -gt 100 ] && [ $num1 -lt 90 ]; then

다중조건문 시 표현
&&두 조건 모두 충족다르면!부정
profile
Raiju Hantu Goryo Obake

0개의 댓글