나는 cron을 이해한다고 생각했지만 그렇지 않은 것 같습니다.
Red Hat Enterprise Linux v.4에서 cron을 사용하고 있습니다.
cron 작업을 /etc/cron.d에 저장하여 구성합니다. 그들은 모두 루트에 의해 소유됩니다. (.cron 파일의 cron 사양에 뿌리를 두고 있음)
여기에 저장된 경우 인코딩이 올바른 경우 작업이 실행됩니다.
그러나 루트로 로그인하더라도
crontab -l
작업이 실제로 실행 중이더라도 /etc/cron.d에는 나열되지 않습니다.
내가 이해하지 못하는 것은 무엇입니까? 내가 이것에 대해 수행한 모든 웹 검색은 이것이 crontab -l
실행할 명령임을 알려줍니다 . 그러나 실행 중인 모든 작업이 나열되지는 않습니다.
고쳐 쓰다: 명확하지 않기 때문에 내 질문은 실제로
특정 사용자에 대해 실행되도록 예약된 모든 크론 작업을 볼 수 있는 명령은 무엇입니까?
이것이 순서라고 말하는 많은 출처를 찾을 수 있지만 crontab -l
분명히 그렇지 않습니다.
답변1
에서 언급했듯이수동
crontab -l
현재 사용자의 crontab 나열
/var/spool/cron/root
당신이 루트라면.
crontab -u other -l
다른 일부 사용자의 경우. crontab을 다음과 같이 편집하세요.
crontab -e
형식은
#.---------------- minute (0 - 59)
#| .------------- hour (0 - 23)
#| | .---------- day of month (1 - 31)
#| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
#| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
#| | | | |
#* * * * * the command to be executed
0 */2 * * * /every2h.sh
게다가
find /etc/cron* -type f
크론 작업을 배포하는 데 사용되므로 권장되지 않습니다. 이러한 파일은 모두 루트로 실행되며 기본적으로 다른 사용자가 쓸 수 없습니다.
답변2
옵션에 따라 선택적으로 사용자 이름을 추가 man crontab
할 수 있습니다 -u
.
사용자의 예약된 작업을 표시하는 방법은 다음과 같습니다.
crontab -l -u username
그리고 이를 사용하려면 슈퍼유저 권한이 필요합니다. 사용자가 아닌 경우 root
다음과 같이 사용하세요.
sudo crontab -l -u username
man crond
그리고 및 에 따르면 /etc/crontab
작업을 소유한 사용자를 표시하는 명령이 없습니다. 작업 소유자는 다음 구조의 파일에 저장됩니다.
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
따라서 각 파일에서 사용자 이름을 찾거나 bash 스크립트를 작성하여 선택하고 나열해야 한다고 생각합니다.
또한 다음 질문을 확인하세요./etc/cron.d와 /var/spool/cron의 차이점은 무엇입니까?
답변3
cat /etc/cron.d/*
crontab -l
crontab을 통해 배포된 프로젝트와 동일한 종류의 목록이 배포된 프로젝트에 대해 표시되는 것 같습니다 .