내 컴퓨터에서 모든 예약 된 cron 작업 목록을 얻는 방법은 무엇입니까?


201

내 sysadmin이 내 컴퓨터에 많은 cron 작업을 설정했습니다. 몇시에 예정된 일정을 정확히 알고 싶습니다. 그 목록을 어떻게 얻을 수 있습니까?


3
이것은 질문에 대한 답변이 아니라 모범 사례에 대한 메모입니다. 하나는 에 대한 사용자 별 cron 작업으로 다음을 구성 root하거나 apache또는 무엇이든, 그러나 사람은 해야 사용 /etc/crontab또는 (더 나은, 대부분의 배포판에) /etc/cron.d/etc/cron.[timeframe].
mattdm


나는에서 유용한 정도이 문제를 자동화하는 스크립트를 게시 한 - stackoverflow.com/questions/134906/... 그것은 완벽 하진하지만 아마도 요구의 90 %를 커버한다. bash로 작성하지 않는 것이 좋은 예입니다.
데이비드 콜리어

답변:


143

리눅스 시스템 설정 방법에 따라 다음을 살펴볼 수 있습니다.

  • /var/spool/cron/* (사용자 크론 탭)
  • /etc/crontab (시스템 전체 crontab)

또한 많은 배포판에는 다음이 있습니다.

  • /etc/cron.d/* 이러한 구성은 다음과 같은 구문을 갖습니다. /etc/crontab

  • /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly,/etc/cron.monthly

디렉토리 이름에 따라 매시간, 매일, 매주 또는 매월 실행되는 실행 파일이 포함 된 디렉토리입니다.

/var/spool/at/*외에도 직장 (확인 ), anacron ( /etc/anacrontab/var/spool/anacron/*) 및 내가 잊어 버린 다른 사람들을 가질 수 있습니다 .


4
고마워,에서 찾았습니다 /etc/cron.daily. 그 daily파일 은 어떻게 작동합니까? 매일 몇시에 일을합니까? 내 컴퓨터에서는 정오 쯤에 실행되는 것처럼 보이지만 sysadmin에게 대신 자정으로 변경하는 방법을 알려주고 싶습니다.
Frank

5
cron.daily는 /etc/crontab예를 들어 Ubuntu 시스템에서 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )오전 6시 25 분을 의미합니다.
Kowh

cron.daily는 더 많은 데이터 포인트를 원한다면 RHEL5 시스템의 / etc / crontab에서도 호출됩니다.
jsbillings 2013

최신 페도라 (아마도 RHEL6-아직 보지 않았 음)에서 cronie데몬은의 구성을 사용하여 관리합니다 /etc/anacrontab.
mattdm

때로는 그것도 /var/cron있습니다.
CMCDragonkai 2016 년

135

대부분의 Crons (예 : Vixie-Cron -Debian / Ubuntu 기본값, Cronie-Fedora 기본값, Solaris Cron ...)를 사용하면 다음을 통해 현재 사용자에 대한 예약 된 cron 작업 목록을 얻을 수 있습니다.

$ crontab -l

또는 다른 사용자를 통해

# crontab -l -u juser

모든 사용자에 대한 crontab을 얻으려면 모든 사용자를 반복하고이 명령을 호출하면됩니다.

또는 스풀 파일을 찾아 볼 수 있습니다. 일반적으로, /var/spool/cron예를 들어 vcron 다음 디렉토리에 저장됩니다 .

/var/spool/cron/crontabs

시스템 전체 crontab을 통해 작업을 구성 할 수있는 루트 사용자를 제외한 모든 사용자의 구성된 crontab을 모두 포함합니다.

/etc/crontab

함께 cronie (페도라 / CentOS는 기본적)하는이 .d뿐만 아니라 시스템 cron 작업에 대한 스타일 설정 디렉토리 :

/etc/cron.d

항상 그렇듯이 .d디렉토리는 다른 패키지의 일부인 구성 항목의 유지 관리를 단순화합니다.

편의상 대부분의 배포판은 링크 / 저장된 스크립트가 주기적으로 실행되는 디렉토리를 제공합니다.

/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

이러한 스크립트의 적시 실행은 일반적으로 run-parts시스템 crontab의 항목 또는 anacron을 통해 관리됩니다 .

함께 Systemd (페도의 예에 CentOS 7, ...) 주기적 작업 실행은 추가로 구성 할 수있는 타이머 유닛 . 활성화 된 시스템 타이머는 다음을 통해 표시 될 수 있습니다.

$ systemctl list-timers

루트 이외의 사용자에게는 타이머가 구성된 위치에서 실행되는 사용자 시스템 인스턴스가있을 수 있습니다. 예를 들어 Fedora에서는 기본적으로 현재 로그인 한 각 사용자에 대해 사용자 시스템 인스턴스가 시작됩니다. 다음을 통해 인식 할 수 있습니다.

$ ps aux | grep 'systemd[ ]--user'

이러한 사용자 타이머는 다음을 통해 나열 될 수 있습니다.

$ systemctl --user list-timers

list-timers명령 을 실행하는 대안 *.timer은 일반적인 시스템 및 사용자 시스템 구성 디렉토리에서 타이머 단위 파일 (패턴 :) 및 이들에 대한 기호 링크를 검색하는 것입니다.

$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
              -o -path '/home/*/.config/systemd/*' ')' \
      -name '*.timer'  2> /dev/null

(일반 서비스 단위와 마찬가지로 타이머 시스템은 오른쪽 systemd config 디렉토리에 기호 링크를 작성하여 활성화됩니다.)

또한보십시오:


나는 공감하지 않았다. 그러나 방금 시도했지만 crontab -l -u root(아래에서 실행하려는 cronjob을 알고 있기 때문에 root) 사용할 권한이 없습니다 -u.
Frank

3
그런 다음 충분한 권한 (예 : root사용자) 으로 호출해야 합니다.
maxschlepzig

2
아직 완료되지 않았습니다. 일부 버전의 cron은 / etc / crontab에서 호출 된 도우미 프로그램없이 /etc/cron.d 및 /etc/cron.{daily,hourly,monthly,weekly}에서 작업을 실행합니다.
mattdm

2
@maxschlepzig-항상 그런 것은 아닙니다. 그리고 문제는 " 모든 크론 작업 목록을 얻는 방법 "입니다. "음, 여기에 몇 가지가 있습니다"라는 대답은 답이 아닙니다.
mattdm

1
@maxschlepzig — cronieFedora 및 RHEL6에서 제공되는 것처럼을 참조하지 말고 /etc/crontab대신 사용하십시오 /etc/anacrontab. 구성 파일에서 이것을 참조하지 않는 실제 구현에 대해서는 잘못 생각할 수 있습니다. (그런데 저도
공감

5

주어진 사용자에 대한 모든 크론을 나열합니다.

crontab -u 사용자 이름 -l;

모든 사용자의 모든 크론을 나열하려면

슈퍼 유저로 실행

#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do 
crontab -l -u $user;
done

1
OP는 모든 크론 작업 목록을 요청합니다 .
Drav Sloan

1
어떤 이유로 /etc/cron.d/ 작업이 표시되지 않습니다.
jamshid 2011

작동하지 않습니다. "www-data에 대한 crontab 없음". 하지만 사용자 이름 www-data는 존재합니다.
mishanon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.