유닉스 시스템에서 모든 사용자의 모든 cron 작업 목록을 확인하는 방법
모든 사용자의 모든 cron 작업을 나열하는 방법은 다음과 같습니다.
crontab -u <사용자 이름> -l
위 명령은 지정된 사용자(<사용자 이름>)의 crontab 파일을 표시합니다.
crontab
: cron 작업 관리 명령-u <사용자 이름>
: crontab 파일을 소유한 사용자 지정-l
: 목록(list) 옵션, crontab 파일의 내용 출력
- 위 명령을 모든 사용자에 대해 반복합니다. 모든 사용자의 cron 작업을 나열하려면 위 명령을 각 사용자마다 반복해야 합니다. 사용자 목록을 파일에 저장한 경우 다음과 같은 스크립트를 사용하여 모든 사용자에 대해 명령을 자동으로 실행할 수 있습니다.
#!/bin/bash
for user in $(cat /etc/passwd); do
crontab -u $user -l
done
위 스크립트는 /etc/passwd
파일에 있는 모든 사용자에 대해 crontab -u $user -l
명령을 실행합니다.
주의:
- crontab 파일은 일반적으로
/var/spool/cron
디렉토리에 저장됩니다. - 일부 시스템에서는 crontab 파일이 다른 위치에 저장될 수 있습니다.
- crontab 파일을 편집하려면
crontab -e
명령을 사용할 수 있습니다.
참고:
- root 권한으로 작업할 때는 주의해야 합니다. 실수로 잘못된 명령을 실행하면 시스템을 손상시킬 수 있습니다.
- crontab 파일을 편집하기 전에 백업하는 것이 좋습니다.
- 다른 사용자의 crontab 파일을 편집할 수 있는 권한이 있는지 확인하십시오.
예제 코드
#!/bin/bash
# 모든 사용자 목록을 /etc/passwd 파일에 저장합니다.
users=$(cat /etc/passwd)
# 각 사용자에 대해 crontab -u $user -l 명령을 실행합니다.
for user in $users; do
crontab -u $user -l
echo
done
이 스크립트를 실행하려면 다음 명령을 사용하십시오.
sudo bash cron_list_all.sh
위 명령은 cron_list_all.sh
스크립트를 root 권한으로 실행합니다.
설명:
#!/bin/bash
: 스크립트가 bash 셸에서 실행될 것을 나타냅니다.users=$(cat /etc/passwd)
:/etc/passwd
파일에 있는 모든 사용자의 이름을users
변수에 저장합니다.for user in $users; do
:users
변수에 저장된 각 사용자에 대해 루프를 반복합니다.crontab -u $user -l
: 지정된 사용자($user)의 crontab 파일을 표시합니다.echo
: 각 사용자의 cron 작업 목록 다음에 빈 행을 추가합니다.done
:for
루프를 종료합니다.
- 이 스크립트를 실행하려면 root 권한이 필요합니다.
유닉스 시스템에서 모든 사용자의 모든 cron 작업 목록을 확인하는 대체 방법
awk 및 getent 사용:
다음 명령은 getent
및 awk
를 사용하여 모든 사용자의 cron 작업을 하나의 목록으로 출력합니다.
getent passwd | cut -d: -f1 | while read user; do crontab -u $user -l | awk '{print $1,$2,$3,$4,$5,$6,$7}'; done
getent passwd
:/etc/passwd
파일에서 사용자 이름 목록을 가져옵니다.cut -d: -f1
: 출력에서 사용자 이름만 추출합니다.while read user; do
: 각 사용자 이름에 대해 루프를 반복합니다.- `awk '{print $1,$2,$3,$4,$5,$6,$7}': crontab 파일의 각 행에서 첫 번째 7개 필드를 출력합니다.
find 및 crontab 사용:
다음 명령은 find
및 crontab
을 사용하여 모든 사용자의 crontab 파일을 찾아 내용을 출력합니다.
find /var/spool/cron/ -type f -exec crontab -l {} \;
find /var/spool/cron/ -type f
:/var/spool/cron
디렉토리에서 모든 일반 파일(crontab 파일)을 찾습니다.-exec crontab -l {} \;
: 각 crontab 파일에 대해crontab -l
명령을 실행하여 내용을 출력합니다.
Python 스크립트 사용:
다음은 Python 스크립트의 예시입니다. 이 스크립트는 모든 사용자의 cron 작업을 하나의 목록으로 출력합니다.
import subprocess
def get_crontab(username):
process = subprocess.Popen(['crontab', '-u', username, '-l'], stdout=subprocess.PIPE)
output, _ = process.communicate()
return output.decode('utf-8')
for username in get_users():
crontab = get_crontab(username)
if crontab:
print(f"## User: {username}")
print(crontab)
def get_users():
with open('/etc/passwd') as f:
for line in f:
username = line.split(':')[0]
yield username
get_crontab
함수: 지정된 사용자의 crontab 파일 내용을 가져옵니다.main
함수: 각 사용자에 대해get_crontab
함수를 호출하고 결과를 출력합니다.
- 이 스크립트를 실행하려면 Python이 설치되어 있어야 합니다.
unix cron