[완료] 옵션이 포함된 명령어에 alias 설정이 가능한가요?
글쓴이: 허성규 / 작성시간: 월, 2009/02/23 - 5:07오후
안녕하세요~!
시스템 관리한지 이제 겨우 1년 3개월된 풋내기 입니다. ㅋㅋ
오늘 매우 식은땀 흐르는 경험을 했는데요, cron 관련입니다.
1년 3개월동안 이런 일은 없었는데, 오늘 웹개발자 한명이 개발자 계정에 등록된 cron을
crontab -r 명령으로 깨끗하게 날려주시는 일이 발생하였습니다.
때마침 cron 목록도 백업을 안하고 있던차에, 매우 곤란해 하다 문득 작년 12월 31일
IDC이전 하기 직전에 모든 서버의 cron 리스트를 한번 백업 받아놓은게 있다는것을 기억해 내고는
그걸로 무사히 복구는 시켜 놨습니다.
복구는 했지만 앞으로 또 이런 일이 일어나지 않으리라는 보장이 없고, 불행히도 r키는 e키 바로 옆에 붙어 있죠..
그래서 crontab -r 명령을 원천적으로다가 봉쇄를 해 볼까 합니다.
alias 설정을 해 보려 했는데 옵션이 끼이니까 이거 쉽지 않네요.
이와 관련된 지식이나 노하우가 있으시다면 작은 가르침을 내려 주세요~
Forums:
가능합니다.
http://kldp.org/node/42492
위의 글 참조.
===== ===== ===== ===== =====
knight2000 of SALM.
SALM stood for SALM Ain't a Life Model.
SALM is not the life model, but SALM is just the life.
===== ===== ===== ===== =====
knight2000 of SALM.
SALM stood for SALM Ain't a Life Model.
SALM is not the life model, but SALM is just the life.
윽..
알려주신 페이지를 참고하여 이리저리 시도를 많이 해 봤는데, 쉽지가 않군요.
crontab -r 명령을 echo "-r 옵션은 사용 하실 수 없습니다." 메시지 출력하는걸로 하려는데,
"-r" 이녀석때문에 골머리가 아프군요. ㅋ
dell mini9 에 gentoo stage1 부터 깔기.
.
.
-------------------------------------------------------------------------------
이 댓글(comment)의 수정 및 삭제를 위해 이 글에 답글(reply)을 쓰지 말아 주십시요.
의견이 있으시면 원 글에 댓글(comment)로 써 주세요.
alias crontab='crontab
alias crontab='crontab -i'
이걸로 대충 해결되는 문제 아닐까요?
-r 옵션만 막고 싶어서요.
개발자들이 -r 옵션만 사용하지 못하도록 추가적인 설정을 하고 싶습니다.
개발자들도 각자의 cronjob을 등록하기 때문에 -e, -l 옵션등은 사용을 해야 하거든요.
alias crontab -r = echo "exit"; 또는 function crontab -r {} 등은 안되더라구요.
' , " 로 감아줘두 안되구..
function 을 잘 이용하면 될것두 같은데..
shell 스크립트를 좀 공부해 봐야 겠네요. ㅋ
dell mini9 에 gentoo stage1 부터 깔기.
i 옵션을 쓰더라도
i 옵션을 쓰더라도 e나 l을 쓸 수 없는 것이 아닙니다.
crontab -e 나 crontab -ie 는 똑같습니다.
다만 crontab -ir 이 되면 정말로 지울거냐고 물어본다는 점이 달라지는 것이지요.
강제로 막을 수는 없지만 실수로 지우는 것을 막는 목적에는 i 옵션으로 충분합니다.
간단한게 있는데 멀리 생각하신다는 느낌인데요......
i 옵션은 없네요.. ㅠㅠ
gentoo 사용중입니다.. ㅋ
# crontab -i
crontab: invalid option -- i
crontab: usage error: unrecognized option
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
dell mini9 에 gentoo stage1 부터 깔기.
버전이 다른가요?
# crontab -i
crontab: usage error: file name must be specified for replace
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
# rpm -qf `which crontab`
cronie-1.2-7.fc10.x86_64
cron도 여러가지
cron도 여러가지 종류가 있네요.
저도 gentoo를 사용해서 한번 cron의 종류를 보니...
anacron, bcron, cronbase, dcron, fcron, incron, ...
종류도 참 많네요.
보통 gentoo를 설치하면 설치문서를 많이 참고하는데 설치문서에는 vixie-cron을
설치할 것을 권하고 있습니다.
아마 gentoo에서 설치한 cron에는 해당 옵션이 없는게 아닌가 생각되네요.
필요하면 바꿀 수는 있을텐데... 어느 cron에 -i옵션이 있는지는 저도 잘 모르겠네요.
------------------------------
좋은 하루 되세요.
------------------------------
좋은 하루 되세요.
vixie-cron 사용중입니다.
gentoo 이외의 리눅스를 사용 안한지 오래 되다 보니
cron 패키지가 여러개 있다는걸 잠시 망각했네요.
# epm -qi vixie-cron
Name : vixie-cron
Version : 4.1
Release : 10 Slot: 0
Install date: Fri Feb 1 09:10:40 2008 Build Host: web0
Group : sys-process License: as-is
Size : 96539
Packager : vapier
URL : ftp://ftp.isc.org/isc/cron/
Summary : Paul Vixie's cron daemon, a fully featured crond implementation
vixie-cron 에서는 i 옵션이 지원되지 않네요..
dell mini9 에 gentoo stage1 부터 깔기.
지운 댓글
잘못 올린 댓글인데 지울 수가 없어서...
스크립트 하나
스크립트 하나 만드시고 크론 명령어 이름바꾸고 스크립트로 연결되게 하시는건??
넘 무식한가 ㅠㅠ
저도 생각은 해 봤습니다만..
나쁘지는 않은 방법이지만, 개발자가 접속하는 서버가 많은데, 명령어 이름 바꾸고 crontab 이라는 스크립트를 만드는건
추후 패키지관리에서 (업데이트등..) 더욱 번거로울 것 같아 시도하지 않았습니다. ㅎ
dell mini9 에 gentoo stage1 부터 깔기.
펄 스크립트를
펄 스크립트를 이용한 방법
1. 다음과 같이 forbid_r_flag.pl 을 작성함.
2. /usr/local/sbin 등의 루트의 PATH에 forbid_r_flag.pl 을 복사하고, 실행권함을 줌.
3. alias 를 적당한 곳에 설정.
--------------------Signature--------------------
Light a candle before cursing the darkness.
은빛돋움/Pfed 프로젝트 : http://sites.google.com/site/unbitfonts/
감사합니다.
역시 스크립트 언어를 좀 공부해야 겠군요~
(^^) (__)
dell mini9 에 gentoo stage1 부터 깔기.
일 좀 있을 것 같은
일 좀 있을 것 같은 bash
/etc/profile.d/crontab_r.sh 정도로 두시면 되겠고요,
재귀적인 호출을 막으려다보니 /usr/bin/crontab 이라 적어주게됐는데,
이거.. bash 에 옵션이 있던가 명령이 있던가 지시자가 있을 겁니다.
내부 명령이 아니라 외부명령을 우선하게하는.
찾기 귀찮아서 그냥 패스를 지정해버렸습니다.
일반적인 경우는 아닙니다.
제대로하려면 getopt 를 사용해서 개별해석해야하지만,
crontab 자체가 -lr 처럼 옵션을 붙여쓰는 것을 지원하지 않기에 그냥 패턴만 찾아도 될 것 같아 저리했습니다.
OTL
명령 맨 앞에 \를
명령 맨 앞에 \를 입력하면 외부명령을 실행합니다.
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
댓글 달기