저번시간에 했던 IFS와 awk를 응용
`ls -al(ll)`의 결과를 loop로 출력하는데, 각 파일의 크기의 총합을 계산하고, 새로운 파일을 만들어서 내용을 저장한다.
#!/bin/bash
PRE_IFS=$IFS
TOT=0
IFS="
"
user=`whoami`
FileName="bin_files.txt"
cd /home/${user}
touch $FileName
for i in `ls -al`; do
S=`echo $i | awk '{print $5}'`
F=`echo $i | awk '{print $9}'`
if [ "$F" == "." ] || [ "$F" == ".." ] || [ "$F" == "" ]; then
continue
fi
TOT=`expr $TOT + $S`
echo "$S $F" >> $FileName
done
echo "Total size is $TOT"
IFS=$PRE_IFS
touch 는 새로운 파일을 만드는명렁어
파일을 만들기전에 cd를 사용하는 이유는???
현재의 폴더에 파일을 만들고 싶은데, 위의 파일의 실행은 다른 곳에서도 실행이 가능하니까 cd를 설정하지 않으면 실행한 곳에서 파일이 생겨버리기 때문이다. ( home디렉토리 밖에서 실행하면 root가 아니면 권한이 없기 때문에 파일 생성이 불가능 permission 에러 )
user=`whoami`
cd /home/${user}
그래서 cd 를 지정해줌으로써
현재 로그인된 계정의 디렉토리를 지정해준 것이다.
Cron 이란??
Linux에서 사용하는 스케줄러다.
스케줄러란??
정해진 시간마다 실행하도록 도와주는 것
예를 들어서, 매월 정해진 시간마다 파일을 백업하라는 명령을 실행시키고 싶을 경우 스케줄러를 이용한다.
설치
# apt-get install cron
데몬실행
# service cron restart
cron start 확인
# crontab -l
아직 cron을 설정하지 않았기 때문에, 아무것도 나오지 않는다.
스케줄로 실행할 파일 만들기
/test.sh
#!/bin/bash
DATE=`date +%H:%M:%S`
echo "$DATE aaaaaaaaaaaaaaaaa"
실행되는 시간과 내용을 출력하도록
crontab 설정
# crontab -e
위의 명령어를 입력하면 이러한 주석과 함께 아래에 스케줄을 입력할 수 있게 된다.
* * * * * # 분 시 일 월 주
start시키고 싶은 일정을 설정할 수 가 있는데,
예를 들어서, 매일매일 오후 3시 30분에 실행시키고 싶다.
30 15 * * * #매일매일 오후 3시 30분에 실행
매년 12월 5일에 실행시켜라
* * 5 12 * #매년 12월 5일에 실행
1주를 간격으로 오전 3시에 실행시켜라
* 4 * * 1 # 1주를 간격으로 오전 3시에 실행
위와 같이 설정을 할 수 가 있다.
주기 설정다음에는 어떤 파일을 실행시킬지 무슨작업을 할지를 설정한다
* * * * * /test.sh >> /temp.log 2>&1
/ 위치의 test.sh 파일을 실행해서
/ 위치에 temp.log 파일을 생성해서 실행결과를 저장한다.
2>&1가 의미하는 것
2는 Standard Error
1은 Standard Out
test.sh의 정상적인 출력 결과가 standard out이고 에러가 발생했을 때에는 standard error로 출력이 된다.
하지만 아무런 설정을 하지 않으면 error의 내용을 볼 수 없기 때문에, 2>&1로 standard error의 내용을 standard out에 포함시켜서 로그파일에 저장시키라는 의미다.
이렇게 저장을 하고
# crontab -l
실행중인 crontab을 확인해보면
방금 설정한 내용이 정상적으로 출력되는 것을 확인할 수 있다.
그러면 이제 매 분마다 temp.log파일에 test.sh의 실행결과가 저장이 되는 것을 확인 가능
매분마다 실행되도록 설정해 놨기 때문에 매분 1초에 실행결과를 저장하는 것을 확인할 수 있다.
참고문헌
'IT 공부 > Linux' 카테고리의 다른 글
[ Linux ] linux환경에서 selenium 사용하기 (ubuntu/centos) (0) | 2022.01.26 |
---|---|
Centos 환경에서 Nginx 서버 구동하기 (0) | 2021.10.05 |
[ Linux ] Shell script (3) (0) | 2021.06.03 |
[ Linux ] shell script (2) (0) | 2021.06.02 |
[ Linux ] shell script기초(1) (0) | 2021.06.01 |