메뉴 닫기

cron run-parts

run-parts – run scripts or programs in a directory
:: 특정디렉토리내에 스크립트나 프로그램을 실행시키는 명령어로 사전식(directory)….즉 알파벳 순서대로 정렬시켜서 실행하는 명령어로 주로 cron 서비스와 함께 이용됩니다.

 

테스트용도로  사용하고 있는 서버중 유독 Ubuntu 운영체제에서만 cron 활용 디렉토리에서 직접작성한 스크립트만 실행하지 않는일이 생겼다.

OS : Ubuntu 16.04 LTS 
# cat /etc/crontab
# m h dom mon dow user command
55 * * * * root    cd / && run-parts –report /etc/cron.hourly
 

다행히 원인은 man 페이지만으로도 충분히 문제는 풀렸다.

# man run-parts

…………………………..
……………………………
If neither the –lsbsysinit option nor the –regex option is given then the names must consist entirely of ASCII upper- and lower-case letters, ASCII digits, ASCII underscores, and ASCII minus-hyphens.
“번역하자면…. ascii 코드로 된 대/소문자, 숫자, 밑줄, 하이픈만 실행스크립트 이름으로 사용할수 있다”

/etc/cron.hourly 안에 .sh 파일형태로 저장한게 문제가 되었던거다. 
※ 실행스크립튼 대/소문자, 숫자, 밑줄, 하이픈만 가능

/etc/cron.hourly# ls
test_script.sh
# run-parts --list /etc/cron.hourly/
--> 아무런 리스트가 출력되지 않는다.

/etc/cron.hourly# ls
test_script.sh
# run-parts --list /etc/cron.hourly/
/etc/cron.hourly/test_script.sh

 

또 한가지  CentOS / RHEL 계열에서는 특이점이 없었다.
똑같이 CRON 으로 run-parts 명령어를 이용하고 있음에도….여기서는 잘실행되고 있는것이다.

CentOS 에서는 .sh 파일도 출력이된다.  이건 run-parts 에서 지원하는 옵션이 서로 다른걸 봐서는 운영체제에서 지원하는 run-parts 버전문제로 보여진다. 

OS : CentOS 7.X

# run-parts --list /etc/cron.hourly/
/etc/cron.hourly/0anacron
/etc/cron.hourly/test_script.sh

# run-parts
Usage: run-parts [--list | --test] <dir>

 

OS : Ubuntu 16.04

# run-parts --help

Usage: run-parts [OPTION]... DIRECTORY
--test print script names which would run, but don't run them.
--list print names of all valid files (can not be used with --test)
-v, --verbose print script names before running them.
--report print script names if they produce output.
--reverse reverse execution order of scripts.
--exit-on-error exit as soon as a script returns with a non-zero exit code.
--lsbsysinit validate filenames based on LSB sysinit specs.
--new-session run each script in a separate process session
--regex=PATTERN validate filenames based on POSIX ERE pattern PATTERN.
-u, --umask=UMASK sets umask to UMASK (octal), default is 022.
-a, --arg=ARGUMENT pass ARGUMENT to scripts, use once for each argument.
-V, --version output version information and exit.
-h, --help display this help and exit. 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다