크롬 웹브라우저에서 SSL이 적용된 사이트에 접속하다보면, 프로토콜이 HTTP 에서 HTTPS 로 변경되어 접속하게 된다. 

즉, 크롬에서는 강제로 https 리다이렉트되는 기능때문에 한번 https로 접속한 사이트는 주소가 http로 변경되더라도 자동으로 https로 변경하여 접속하게 된다.

 

HTTPS가 아닌 HTTP로 접속을 원할 때, 아래와 같이 설정해주면 된다. 

 

- https -> https 강제전환 해제

크롬 주소창에 chrome://net-internals/#hsts 주소로 접속하여 크롬 설정 페이지로 들어간다.
왼쪽 사이드바에 [ Domain Security Policy ] 탭 클릭 후 하단에 [ Delete domain security policies ] 항목에서 해당 도메인을 넣고 [ Delete ] 버튼을 클릭한다.

 

 

아래와 같은 사항을 유의하자.

 
1. 프로토콜 제외
https://dev-record-levelup.tistory.com -> dev-record-levelup.tistiory.com
 
2. 포트 제외
https://dev-record-levelup.tistory.com:8080 -> dev-record-levelup.tistiory.com

 

3. 크롬 창을 닫고 설정 페이지만 열어둔 상태에서 도메인을 삭제해야 한다.

  • 리다이렉트 되는 도메인을 삭제 후 https로 다시 접속할 경우 자동 리다이렉트 되기에 위의 방법을 처음부터 다시 해야 한다.

 

 

 

 

 

 

 


Reference

https://ssd0908.tistory.com/58https://ansan-survivor.tistory.com/432

- 리눅스 프로세스 스케쥴링

  • 리눅스에서는 특정한 시간에 어떤 작업을 수행하기 위해 스케줄링이라는 기능을 사용한다.
  • 스케줄링에는 at 과 cron 두 가지가 있으며 모두 데몬이 실행중이어야 한다.
  • at 스케줄링은 주로 프로그램을 특정시간에 한 번만 사용하고 싶을 때 이용한다.
  • cron 스케줄링은 프로그램을 특정 날짜나 시간, 요일에 맞춰 주기적으로 사용하고 싶을 때 이용한다.

