내 시스템 관리자가 내 컴퓨터에 여러 크론 작업을 설정했습니다. 정확히 언제 예정되어 있는지 알고 싶습니다. 이 목록을 어떻게 얻을 수 있나요?
답변1
대부분의 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
그리고절친한 친구.d
(Fedora/CentOS의 기본값) 시스템 cron 작업을 위한 스타일 구성 디렉터리 도 있습니다 .
/etc/cron.d
(언제나 그렇듯이 이 .d
디렉토리는 다른 패키지에 속하는 구성 항목의 유지 관리를 단순화합니다.)
편의를 위해 대부분의 배포판에서는 링크/저장 스크립트가 정기적으로 실행되는 디렉터리도 제공합니다. 예:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
이러한 스크립트는 일반적으로 run-parts
시스템 crontab의 항목을 통해 또는 다음을 통해 적시에 실행됩니다.나크론.
그리고체계(예: Fedora, CentOS 7...) 정기적인 작업 실행은 다음을 통해 구성할 수도 있습니다.타이머 장치. 활성화된 시스템 타이머는 다음을 통해 표시될 수 있습니다.
$ systemctl list-timers
루트가 아닌 사용자는 타이머가 구성된 사용자 systemd 인스턴스를 실행할 수 있습니다. 예를 들어, Fedora에서는 현재 로그인한 각 사용자에 대해 기본적으로 사용자 systemd 인스턴스가 시작됩니다. 다음을 통해 식별할 수 있습니다.
$ 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
(일반 서비스 장치와 마찬가지로 올바른 시스템 구성 디렉터리에 심볼릭 링크를 생성하여 타이머 장치를 활성화합니다.)
또한보십시오:
답변2
Linux 시스템 설정 방법에 따라 다음을 확인할 수 있습니다.
/var/spool/cron/*
(사용자 crontab)/etc/crontab
(시스템 전체 crontab)
또한 많은 배포판에는 다음이 포함됩니다.
/etc/cron.d/*
이러한 구성은 동일한 구문을 갖습니다./etc/crontab
/etc/cron.hourly
,/etc/cron.daily
,/etc/cron.weekly
,/etc/cron.monthly
이는 디렉터리 이름에 따라 매시간, 매일, 매주 또는 매월 실행되는 실행 파일이 포함된 단순한 디렉터리입니다.
게다가 at jobs(확인 /var/spool/at/*
), anacron( /etc/anacrontab
및 /var/spool/anacron/*
) 및 아마도 내가 잊어버린 다른 항목을 가질 수 있습니다.
답변3
특정 사용자의 모든 크론을 나열합니다.
crontab -u 사용자 이름 -l;
모든 사용자에 대한 모든 cron 나열
슈퍼유저로 실행
#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do
crontab -l -u $user;
done
답변4
모든 cron 작업을 나열할 수 있습니다(저는 출력의 위치를 나열하기 위해 more를 사용합니다).
sudo sh -c 'more /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/* 2>/dev/null' | less
또는 코멘트 없이:
sudo sh -c 'more /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/* 2>/dev/null' \
| grep "^\s*[^#]"
crontab에는 cron.hourly, Daily, Weekly 및 Monthly에서 스크립트를 실행하기 위한 항목이 있습니다. 다음을 나열할 수 있습니다.
ls /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly