IT/리눅스

쉘 스크립트

psluckyguy 2022. 3. 25. 23:41
반응형


//!-- 쉘 확인
[root@j ~]# echo $SHELL

/bin/bash


//!-- 특정 디렉터리 n일 전부터 m일 전까지 변경 파일 목록
vi find-mtime.sh
#!/bin/sh
logdir="/var/log"

# 2일~7일 사이 변경 로그 목록
find $logdir -name "*.log*" -mtime -7 -mtime +2 -print


#오래된 로그파일 삭제
find $logdir -name "*.log*" -mtime +365 -print | xargs rm -fv



무한 반복 스크립트

시간
while true; do date; sleep 1 ; clear ; done


증가
#!/bin/sh
i=0
while [ $i -le 2]
do
echo Number: $1
((i++))
done


####if 조건문 옵션#####

[ -z ] : 문자열의 길이가 0이면 참
[ -n ] : 문자열의 길이가 0이 아니면 참
[ -eq ] : 값이 같으면 참
[ -ne ] : 값이 다르면 참
[ -gt ] : 1 > 2
[ -ge ] : 1 >= 2
[ -lt ] : 1 < 2
[ -le ] : 1 <= 2
[ -a ] : &&연산과 동일 and 연산
[ -o ] : ||연산과 동일 xor 연산
[ -d ] : 파일이 디렉토리면 참
[ -e ] : 파일이 있으면 참
[ -L ] : 파일이 심볼릭 링크면 참
[ -r ] : 파일이 읽기 가능하면 참
[ -s ] : 파일의 크기가 0 보다 크면 참
[ -w ] : 파일이 쓰기 가능하면 참
[ -x ] : 파일이 실행 가능하면 참
[ 파일1 -nt 파일2 ] : 파일1이 파일2보다 최신파일이면 참
[ 파일1 -ot 파일2 ] : 파일1이 파일2보다 이전파일이면 참
[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참

IF File 표현식
file1 -ef file2 //서로 동일한 inode 번호를 가진다.(하드링크 파일이면 참)
file1 -nt file2 //1이 2보다 최신일 때
file1 -ot file2 //1이 2보다 오래 일 때
-b file //파일이 블록 특수 파일 일 때
-c file //문자 특수 파일 일 때
-d file //디렉토리
-e file //파일 존재시
-f file //일반 파일
-g file //setgid가 설정
-G file //파일 그룹이 현재 사용자의 그룹과 같으면 참
-k file //sticky비트
-L file //파일이 심볼릭 링크파일
-O file //파일소유자가 현재 사용자면 참
-p file //파일이 네임드 파이프
-r file //파일이 읽기 전용
-s file //파일이 0보다 큰파일
-S file //파일이 네트워크 소켓
-t fd //fd가 열려진 터미널이면 참
-u file //파일이 setuid가 설정되어 있으면 참
-w file //파일이 쓰기 가능 하면 참
-x file //파일이 실행 가능하면 참



아파치 사용 갯수 초과시 자동 재시작

while
( true ) ; do
if [ "`pgrep -x httpd | wc -l`" -ge "500" ] ; then
/usr/local/apache/bin/apachectl restart
fi
sleep 1
done