([Linux] at이란? https://dev-record-levelup.tistory.com/2)

 

- Cron이란?

  • 특정한 시간에 또는 특정 시간 마다 어떤 작업을 자동으로 수행하게 해주고 싶을 때 사용하는 명령어.
  • cron은 특정한 시간에 특정한 작업을 수행하게 해주는 스케줄링 역할을 한다.
  • cron이 언제 무엇을 하는지 특정 파일에 저장하는 것을 크론탭(Crontab)이라고 한다.

예를 들어, 새벽 4시에 데이타베이스 백업 받아 줘라든지, 아침 7시에 서버의 사용량을 리포트하도록 한다든지 등등 적절하게 사용하면 아주 편리하게 성과를 낼 수 있는 방법이다.

 

- Crontab은 언제 사용하는지?

  1. 특정 시간에 특정 작업을 해야 할 때
  2. 반복된 시간에 반복된 작업을 해야 할 때
  3. 예약 작업을 사용해야 할 때

 

- Crontab 설정

  • etc 하위에 위치한 crontab파일을 열어 crontab 설정 방법을 확인한다.

필드  설명 입력 가능 예시
m minute, 분 정보를 입력한다. 0~59 사이의 숫자
h hour, 몇시에 수행될지를 정하는 시 정보 0~23 사이의 숫자
dom day of month (= day), 일자 정보 1~31 (1~해당 월의 최대일자까지)
mom month, 월 정보 1~12
dow day of week, 요일정보 0~7 (0 일요일, 1 월요일, 2 화요일
순으로 증가. 7은 다시 일요일)
user user, 사용자 정보  
command command, 수행되어야 할 명령어  

 

- Crontab 명령어

일부러 잘못된 옵션을 주고 명렁어를 수행하면 아래와 같이 도움말을 볼 수 있다.

# 현재 크론탭에 설정되어 있는 내용 확인
crontab -l
# 크론탭 내용 입력/수정 (vi 에디터 활용, 설정 입력 후 :wq 로 저장)
crontab -e
# 현재 크론탭에 설정되어 있는 내용 삭제
crontab -r
# 특정 user의 crontab을 설정할 때 
# 다른 명령어를 쓸 때 같이 쓰면 특정 사용자의 crontab 조회 및 수정 가능
crontab -u
# crontab 내용 삭제 전 확인 문구 띄우기
# confirm창 같은 느낌으로, 삭제여부 재확인
crontab -i

  • 삭제 전 확인 문구 띄우기, crontab -i -r 또는 crontab -ir 모두 동일하게 동작함.

 

  • 아래 명령어를 통해 실행 중인 cron 프로세서를 확인할 수 있다.
ps -ef|grep crond

 

- 예제

  • crontab -e 명령어를 사용하면 vi 모드로 전환이 되면서 crontab을 등록할 수 있다.

 

매분 실행

# 매분 test.sh 실행
* * * * * /home/script/test.sh

* (asterisk) : 해당 기호가 입력되면 해당 필드의 모든 값에서 cron이 수행된다.

 

특정 시간 실행

# 매주 금요일 오전 5시 45분에 test.sh 를 실행
45 5 * * 5 /home/script/test.sh

 

반복 실행

# 매일 매시간 0분, 20분, 40분에 test.sh 를 실행
0,20,40 * * * * /home/script/test.sh

, (comma)  : 특정 값을 여러 개 지정할 수 있다. 구간이나 주기로 지정이 안되는 불특정한 값일 때 사용

 

범위 실행

# 매일 1시 0분부터 30분까지 매분 tesh.sh 를 실행
0-30 1 * * * /home/script/test.sh

- (dash)  : 숫자 구간을 지정할 수 있다.

 

간격 실행

# 매 10분마다 test.sh 를 실행
*/10 * * * * /home/script/test.sh

/ (slash)  : 값을 특정 주기로 나눌 때 사용

 

조금 복잡하게 실행

# 5일에서 6일까지 2시,3시,4시에 매 10분마다 test.sh 를 실행
*/10 2,3,4 5-6 * * /home/script/test.sh

→ crontab을 설정하고 wq로 저장한다.

 

- Crontab 설정 변경내용 적용

  • crontab -e로 새롭게 저장한 뒤에는 crontab 변경 내용에 대해서 명령어로 재시작 또는 시작해줘야 한다.
  • 시작, 재시작, 중단 명령어는 ubuntu와 linux가 다르다.
OS ubuntu linux
시작 service cron start service crond start
재시작 service cron restart service crond restart
중단 service cron stop service crond stop
상태 확인 service cron status service crond status

 

- Crontab 권한

- Crontab 권한 부여

cron.allow

  • cron 허용 계정목록
  • (기본값) 파일 없음 → 모두 허용
[root@zetawiki ~]# ll /etc/cron.allow
ls: cannot access /etc/cron.allow: No such file or directory

cron.deny

  • cron 금지 계정목록
  • (기본값) 내용 비어 있음 → 모두 허용
[root@zetawiki ~]# ll /etc/cron.deny
-rw-r--r--. 1 root root 0 Jul 19  2011 /etc/cron.deny
[root@zetawiki ~]# cat /etc/cron.deny
[root@zetawiki ~]#

 

  • cron.allow와 cron.deny 파일이 둘 다 존재하지 않는 경우, 루트 사용자 권한이 있는 사람만 crontab명령으로 작업할 수 있다.
  • cron.allow 및 cron.deny 파일을 편집하거나 만들려면 수퍼유저(root) 권한이 필요하다.
  crontab 생성, 편집, 표시, 제거 가능 crontab 생성, 편집, 표시, 제거 불가능
cron.allow (O) cron.allow에 나열된 사용자만 나머지
cron.allw (X)                         
cron.deny (O)
cron.deny에 나열된 사용자를 제외한 모든 사용자 cron.deny에 나열된 사용자
cron.allow (X)                 
cron.deny (X)
슈퍼유저 권한 필요(ex. root) 슈퍼유저 제외 나머지 모두
  • root계정으로 cron.allow 수정하여 해당 계정 추가(한 라인에 사용자 이름 하나씩)

 

- crontab 파일 권한 여부 확인 방법

#해당 사용자계정으로 로그인

crontab -l
crontab: can't open your crontab file
-> 1) crontab 파일 존재하는지 확인 필요 2) crontab 파일 권한 확인 필요

crontab: you are not authorized to use cron. Sorry.
-> 1) cron.allow 파일에 사용자 이름 등록 필요

 

- Crontab 사용 팁

1. 한 줄에 하나의 명령만 쓰자

# 잘못된 예
* * * 5 5
/home/script/test.sh
# 잘된 예
* * * 5 5 /home/script/test.sh

 

2. 필요할 때 주석을 달자

# 주석 #
#--------------------#
# 이것은 주석입니다. #
#--------------------#

3. 로그(log) 남겨두자

# 덮어쓰기
* * * * * /home/script/test.sh > /home/script/test.sh.log 2>&1

