셸 의 eval 과 crontab 명령 에 대해 이야기 합 니 다.

4385 단어 shellevalcrontab
eval
eval 은 다음 명령 을 두 번 스 캔 합 니 다.첫 번 째 스 캔 후 명령 이 일반 명령 이 라면 이 명령 을 수행 합 니 다.명령 에 변수의 간접 인용 이 포함 되 어 있 으 면 간접 인용 의 미 를 보장 합 니 다.즉,eval 명령 은 먼저 명령 행 을 스 캔 하여 모든 교환 을 한 다음 에 이 명령 을 실행 할 것 이다.따라서 eval 명령 은 스 캔 으로 기능 을 수행 할 수 없 는 변수 에 적 용 됩 니 다.
eval 다음 두 단계 수행
     첫 번 째,실행 변수 교체,C 언어 와 유사 한 매크로 대체
     두 번 째,교 체 된 명령 문자열 을 실행 합 니 다.
밤:
1.  "Please move on!"라 는 내용 의 test 라 는 파일 이 있 습 니 다.cat test문자열 변 수 를 정의 합 니 다.echo 명령 으로 이 변 수 를 참조 하면 이 문자열 을 직접 인쇄 하고 eval 로 인쇄 합 니 다.  파일 test 의 내용 을 출력 합 니 다!

이것 은 eval 명령 을 실행 하여 첫 번 째 스 캔 을 통 해 변 수 를 바 꾸 었 고 두 번 째 스 캔 은 이 문자열 에 포 함 된 명령cat test을 실 행 했 기 때 문 입 니 다.
2.셸 스 크 립 트 에 전 달 된 마지막 인자 가 져 오기
  셸 에 전 달 된 매개 변수 개 수 를 알 고 있 으 면 마지막 매개 변 수 를 출력 하려 면echo을 사용 하여 직접 표시 할 수 있 습 니 다.예 를 들 어 이 예 에서 입력 한 매개 변 수 는 10,11,12 총 3 개의 매개 변수 가 있 습 니 다.명령:echo$3 을 사용 할 수 있 습 니 다.
  그러나 몇 개의 인자 가 있 는 지 모 르 고 마지막 인 자 를 출력 하려 면 셸 스 크 립 트 에 전 달 된 매개 변수 갯 수 $$# ( $# 를 사용 하여 마지막 인 자 를 출력 할 생각 을 할 수 있 습 니 다.
  명령 을 사용 하면 echo "\$$#"  결 과 는 우리 가 원 하 는 12 가 아니 라 3 달러 입 니 다.
  eval 명령 을 사용 하면 우리 의 기대 에 도달 할 수 있 습 니 다.  eval echo "\$$#"     결 과 는 12.
셸 스 크 립 트 내용:
 
스 크 립 트 파일 실행:

3.예 를 들 면:

[admin@localhost test]$ G='|'
[admin@localhost test]$ eval ls $G wc -l
첫 번 째 변수 교체eval ls | wc -l  제2 부 재 집행 명령 결과 
주의:
     1.eval 은 함수 처리 결 과 를 얻 을 수 없습니다.
     2.eval 내장 은 의미 가 없습니다.다른 언어 에서eval(eval("code")) 를 통 해 실행 할 수 있 습 니 다.(동적 으로 생 성 된 code 의 반환 을 실행 합 니 다)셸 에서 eval 은 뒤의 eval 명령 을 명령 문자열 로 간단하게 실행 하기 때문에 내장 역할 을 잃 었 습 니 다.내장 은 명령 으로 대체 되 었 습 니 다.
crontab
crond 는 Liux 에서 특정한 작업 을 주기 적 으로 수행 하거나 특정한 사건 을 처리 하 기 를 기다 리 는 데 몬 입 니 다.시스템 은 crond 프로 세 스 를 자동 으로 시작 합 니 다.crond 프로 세 스 는 매 분 마다 실행 할 작업 이 있 는 지 정기 적 으로 확인 합 니 다.실행 할 작업 이 있 으 면 자동 으로 이 작업 을 수행 합 니 다.
crontab 파일 은 cron 데 몬 을 보 내 는 일련의 작업 과 명령 을 포함 합 니 다.모든 사용 자 는 자신의 crontab 파일 을 가 질 수 있 습 니 다.또한 운영 체 제 는 전체 시스템 에 대한 crontab 파일 을 저장 합 니 다.이 파일 은 보통/etc 또는/etc 아래 의 하위 디 렉 터 리 에 저장 되 며,이 파일 은 시스템 관리자 만 수정 할 수 있 습 니 다.
crontab 명령 은 시스템 주기 적 으로 실 행 된 명령 을 설정 하 는 데 사 용 됩 니 다.이 명령 은 표준 입력 장치 에서 명령 을 읽 고 나중에 읽 고 실행 할 수 있 도록'crontab'파일 에 저장 합 니 다./etc/crontab 파일 은 시스템 작업 스케줄 링 의 설정 파일 입 니 다.
인자:
      -l 표준 출력 에 현재 crontab 를 표시 합 니 다.
      -r 현재 crontab 파일 을 삭제 합 니 다.
      -e.현재 crontab 파일 을 편집 하려 면 VISUAL 또는 EDITOR 환경 변수 가 가리 키 는 편집 기 를 사용 하 십시오.

사용 형식:
  *      *   *   *   *  command
나누다  시일 과 월 주  명령 하 다.
1 열 은 분 0~59(분당*또는*/1 로 표시)
2 열 은 시간 0~23 을 나타 낸다.
3 열 은 날짜 1~31 을 나타 낸다.
4 열 은 달 1~12
5 열 표지 번 호 는 0~6(0 은 일요일 을 나타 낸다)
6 열 은 실행 해 야 할 명령 을 표시 합 니 다.
숫자 외 에 도 몇 개의 특수 한 기호 가 있 는데 그것 이 바로'*','/'와'-',',','*는 모든 수치 범위 내의 숫자 를 대표 한다.'/'각 의 미 를 나타 내 고'/5'는 5 개의 단 위 를 나타 낸다.'-'는 특정한 숫자 에서 특정한 숫자 까지','몇 개의 분 산 된 숫자 를 나눈다.
crontab 파일 의 사용 예:

#   21:30   apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
#  1、10、22  4 : 45  apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
#   、   1 : 10  apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
#  18 : 00 23 : 00    30    apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
#     11 : 00 pm  apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
#  11    7   ,       apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
#      apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
#   4         11   apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
#     4   apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
#          
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44
이상 은 셸 의 eval 과 crontab 명령 에 관 한 모든 내용 입 니 다.본 논문 의 내용 이 여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 댓 글 을 달 아 토론 하 시기 바 랍 니 다.

좋은 웹페이지 즐겨찾기