내 sysadmin이 내 컴퓨터에 많은 cron 작업을 설정했습니다. 몇시에 예정된 일정을 정확히 알고 싶습니다. 그 목록을 어떻게 얻을 수 있습니까?
내 sysadmin이 내 컴퓨터에 많은 cron 작업을 설정했습니다. 몇시에 예정된 일정을 정확히 알고 싶습니다. 그 목록을 어떻게 얻을 수 있습니까?
답변:
리눅스 시스템 설정 방법에 따라 다음을 살펴볼 수 있습니다.
/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/*
) 및 내가 잊어 버린 다른 사람들을 가질 수 있습니다 .
/etc/cron.daily
. 그 daily
파일 은 어떻게 작동합니까? 매일 몇시에 일을합니까? 내 컴퓨터에서는 정오 쯤에 실행되는 것처럼 보이지만 sysadmin에게 대신 자정으로 변경하는 방법을 알려주고 싶습니다.
/etc/crontab
예를 들어 Ubuntu 시스템에서 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
오전 6시 25 분을 의미합니다.
cronie
데몬은의 구성을 사용하여 관리합니다 /etc/anacrontab
.
/var/cron
있습니다.
대부분의 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
.
root
사용자) 으로 호출해야 합니다.
cronie
Fedora 및 RHEL6에서 제공되는 것처럼을 참조하지 말고 /etc/crontab
대신 사용하십시오 /etc/anacrontab
. 구성 파일에서 이것을 참조하지 않는 실제 구현에 대해서는 잘못 생각할 수 있습니다. (그런데 저도
주어진 사용자에 대한 모든 크론을 나열합니다.
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
root
하거나apache
또는 무엇이든, 그러나 사람은 해야 사용/etc/crontab
또는 (더 나은, 대부분의 배포판에)/etc/cron.d
및/etc/cron.[timeframe]
.