# 기존의 test.sh.log에 이어서 쓰기
* * * * * /home/script/test.sh >> /home/script/test.sh.log 2>&1
# 로그 확인
vi /home/script/test.sh.log

 

4. 주기적으로 백업하자

  • 혹시라도 crontab -r 를 쓰거나 실수로 crontab 디렉토리를 날려버려서 기존 크론 내역들이 날아갔을 때를 방지하여 주기적으로 크론탭을 백업하자.
# 크론탭 내용을 txt 파일로 만들어 저장
crontab -l > /home/bak/crontab_bak.txt
# 크론탭 내용을 txt 파일로 만들어 저장 (자동화)
50 23 * * * crontab -l > /home/bak/crontab_bak.txt

 

 

- Crontab 사용 시 주의할 점

crontab의 규칙에 맞게 설정을 했음에도 불구하고 동작하는 않은 경우가 발생한다. 보통 아래의 이유 때문이다.

 

1. 환경변수

  • SHELL

등록된 작업을 실행시킨 쉘을 지정한다**(크론탭은 실행시에 별도로 쉘을 띄운다)**. 지정하지 않을시 기본값으로 /bin/sh로 지정된다.

  • PATH

쉘을 별도로 띄워서 실행하는 특성때문에, 쉘에서 프로그램을 찾기위한 PATH도 별도로 지정해줄 필요가 있다.

# 매분마다 sample.sh을 실행하며 프로그램이 작동할 쉘과 경로를 지정해준다.
crontab -e

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

* * * * * sample.sh

 

2. 권한문제

  • vi /etc/crontab을 통해 크론탭을 직접 수정을 했을 경우 root 권한 명령을 실행하려면 root권한을 명시해 주어야 한다.
crontab -e
* * * * * example.sh

# 두 번째 처럼 root 권한을 명시해야 한다.
vi /etc/crontab
* * * * * root example.sh

 

3. 절대경로 / 상대경로

  • 절대경로로 작성하여 나중에 생길 오류를 방지하자.

즉,  /usr/local/bin/php74를 실행 시에는 php74 보다는 /usr/local/bin/php74로 절대 경로로 명시

 

4. 최소 반복 시간

  • 크론탭의 최소 반복시간은 1분이므로 그보다 작은 시간으로 하면 안된다.

 

 

 

 

 

 

 

 

 


Reference

http://jdm.kr/blog/2#특정_시간_실행https://jhnyang.tistory.com/m/68https://jdm.kr/blog/2https://ojava.tistory.com/154

https://finance-it.tistory.com/106

https://zetawiki.com/wiki//etc/cron.allow,_cron.deny

https://jinmay.github.io/2018/01/07/linux/basic-of-crontab/

https://tipland.tistory.com/80

'Programming > Linux' 카테고리의 다른 글

[Linux] rsync란?  (0) 2023.04.28
[Linux] /tmp와 /var/tmp의 차이  (2) 2023.03.11
[Linux] Nohup이란?  (0) 2023.03.10
[Linux] at이란?  (0) 2022.06.30

- at 스케줄링이란?

  • at 스케줄링은 주로 프로그램을 특정시간에 한 번만 사용하고 싶을 때 이용한다.

즉, 주기적으로 돌아가는 crontab과 달리 일회성이다.

 

 

- at 명령어

  • at명령어 프로그램을 사용하면 일회성의 프로세스(명령어) 실행 예약을 매우 간단하게 할 수 있다.
$ at [옵션] 시간
  • 지정한 시간에 원하는 명령을 실행할 수 있다. 간단한 알림 메시지부터 복잡한 스크립트 등
  • 예약된 작업은 /var/spool/at 디렉터리에 개별 파일로 저장된다.
  • 실행 결과는 /usr/sbin/sendmail을 통해 메일로 전송된다.
  • /etc/at.allow와 /etc/at.deny 환경설정 파일을 통해 at 명령어에 대한 접근제어가 가능하다.

 

- at 옵

옵션 설명
-V 버전을 보여준다.
-q (queue) queue 이름을 지정한다.
-f 파일명 스크립트 파일 등을 실행해 줄 때 사용한다.
-m 작업이 완료될 때 사용자에게 메일을 보낸다.
-M 메일 보내기 않기
- t [[CC]YY]MMDDhhmm[.ss] [[CC]YY]MMDDhhmm[.ss]로 시간 지정
-l 예약된 작업 목록을 보여준다.
- r 예약된 작업을 삭제한다.(unix)
-d 예약된 작업을 삭제한다.(linux)
TIME 실행할 시간을 기록한다. 기본적으로 "hh:mm YYYY-MM-DD"로 적는다. hh:mm은 시간으로 24시간제를 기본으로 한다.
  • TIME 시간대는 hh:mm yyyy-mm-dd (시간:분 연도-월-날짜)의 형식이나 now+값 (minutes/hours/days)로 현재 시간 +(분/시간/일) 단위로 설정할 수 있다.
