내 컴퓨터에서 예약된 모든 크론 작업의 목록을 얻으려면 어떻게 해야 하나요?

시스템 관리자가 내 컴퓨터에서 여러 크론 작업을 설정했습니다. 정확히 어떤 작업이 몇 시에 예약되어 있는지 알고 싶습니다. 그 목록을 어떻게 얻을 수 있나요?

질문에 대한 의견 (3)
해결책

Linux 시스템 설정 방식에 따라 살펴볼 수 있습니다:

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

또한 많은 배포판에 있습니다:

  • etc/cron.d/*도 있습니다. 이러한 구성은/etc/crontab`과 동일한 구문을 갖습니다.

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

이들은 단순히 디렉토리 이름에 따라 매시간, 매일, 매주 또는 매월 실행되는 실행 파일을 포함하는 디렉터리입니다.

그 외에도 작업(/var/spool/at/* 확인), 아나크론(/etc/anacrontab/var/spool/anacron/*) 및 제가 잊어버린 다른 디렉터리가 있을 수 있습니다.

해설 (7)

대부분의 크론(예: Vixie-Cron - 데비안/우분투 기본값, 크로니 - 페도라 기본값, 솔라리스 크론...)을 사용하면 현재 사용자에 대해 예약된 크론 작업 목록을 다음을 통해 확인할 수 있습니다:

$ crontab -l

또는 다른 사용자의 경우

# crontab -l -u juser

모든 사용자에 대한 크론탭을 가져오려면 모든 사용자를 반복하여 이 명령을 호출하면 됩니다.

또는 스풀 파일을 조회할 수도 있습니다. 일반적으로 /var/spool/cron 아래에 저장됩니다(예: vcron의 경우 다음 디렉터리).

/var/spool/cron/crontabs

에 있는 시스템 전체 크론탭을 통해 작업을 구성할 수 있는 루트 사용자를 제외한 모든 사용자의 구성된 크론탭이 모두 들어 있습니다.

/etc/crontab

cronie]1(Fedora/CentOS의 기본값)를 사용하면 시스템 크론 작업을 위한 .d 스타일의 구성 디렉터리도 있습니다:

/etc/cron.d

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

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

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

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

Systemd]3(예: Fedora, CentOS 7 등)를 사용하면 타이머 단위를 통해 주기적인 작업 실행을 추가로 구성할 수 있습니다. 활성화된 시스템 타이머는 다음을 통해 표시할 수 있습니다:

$ systemctl list-timers

루트 외에 다른 사용자도 타이머가 구성된 곳에서 사용자 시스템드 인스턴스를 실행할 수 있다는 점에 유의하세요. 예를 들어, Fedora에서는 기본적으로 현재 로그인한 각 사용자에 대해 사용자 systemd 인스턴스가 시작됩니다. 이러한 인스턴스는 다음을 통해 인식할 수 있습니다:

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

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

$ systemctl --user 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 디렉터리에 심볼릭 링크를 생성하여 활성화됩니다.)

참조:

해설 (8)

지정된 사용자에 대한 모든 크론을 나열합니다.

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
해설 (3)