[linux]mount 명령어를 통한 디렉터리 연결하기
SFTP 서비스를 통해 특정 홈 디렉터리 하위에 다른 경로의 디렉터리를 제공함.
처음 시도는 심볼릭 링크를 통해 해결하고 했지만 상위 디렉터리로 이동되는 문제가 발생하였고
이를 해결하기 위해서는 권한 변경, ssh 설정 등을 변경해하는 절차가 필요함.
운영중인 경우 sshd 재기동, 설정 변경에 따른 부담감이 발생
mount 명령어의 --bind 옵션을 통해 디렉터리 -> 디렉터리 마운트로 해결하기로 함
/SFTP_SERVICE_DIR/DATA1 경로의 자료를 serviceuser1 사용자의 홈디렉터리의 DATA1으로 서비스 하고자함
사전에 사용자의 홈 디렉터리에 DATA1으 경로는 생성되어야 함
마운트
sudo mount --bind /SFTP_SERVICE_DIR/DATA1 /home/serviceuser1/DATA1
읽기만 사용할 경우
sudo mount --bind -o ro /SFTP_SERVICE_DIR/DATA1 /home/serviceuser1/DATA1
-o 옵션을 통해 ro 값(읽기만)을 전달
마운트 해제
sudo umount /home/serviceuser1/DATA1
'개발 > Linux' 카테고리의 다른 글
파일 감시를 위한 inotifywait (0) | 2020.08.20 |
---|---|
Linux bash shell script 기본 사용법 (0) | 2020.08.18 |
logroate 옵션 (0) | 2017.11.22 |
특정 계정으로 쉘 실행하기 (0) | 2017.11.15 |
CentOS7 방화멱(firewalld) 설정 (0) | 2017.04.24 |
파일 감시를 위한 inotifywait
리눅스 시스템에서 파일의 생성, 삭제, 이동 등을 감시하여 어떤 작업을 처리할때 유용한다.
1. 설치
먼저 설치되어 있지 않다면 다음 명령어로 설치한다.
yum install inotify-tools
2. 사용법
#!/bin/sh
MONITOR_PATH=/home/test
inotifywait -m -e create -r "$MONITOR_PATH" |
while read dirname eventlist filename
do
echo ${dirname} ${filename}
done
3. Options
-h|--help
도움말을 보여줍니다.
@<file>
감시에서 지정된 파일을 제외합니다.
--exclude <pattern>
확장 정규식 <pattern>과 일치하는 파일의 모든 이벤트를 제외합니다.
--excludei <pattern>
--exclude와 같지만 대소 문자를 구분하지 않습니다.
-m|--monitor
이벤트를 영원히 경청하십시오. 이 옵션이 없으면 inotifywait는 하나의 이벤트가 수신 된 후 종료됩니다.
-d|--daemon
--outfile로 지정된 파일에 이벤트 로깅 이벤트를 백그라운드에서 실행한다는 점을 제외하면 --monitor와 동일합니다. --syslog를 의미합니다.
-r|--recursive
디렉토리를 재귀 적으로 감시합니다.
--fromfile <file>
<file> 또는 stdin의 경우`- '에서 감시 할 파일을 읽습니다.
-o|--outfile <file>
stdout이 아닌 <file>에 이벤트를 인쇄하십시오.
-s|--syslog
stderr 대신 syslog에 오류를 보냅니다.
-q|--quiet
더 적게 인쇄합니다 (인쇄 이벤트 만).
아무것도 인쇄하지 않습니다 (이벤트도 아님).
--format <fmt>
지정된 printf와 유사한 형식 문자열을 사용하여 인쇄합니다. 자세한 내용은 man 페이지를 참조하십시오.
--timefmt <fmt>
--format 문자열에서 % T와 함께 사용하기위한 strftime 호환 형식 문자열입니다.
-c|--csv
CSV 형식으로 이벤트를 인쇄합니다.
-t|--timeout <seconds>
단일 이벤트를 수신 할 때 <seconds> 초 동안 이벤트를 기다린 후 시간이 초과됩니다. <seconds>가 0이면 inotifywait가 시간 초과되지 않습니다.
-e|--event <event1> [ -e|--event <event2> ... ]
특정 이벤트를 수신합니다. 생략하면 모든 이벤트가 수신됩니다.
4. Events
이벤트 | 설명 |
access | 파일 또는 디렉토리 내용을 읽었습니다 |
modify | 파일 또는 디렉토리 내용이 기록되었습니다. |
attrib | 파일 또는 디렉토리 내용이 기록되었습니다. |
close_write | 쓰기 가능 모드로 열린 후 파일 또는 디렉토리가 닫힘 |
close_nowrite | 읽기 전용 모드로 열린 후 파일 또는 디렉토리가 닫힘 |
close | 읽기 / 쓰기 모드에 관계없이 파일 또는 디렉터리가 닫힘 |
open | 열린 파일 또는 디렉토리 |
moved_to | 감시 된 디렉토리로 이동 된 파일 또는 디렉토리 |
moved_from |
감시 된 디렉토리에서 이동 된 파일 또는 디렉토리 |
move |
감시 된 디렉토리로 (부터) 이동 된 파일 또는 디렉토리 |
create |
감시 된 디렉토리 내에 생성 된 파일 또는 디렉토리 |
delete |
감시 디렉토리 내에서 삭제 된 파일 또는 디렉토리 |
delete_self |
파일 또는 디렉토리가 삭제되었습니다. |
unmount |
마운트 해제 된 파일 또는 디렉토리를 포함하는 파일 시스템 |
5. 종료 코드
0 - 시청을 요청한 이벤트가 수신되었습니다.
1 - 시청을 요청하지 않은 이벤트가 수신되었습니다. (일반적으로 delete_self 또는 마운트 해제) 또는 일부 오류가 발생했습니다.
2 ---timeout 옵션이 제공되었으며 이벤트가 발생하지 않았습니다. 지정된 시간 간격으로.
'개발 > Linux' 카테고리의 다른 글
[linux]mount 명령어를 통한 디렉터리 연결하기 (0) | 2023.03.23 |
---|---|
Linux bash shell script 기본 사용법 (0) | 2020.08.18 |
logroate 옵션 (0) | 2017.11.22 |
특정 계정으로 쉘 실행하기 (0) | 2017.11.15 |
CentOS7 방화멱(firewalld) 설정 (0) | 2017.04.24 |
Linux bash shell script 기본 사용법
1. shell script의 시작
shell script의 시작은 다음으로 시작한다.
!#/bin/sh
2. 문자열 출력
문자열의 출력은 다음과 같다.
echo "hello" #자동 줄바꿈
printf "hello" #c언어와 비슷
3. 주석
주석은 #으로 시작합니다.
# 이것은 주석입니다.
function {
#주석입니다.
ehco "hello"
}
4. 변수의 선언
쉘 스크립트에서 변수명은 대소문자 구분하지 않는다.
기본적으로 전역변수이며 변수 앞에 local을 붙여서 지역변수로 사용할 수 있다..
변수명과 값은 "="로 구분하며, 공백 없이 변수명=값으로 지정한다.
기본적으로 변수명에 할당된 값음 모두 문자열로 인식한다.
선언된 변수는 해당 스크립트에서만 유효하며 다른 쉘 스크립트에서도 사용하려면 export를 붙여서 환경변수로 만들어야 한다.
변수의 해제는 unset로 한다.
아래의 예제에서 var1, var2는 모두 문자열로 인식한다.
var1=1
var2="1"
할당된 변수를 사용하기 위해서는 $, ${변수명}를 사용하여 할당된 변수를 사용한다.
var=1
echo $var
${변수명}을 사용할 경우에는 변수에 담긴 값에 연산을 이용할 수 있다.
사용법 | 설명 |
${변수명:위치} | 위치 다음부터 문자열 추출 |
${변수명:위치:길이} | 위치 다음부터 지정한 길이만큼 문자열 추출 |
${변수명:-기본값} | 변수가 값이 없을 경우 기본값 지정 |
${변수명:?값} | 변수의 값이 없을 경우 값출력 후 스크립트 종료 |
${변수명?값} | 변수 미선언시에 값 출력 후 스크립트 종료 |
${#변수명} | 문자열 길이 |
#!/bin/bash
value="abcdef"
echo ${#value} #변수값의 길이 출력
#result=>6
echo ${value:2} #특정 위치부터 출력
#result=> cdef
echo ${value:2:2} #특정 위치부터 길이만큼 출력
#result=>cd
# null이면 입력값 초기화 후 출력, 아니면 변수값 출력
echo ${value=ghijkl}
echo ${value2=ghijkl}
#result=>abcde
#result=>ghijkl
#null이 아니면 입력값 출력, 아니면 빈값 출력
echo ${value+ghijkl}
echo ${value2+ghijkl}
#result=>ghijkl
#result=>
#null이면 입력값 출력, 아니면 변수값 출력
echo ${value-ghijkl}
echo ${value2-ghijkl}
#result=>abcdef
#result=>ghijkl
#null이면 오류, 아니면 변수값 출력
echo ${value?ghijkl}
echo ${value2?ghijkl}
#result=>abcdef
#result=>./test.sh line x: value: ghijkl
변수는 특수 매개변수를 제공한다.
- $$ : 현재 스크립트의 PID
- $? : 최근에 실행된 명령어, 함수, 스크립트 자식의 종료 상태
- $! : 최근에 실행한 백그라운드(비동기) 명령의 PID
- $- : 현재 옵션 플래그
- $_ : 지난 명령의 마지막 인자로 설정된 특수 변수
만약 할당된 변수를 숫자로 사용하고 싶다면 expr 명령어를 사용한다.
또 다른 방법은 $(()) 감싸고 계산 하는 방법이 있다. $(()) 계산식 안에 있는 숫자들은 문자열이 아니라 숫자로 연산이 된다.
var1=1
var2="2"
echo `expr $var1 + $var2`
echo $(($var1 + $var2))
5. 배열의 선언
쉘 스크립트는 1차원 배열만 사용한다. 배열을 선언할 때는 인덱스가 연결되지 않아도 되며 배열의 선은은 다음과 같다.
#!/bin/bash
#배열에 값 할당
array[0]="1"
array[1]="2"
array[2]="3"
#한번에 배열 선언
array=("1", "2", "3")
#배열의 값 사용
echo ${array[0]}
#배열 전체 길이 출력 : ${#array[@]}
#전체 출력 : ${array[@]}
#배열의 복사
array=(${array[@]} "2")
6. 파라메터 전달
쉘을 수행할때 파라메터를 던져 줄 수 있다.
쉘을 수행할때 파라메터는 /test.sh 123 456 678 형태로 넘겨줄 수 있으며 수행되는 쉘 안에서는 $1 ~$9 형태로 받을 수 있다. 10번째 인자부터는 ${}로 감싸줘야 한다. 넘겨받은 인자는 몇가지 형태가 있으며 다음과 같다.
- $0 : 실행된 스크립트명
- $1~n : 넘겨받은 인자의 순서의 넘어온 값 $1, $2 ... $9 ... ${10}, ${11}....
- $* : 전체 인자 값
- $@ : 전체 인자 값
- $# : 매개 변수의 총 갯수
7. 커맨드
- 쉘 스크립트에서는 $(리눅스 명령어)의 결과인 표준 출력을 문자열로 치환한다.
- 물론 변수에 할당도 가능하다. ex. today=$(date)
8. 따옴표
쉘 스크립트에서는 쌍따옴표(Double Quotation), 따옴표(Single Quotation), 역따옴표(Backquote)가 모두 다르다.
-
쌍따옴표는 특수기호가 동작하는 문자열이다.
-
작은 따옴표는 특수기호를 그대로 출력한다.
-
역따옴표는 명령을 실행한 후 결과를 반환하는 따옴표이다.
#!/bin/bash
var1="hello"
var2="world"
var3="!!!"
echo "${var1} ${var2} ${var4}"
#result=> hello world !!!
echo '${var1} ${var2} ${var4}'
#result=> ${var1} ${var2} ${var4}
total=`free | grep Mem | awk '{print $2}'`
문자에서 특수문자를 사용하기 위해서는 다음과 같이 한다.
쌍따옴표 | "\"" '"' |
쌍따옴표는 특수기호를 작성할 때 역슬러시를 이용 따옴표는 특수기로를 그대로 출력 |
따옴표 | "'" | 따옴표는 표기할 방법이 없음 |
역실러시 | "\\" '\' |
역슬러시도 역슬러시로 표시할 수 있다. 따옴표는 특수기호를 그대로 출력 |
'개발 > Linux' 카테고리의 다른 글
[linux]mount 명령어를 통한 디렉터리 연결하기 (0) | 2023.03.23 |
---|---|
파일 감시를 위한 inotifywait (0) | 2020.08.20 |
logroate 옵션 (0) | 2017.11.22 |
특정 계정으로 쉘 실행하기 (0) | 2017.11.15 |
CentOS7 방화멱(firewalld) 설정 (0) | 2017.04.24 |
logroate 옵션
3. 옵션
옵션 | 설명 |
copy |
로그 파일의 카피를 생성한다. 이 옵션을 사용하면, 이미 낡은 로그 파일이 존재하게 되므로, create 옵션은 무효가 된다. |
copytruncate | 카피의 작성 후에 로그 파일을 이동하는 대신에, 오리지날의 로그 파일을 아무것도 저장하지 않는 로그로 다시 만든다. 어느 프로그램이 로그 파일을 닫지 못하고, 언제까지 전의 로그 파일에 계속 쓰고 있는 경우 등에 유효한 옵션이다. 다만 파일을 카피하는 순간의 로그가 소실되는 가능성이 높다 . 이 옵션을 넣지 않으면 현재 사용중인 로그를 다른이름으로 move하고 새로운 파일을 생성한다. |
extention | 로테이션 후의 백업 로그에 부가하는 확장자(extension)를 지정한다. ext에는 파일의 확장자를 지정한다. compress 옵션을 지정했을 경우에는, 여기서 지정한 확장자(extension)의 뒤에 gz등의 확장자(extension)가 부가된다. |
ifroate | 만약 로그 파일이 공백이었다고 해도 로테이션 시킨다. 디폴트로 유효하게 되어 있다. |
로그 파일의 로테이션이 완료한 시점에서, mail 옵션의 인수로서 설정된 메일 주소에 메일을 보낸다. | |
nomail | 메일로 통보하지 않는다. |
maillast | mail 옵션 사용시에 로테이션 한 파일을 메일로 출력한다. |
mailfirst | mail 옵션 사용시에 로테이션 할 예정의 파일을 메일로 출력한다. |
missingok | 로그 파일이 발견되지 않았던 경우, 에러 메세지를 출력하지 않고 다음의 로그 파일의 처리로 이행한다. |
size | size 옵션의 파라미터로서 준 수치보다 로그 파일의 사이즈가 클 경우, 로그 파일의 로테이션을 실시한다. "M"(메가), "K"(킬로)를 지정할 수 있다. |
start | 로테이션 하는 경우에 부가되는 숫자의 확장자를 몇부터 시작하는지를 지정한다. 디폴트에서는 1 이다. |
weekly | 매주 로그를 바꾼다. |
daily | 매일 로그를 바꾼다. |
monthly | 월 단위로 로그를 바꾼다. |
roate 4 | 로그를 4세대분 남긴다. weeky를 지정할 경우 4주간의 로그라는 의미이다. |
maxage [n] | [n]일 이상이 된 로그 파일을 삭제한다. |
create | (비어있는)신규 로그 파일을 로테이션 한 직후에 작성한다. |
compress | 압축한다. 디폴트에서는 압축하지 않게 되어 있으므로, 디스크의 빈 용량을 보고, 유효하게 할지 지정한다. |
nocompress | 압축하지 않는다. |
notifempty | log 내용이 없으면 rotation 하지 않는다. |
ifempty | 로그파일이 비어있어도 로테이트한다. |
prerotate-endscript | 사이의 명령어를 로그파일 처리전에 실행한다. |
postrotate-endscript | 사이의 명령어를 로그파일 처리 후에 실행한다. |
errors [mail address] | 로테이트 실행시 에러가 발생하면 이메일로 통보한다. |
'개발 > Linux' 카테고리의 다른 글
파일 감시를 위한 inotifywait (0) | 2020.08.20 |
---|---|
Linux bash shell script 기본 사용법 (0) | 2020.08.18 |
특정 계정으로 쉘 실행하기 (0) | 2017.11.15 |
CentOS7 방화멱(firewalld) 설정 (0) | 2017.04.24 |
[Linux] Proxy 서버 설정하기 (0) | 2015.07.22 |
특정 계정으로 쉘 실행하기
su - 아이디 -c "명령어1; 명령어2; 명령어3"
예를 들어서 tester 계정을 이용하여 jar 파일을 실행한다고 하자. 그럴경우는 다음과 같이 사용한다.
su - tester -c "nohup java -jar /bin/dataservice-process.jar /tmp 2>> /dev/null >> /dev/null &"
'개발 > Linux' 카테고리의 다른 글
Linux bash shell script 기본 사용법 (0) | 2020.08.18 |
---|---|
logroate 옵션 (0) | 2017.11.22 |
CentOS7 방화멱(firewalld) 설정 (0) | 2017.04.24 |
[Linux] Proxy 서버 설정하기 (0) | 2015.07.22 |
[tip] 리눅스에서 부팅시 간단하게 시작 프로그램 등록하기 (0) | 2015.05.12 |
CentOS7 방화멱(firewalld) 설정
CentOS 7/RHEL 7부터는 방화벽을 데몬이 firewalld로 변경되었다. 방화벽 설정을 iptables 명령어 대신 firewall-cmd(콘솔), firewall-config(X-Windows) 명령어를 사용하여 설정한다.
설치
- yum install firewalld
- systemctl start firewalld
- systemctl enable firewalld
설정
설정파일
/etc/firewalld/zones/public.xml
- <?xml version="1.0" encoding="utf-8"?>
- <zone>
- <short>Public</short>
- <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accept
- ed.</description>
- <service name="dhcpv6-client"/>
- <service name="http"/>
- <service name="ssh"/>
- <service name="https"/>
- </zone>
재기동
service iptables restart 대신 아래 명령어 사용
firewall-cmd --rel
zone
사전에 정의된 zone 목록 출력
firewall-cmd --get-zones
전체 존 목록을 상세하게 출력
firewall-cmd --list-all-zones
기존 존 출력
firewall-cmd --get-default-zone
활성화된 존 출력
firewall-cmd --get-active-zone
서비스 목록
firewall-cmd --get-services
permanent로 등록된 서비스 목록
firewall-cmd --permanent --list-all
임의 포트 추가
--add-port=<portid> [-<portid>]/<protocol> 옵션을 사용하여 포트 추가
firewall-cmd --zone=public --add-port=8080/tcp
포트 삭제
--remove-port=<portid> [-<portid>]/<protocol> 옵션 사용
firewall-cmd --zone=public --remove-port=8080/tcp
rich-rule
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" port protocol="tcp" port="9000" accept"
방화벽에 포트 추가
- firewall-cmd --permanent --zone=public --add-service=http
- firewall-cmd --permanent --zone=public --add-service=https
기본 zone은 public이므로 --zone=public 옵션은 생략 가능
출처 : https://www.lesstif.com/pages/viewpage.action?pageId=22053128#RHEL/CentOS7에서방화벽(firewalld)설정하기-설치
'개발 > Linux' 카테고리의 다른 글
logroate 옵션 (0) | 2017.11.22 |
---|---|
특정 계정으로 쉘 실행하기 (0) | 2017.11.15 |
[Linux] Proxy 서버 설정하기 (0) | 2015.07.22 |
[tip] 리눅스에서 부팅시 간단하게 시작 프로그램 등록하기 (0) | 2015.05.12 |
crontab 설명 (0) | 2015.05.06 |
[Linux] Proxy 서버 설정하기
서버중 외부로 나가는 트래픽이 막혀있는 서버가 있다면 프록시를 통해 외부로 나가는 요청을 할수가 있습니다.
1. 로그인 세션 동안만 유지되는 방법
텔넷이나 ssh에 로그인 되어있는동안만 프록시를 사용하고 있다면 다음과 같이 사용하면 됩니다.
1 2 3 4 5 6 | # 프록시 서버 설정 $ export http_proxy=http: //www .yourproxyserver.com:port $ export https_proxy=http: //www .yourproxyserver.com:port #프록시서버 해제 $ unset http_proxy $ unset https_proxy |
2. 로그인 세션이 종료된 후에도 프록시를 유지시키는 방법
1 2 3 4 5 6 7 8 9 | # 여기서는 .bashrc에 작업했지만 .profile, .bash_profile, .bashrc_profile 어디에 설정해도 동일합니다. $ vi ~/.bashrc #아래내용 추가 export http_proxy=http: //www .yourproxyserver.com:port export https_proxy=http: //www .yourproxyserver.com:port # 저장후 $ source ~/.bashrc |
이후 wget이나 curl로 외부로 요청이 되었을때 데이터를 제대로 가져오면 프록시 설정이 제대로 된것입니다.
1 2 3 | $ wget www.daum.net #혹은 $ curl -0 www.daum.net |
[원문출처]http://krespo.net/188
'개발 > Linux' 카테고리의 다른 글
특정 계정으로 쉘 실행하기 (0) | 2017.11.15 |
---|---|
CentOS7 방화멱(firewalld) 설정 (0) | 2017.04.24 |
[tip] 리눅스에서 부팅시 간단하게 시작 프로그램 등록하기 (0) | 2015.05.12 |
crontab 설명 (0) | 2015.05.06 |
centos inotify install (0) | 2015.04.22 |
[tip] 리눅스에서 부팅시 간단하게 시작 프로그램 등록하기
linux 환경에서 구동되는 프로그램을 만들었는데 사용자의 요청에 의해서
리눅스가 처음 시작할때 자동으로 프로그램을 실행하도록 요청을 받을때 간단하게 사용합니다.
chkconfig 라는 명령으를 통하여 등록을 할 수도 있지만 리눅스의 부팅과정을 이해해야하며
런레벨에 대한 정보도 학습해야 합니다. 리눅스도 잘 모르는 사용자라 하면 복잡하게 느껴질수도 있습니다.
하지만 해당 방법은 crontab을 통하여 등록할 수 있으며 사용방법이 간답합니다.
사용법
1. 프로그램이 실행하고자 하는 계정으로 로그인 한 후 아래 명령어를 입력하여 편집모드로 들어갑니다.
crontab -e
2. @reboot 명령을 통하여 실행하고 하는 명령어를 입력합니다.
예를 들어서 부팅시 어떤 프로그램을 를 자동으로 실행하기 위한 명령어를 등록하기 위해서서 아래와 같이 입력하였습니다.
@reboot /home/test/test/programstart.sh
3. 저장한 후 vi를 닫습니다.
crontab은 일반적으로 사용하는것 외에 특정 몇가지 활성화 매계변수가 존재하는데 아래와 같은 것들이 있습니다.
직접 쳐도 되지만 간단하게 사용할 수도 있으니 유용하게 사용되었으면 합니다.
@reboot = run at boot and reboot only
@yearly = run at midnight Jan 1 each year (equiv to 0 0 1 1 *)
@annually = run at midnight Jan 1 each year (equiv to 0 0 1 1 *)
@monthly = run at midnight on the first day of each month (equiv to 0 0 1 * *)
@weekly = run at midnight each Sunday (equiv to 0 0 * * 0)
@daily = run at midnight each day (equiv to 0 0 * * *)
@ midnight = run at midnight each day (equiv to 0 0 * * *)
@ hourly = run on the first second of every hour (equiv to 0 * * * *)
'개발 > Linux' 카테고리의 다른 글
CentOS7 방화멱(firewalld) 설정 (0) | 2017.04.24 |
---|---|
[Linux] Proxy 서버 설정하기 (0) | 2015.07.22 |
crontab 설명 (0) | 2015.05.06 |
centos inotify install (0) | 2015.04.22 |
[SHELL] 특정 날짜를 입력받아 지정된 날짜까지 LOOP 실행하기 (0) | 2015.01.28 |
crontab 설명
crontab format:
{activation parameters} {command #1} ; {optional command #2} ; {optional command #3} ; {etc, commands end on the line ending}
Example:
* * * * * ./folding
This would cause folding to be launched every minute, from your home folder. Very bad, you would end up with 60 copies running by the end of an hour.
Commands are shell commands. Separate multiple commands with a semicolon ";" and end on the line ending.
Activation parameters:
@reboot = run at boot and reboot only
@yearly = run at midnight Jan 1 each year (equiv to 0 0 1 1 *)
@annually = run at midnight Jan 1 each year (equiv to 0 0 1 1 *)
@monthly = run at midnight on the first day of each month (equiv to 0 0 1 * *)
@weekly = run at midnight each Sunday (equiv to 0 0 * * 0)
@daily = run at midnight each day (equiv to 0 0 * * *)
@ midnight = run at midnight each day (equiv to 0 0 * * *)
@ hourly = run on the first second of every hour (equiv to 0 * * * *)
- or -
1 2 3 4 5 = specific time tags
- where -
1 = Minute (of hour) to activate [0-59]
2 = Hour (of day) to activate [0-23]
3 = Day (of month) to activate [1-31 ... 29,30,31 may not activate during all months]
4 = Month (of year) to activate [1-12 or 3-letter names "Jan,Feb,Mar"]
5 = Weekday to activate [0-7 or 3-letter names "Mon,Tue,Wed"]
If 3-letter names are used on Month/Weekday instead of numbers, they are case-insensitive. "Mon" and "mON" are equally acceptable. If numbers are used for the weekday, "0" and "7" are both Sunday and are interchangeable.
Time tags are separated by spaces. Do not use spaces within a tag, this will confuse cron. All five tags must be present. They are a logical AND of each other. There is another space between the last time tag and the first command.
A time tag can be a wildcard "*", which means "all". It can be one value, several values, a range, or a fractional range.
Examples for the Hour column:
8 = one value: execute in the 8 AM hour
5,6,9 = multiple values: execute in the 5, 6, and 9 AM hours
5-8 = range: execute in each hour between 5-8 AM (inclusive)
*/2 = fractional: execute in every other hour. 0 (midnight), 2AM, 4AM, 6AM, etc
3-12/3 = fractional range: execute in every third hour between 3AM and 12PM: 3AM, 6AM, 9AM, 12PM
Example:
5 */3 * * 1-5 cd "desktop/fold1"; ./fold &
This will launch on the 5-minute mark, every third hour, every day, every month, but only on days of the work week (Mon-Fri). It cd's to the Desktop/Folding folder #1, then launches the launch script in nohup mode so folding will keep running.
'개발 > Linux' 카테고리의 다른 글
[Linux] Proxy 서버 설정하기 (0) | 2015.07.22 |
---|---|
[tip] 리눅스에서 부팅시 간단하게 시작 프로그램 등록하기 (0) | 2015.05.12 |
centos inotify install (0) | 2015.04.22 |
[SHELL] 특정 날짜를 입력받아 지정된 날짜까지 LOOP 실행하기 (0) | 2015.01.28 |
windows OS 에서 port 및 프로세스 확인 (0) | 2014.04.08 |
centos inotify install
파일 생성 여부를 모니터링 하기 위해 inotify를 사용하면 생성, 수정, 삭세 등을 모니터링 할 수 있다.설치 방법은 아래와 같다.yum install inotify-tools하지만 알수 없는 에러를 내고 안된다.해서 http://sourceforge.net/projects/inotify-tools/ 아래 사이트에 가서 inotify-tools-3.14.tar.gz 를 다운로드 받아서 설치를 한다.설치 파일을 다운로드 한 후 차례대로 다음 명령어를 입력한다.//wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gztar -zxvf inotify-tools-3.14.tar.gzcd inotify-tools-3.14./configuremakemake installupdatedb설치 후아래 명령어를 입력하여 실제 모니터링 되는지 여부를 확인해본다.inotifywait -r -m -e modify,create,delete,move,moved_to --format '%:e %w%f' /감시할디렉터리명해당 명령어는 수정,등록,삭제,이동일 경우 모니터링을 한다.
'개발 > Linux' 카테고리의 다른 글
[tip] 리눅스에서 부팅시 간단하게 시작 프로그램 등록하기 (0) | 2015.05.12 |
---|---|
crontab 설명 (0) | 2015.05.06 |
[SHELL] 특정 날짜를 입력받아 지정된 날짜까지 LOOP 실행하기 (0) | 2015.01.28 |
windows OS 에서 port 및 프로세스 확인 (0) | 2014.04.08 |
[linux]ssh 비밀번호 없이 접속하기 (0) | 2013.04.25 |