# : 2019년 12월 25일 21시 30분에 명령어 실행
at 21:30 2019-12-25

# : 현재 시간 5분 뒤에 명령어 실행
at now+5 minutes

 

- atq

  • 현재 예약된 작업 목록을 확인하는 명령어. at -l 과 동일
qa@qa-VirtualBox:~$ atq
1    Wed Feb 9 20:00:00 202 a qa
# atq 출력 포맷
<job number> <date> <hour> <queue> <user-name>
  • 대기 큐에서 대기 중인 작업들의 목록을 확인할 수 있다.
  • 슈퍼 유저(root)인 경우에는 모든 유저의 대기 중인 작업이 출력되고, 그 외에는 로그인된 사용자의 작업이 출력된다.
  • 작업을 설정할 때 큐를 설정할 수 있고, 'a-z'의 큐가 존재하며 'a'에 가까울 수록 우선순위가 높다. 큐를 설정하지 않으면 'a'가 기본이다.

 

- atrm

  • 예약된 작업을 삭제. at -d 옵션과 동일

 

- batch

  • 시스템에 부하를 주지 않도록 실행한다.

 

- at 사용법

  • at 명령어는 시간 정보는 필수로 입력해야 하고, 그 외의 정보는 옵션이다.
  1. at 시간 명령어를 입력하고 실행한다.
  2. 그러면 at**>** 표준 입력을 할 수 있는 프롬프트 창이 나온다. 예약시간대에 이행할 명령어를 입력한다.
  3. 입력을 마치면 [Ctrl]+[D]로 종료(EOT, End Of Transmission) 하면 된다.

이렇게 하면 지정한 시간대에 해당 명령어가 실행하게 된다.

 

예시

# 내일 23시 00분에 yum update를 진행하라
[root@localhost backup]# at 23:00 tomorrow 
at> yum -y update 
at> reboot 

# 그 후, Ctrl + D 클릭
at> <EOT>
job 1 at Sun Dec 27 23:00:00 2020
[root@localhost backup]#
# 23:01 분에 git을 설치하라는 명령어를 하나더 추가했더니, job2로 저장이 된다.
[root@localhost backup]# at 23:01 tomorrow 
at> yum install git
at> reboot 

# 그 후, Ctrl + D 클릭
at> <EOT>
job 2 at Sun Dec 27 23:01:00 2020
[root@localhost backup]#

 

  • 예약된 리스트 확인
[root@localhost backup]# at -l
1      Sun Dec 27 23:00:00 2020 a root
2      Sun Dec 27 23:01:01 2020 a root
[root@localhost backup]#
  • 예약 작업 제거
[root@localhost backup]# atrm 2
1      Sun Dec 27 23:00:00 2020 a root
[root@localhost backup]#

 

 

- at 사용자 접근제어

  • at 명령어는 기본적으로 root 사용자만 사용할수 있다.
  • 단, /etc/at.allow와 /etc/at.deny 두 파일을 이용해 일반 사용자의 사용 권한을 지정해 줄 수 있다.

/etc/at.allow

  • 이 허용파일이 있는 경우 파일 내 지정된 사용자만 at를 등록할 수 있다.
  • 지정되지 않은 사용자들은 at 명령을 실행할 수 없다.

 

/etc/at.deny

  • 허용파일이 없는 경우에는 이 거부 파일이 사용된다.
  • 파일 내 지정된 사람을 제외한 나머지 사용자에게 at 명령 실행 권한이 주어진다.
  • 즉, at.deny 파일에 등록된 사용자는 at를 사용할 수 없게 된다.

두 파일 모두 없다면 루트 관리자만 사용할 수 있다.

 

 

 

 

 

 

 

 


Reference

https://inpa.tistory.com/entry/LINUX-📚-작업-스케줄러-명령어-💯-정리-at-crontab

https://freeblogger.tistory.com/13

https://ansan-survivor.tistory.com/432

'Programming > Linux' 카테고리의 다른 글

[Linux] rsync란?  (0) 2023.04.28
[Linux] /tmp와 /var/tmp의 차이  (2) 2023.03.11
[Linux] Nohup이란?  (0) 2023.03.10
[Linux] Crontab 이란?  (0) 2022.06.30

+ Recent posts