시스템 관리자가 내 컴퓨터에서 여러 크론 작업을 설정했습니다. 정확히 어떤 작업이 몇 시에 예약되어 있는지 알고 싶습니다. 그 목록을 어떻게 얻을 수 있나요?
Linux 시스템 설정 방식에 따라 살펴볼 수 있습니다:
또한 많은 배포판에 있습니다:
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/*
) 및 제가 잊어버린 다른 디렉터리가 있을 수 있습니다.
대부분의 크론(예: 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 디렉터리에 심볼릭 링크를 생성하여 활성화됩니다.)
참조:
지정된 사용자에 대한 모든 크론을 나열합니다.
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