반응형
1. Shell Script 작성 (.sh)
- vim / vi / nano 등 본인이 편한 명령어를 통해 파일 생성 후 작성(수정)
vim test.sh
- shell script 작성 / 저장
#!/bin/bash ############################# # testForCrontab.sh # author : ojava ############################# #현재시각을 담아둘 변수 nowdate=$(date +"%Y-%m-%d %H:%M:%S") # 텍스트와 crontab이 수행될 시각을 같이 표현해서 check_test라는 파일에 작성한다. echo "It is ${nowdate}, crontab test success." >> check_test # 실행할 application python3 /home/ubuntu/test.py
- #!/bin/bash
shell을 실행시 기본 shell 설정 (안쓰면 기본 shell로 실행되는것으로 알고 있다.)
bash dash(sh) 등등 실행할 shell을 설정해준다.
이 shell 설정에 대한 이슈가 있을 수 있으니 아래 잡다한 에러를 참고하거나 검색해볼 것 - # 주석
- 변수 선언이 가능하다.
- 실행할 명령어를 적어주면 실행한다. 여러줄이여도 상관 없다.
- 스크립트 작성시 안되는 경우
- #! 이 안먹어서 안되는 경우
직접 shell 경로를 찾아서 적어준다.
https://24hours-beginner.tistory.com/184(잡다한 에러) - 실행하고자 하는 파일에서 다른 파일을 참조하고 있는데 참조 못 하는 경우
cd로 실행하고자 하는 파일의 경로로 가는 명령어를 추가 한다.- 다른 파일을 참조하고 있는 python code
import configparser parser = configparser.ConfigParser() parser.read('config.ini','UTF-8') AWS_DEFAULT_REGION = parser['DEFAULT']['AWS_DEFAULT_REGION']
- error
Traceback (most recent call last): File "./weatherCrawlerApp.py", line 1, in <module> import math, requests, database, time File "/home/ubuntu/database.py", line 5, in <module> from configSetting import dbconfig File "/home/ubuntu/configSetting.py", line 8, in <module> AWS_DEFAULT_REGION = parser['DEFAULT']['AWS_DEFAULT_REGION'] File "/usr/lib/python3.6/configparser.py", line 1233, in __getitem__ raise KeyError(key) KeyError: 'AWS_DEFAULT_REGION'
- 해결방법
# 원 script python3 /home/ubuntu/test.py # 수정 script cd /home/ubuntu/ python3 test.py
- 다른 파일을 참조하고 있는 python code
- #! 이 안먹어서 안되는 경우
- #!/bin/bash
- script 실행 권한 설정 (안해주면 안될때 많음)
chmod +x filename
2. crontab 작성
- crontab -e 로 들어가서 crontab 문법에 맞추어 작성
crontab 자세한 문법 설명은 다른곳에도 많기 때문에 skip
crontab -e 수정/작성
crontab -l 현재 로그인한 user의 cron 목록 조회
crontab -r crontab 내용 삭제
crontab -l > /home/bak/crontab_bak.txt 크론탭 내용 백업 - 기본 문법
* * * * * /home/test.sh > /home/test.sh.log
분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7) 실행 스크립트 설명 * * * * * /home/test.sh 매분마다 실행 0 * * * * /home/test.sh 매 시간 0분 정각에 실행 0,30 * * * * /home/test.sh 매 0분,30분 정각에 실행 0-30 * * * * /home/test.sh 매 0분부터 30분까지 매분 실행 */10 * * * * /home/test.sh 매 10분마다 실행 0 0 13 * 5 /home/test.sh 13일 금요일 0시 0분에 실행 */20 0,12 12-14 * * /home/test.sh 12일부터 14일까지 0시와 12시 매 20분마다 실행 - Sample
# crontab backup
50 23 * * * crontab -l > /home/bak/crontab_bak.txt
4. 설명
- * (asterisk) : 모든 값
ex. 30 5 * * * 이라고 할 때, 해당 cron은 매일 5시 30분에 수행된다. - , (comma) : 특정값 여러 개 지정
ex. 0 7,9,12 * * *, 매일 7시 9시 12시 0분에 수행된다. - / (slash) : 값을 특정 주기로 나눌 때 사용
ex. */5 * * * *, 5분마다 수행해야 하는 경우 - - (dash) : 숫자 구간
ex. 0 3 1-3 * *, 매달 1일부터 3일 사이의 3시 0분에 수행된다.
3. crontab 실행/재실행
- 작성 후 실행 및 재실행 주어야 한다.
-
ubuntu linux 실행 service cron start service crond start 재실행 service cron restart service crond restart 중단 service cron stop service crond stop - error
나오면 sudo 붙이고 하자ubuntu:~$ service cron restart ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === Authentication is required to restart 'cron.service'. Authenticating as: Ubuntu (ubuntu)
4. log 보기
vim /var/log/syslog
5. 로그 경로 변경
5-1. /etc/rsyslog.d/50-default.conf 파일 변경
5-2. sudo service rsyslog restart
# /etc/rsyslog.d/50-default.conf
# Default rules for rsyslog.
#
# For more information see rsyslog.conf(5) and /etc/rsyslog.conf
#
# First some standard log files. Log by facility.
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
cron.* /var/log/cron.log # 주석처리 제거 후 수정
#daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
#lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
#user.* -/var/log/user.log
#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
#mail.info -/var/log/mail.info
#mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
#
# Some "catch-all" log files.
#
#*.=debug;\
# auth,authpriv.none;\
# news.none;mail.none -/var/log/debug
#*.=info;*.=notice;*.=warn;\
# auth,authpriv.none;\
# cron,daemon.none;\
# mail,news.none -/var/log/messages
#
# Emergencies are sent to everybody logged in.
#
*.emerg :omusrmsg:*
#
# I like to have messages displayed on the console, but only on a virtual
# console I usually leave idle.
#
#daemon,mail.*;\
# news.=crit;news.=err;news.=notice;\
# *.=debug;*.=info;\
# *.=notice;*.=warn /dev/tty8
~
~
https://24hours-beginner.tistory.com/184
https://twpower.github.io/131-simple-shell-script-syntax
https://windfree.tistory.com/40
반응형
'프로젝트 설정 > 기타' 카테고리의 다른 글
[Ubuntu] 방화벽(firewall) (Ubuntu 18.04.5 LTS)(nginx) (0) | 2021.08.25 |
---|---|
[Token] (0) | 2021.07.19 |
[Linux] 예약/반복 작업 (crontab/script) + mysqldump (0) | 2021.06.10 |
[supervisor ] 10분만에 익히는 supervisor 설치와 사용법 (0) | 2021.06.08 |
[암호화] bcrypt로 암호화 시작하기 (python) (0) | 2021.04.14 |