사용자 crontab은 어디에 저장됩니까?


249

사용자의 업그레이드가 완료된 후 crontab이 지워졌습니다. 이번이 처음이 아니고 매번 그것을 회복하는 고통입니다.

사용자를 위해 crontab을 백업하고 싶지만 저장 위치를 ​​알아야합니다.


4
누군가는 이유를 줄 수있는 경우가 전멸 이유는 좋은 것입니다
월터 Tross을

1
@WalterTross 그래, 꽤 짜증나. cron패키지 업데이트의 부작용이라고 생각 하지만 동의해야합니다.
Oli

어, 나는 cron 패키지 업그레이드마다 사용자 cron이 지워지지 않습니다!
pl1nk

@ pl1nk 나는 그것을 지우는 것이 무엇인지 모르겠지만 계속 일어나고 있습니다. 기계의 유령.
Oli

사용자 테이블은 임시 영역 / var / spool / cron / crontabs / $ USER에 저장되므로 다음 부팅 또는 업그레이드시 삭제 될 수 있습니다.
fcm

답변:


325

실제로는 해당 파일을 직접 처리하지 않는 것이 좋습니다. crontab맨 페이지 당 :

각 사용자는 고유 한 crontab을 가질 수 있으며이
파일은의 파일 이지만 직접 편집 할 수 /var/spool/cron/crontabs는 없습니다
.

아래의 파일 /var/spool은 임시 / 작업으로 간주되므로 업그레이드 중에 파일이 삭제 될 수 있습니다. 그러나 cron패키지의 업그레이드 스크립트를 자세히 살펴보면 이에 대한 약간의 정보를 얻을 수 있습니다.

어쨌든 항상 cron 항목을 백업하거나 홈 디렉토리의 파일에 보관하는 것이 좋습니다.

crontab -ecrontab 파일을 즉석에서 만드는 데 사용한다고 가정합니다 . 그렇다면을 수행하여 crontab 파일의 "복사본"을 얻을 수 있습니다 crontab -l. "백업"을 얻기 위해 파일로 파이프하십시오.

crontab -l > my-crontab

그런 다음 해당 my-crontab 파일을 편집하여 항목을 추가하거나 수정 한 다음 crontab에 제공하여 "설치"할 수 있습니다.

crontab my-crontab

이것은와 동일한 구문 검사를 수행 crontab -e합니다.


7
crontab -l/var/spool/cron/crontabs/$USER해당 파일에 대한 기괴한 권한 때문에 대부분 통과하는 것보다 쉽습니다 .
Oli

1
iptables-save크론의. 니스 ...
파르티아 총

4
아마도 crontab을 자동으로 백업해야합니다 :>)?
PascalVKooten

4
파킹 /var/spool/cron/crontabs은 여러 사용자의 크론 탭을 큐 레이트하거나 검사 할 때 편리합니다.
dhasenan

1
서버에 신비를 조사 할 때 당신은 공통이다, 익숙하지 않은 sudo grep -rHin "$string" /etc/cron*(문자열과 같은 명령이 될 수있는 위치 docker, lftp, iptables, 등 그것은 즉,이 Q & A에 저를 이끌어 무엇 또한 사용자 크론 탭을 체크하는 것이 좋습니다..sudo grep -rHin "$string" /etc/cron* /var/spool/cron*
브루노 Bronosky


30

마침내 crontab과 Postfix 설치가 부팅 후에 끊어 졌는지 알게되었습니다 . 정말 어리석은 이유이지만 ...

내가했던 /var/spoolA와 장착 tmpfsRAM 드라이브.

바보처럼 들리지만 SSD의 수명을 연장하기 위해 오래된 SSD 조정 중 하나를 따랐습니다. 이 과정에서 나는 맹목적으로 장착 /tmp, /var/tmp/var/spool같은 tmpfs반향을 생각하지 않고. 나는 /var/spool/proc/거나 /run/세션의 기간 동안 만 유용 하다고 생각 했습니다. 나는 분명히 틀렸다.


8
/tmptmpfs 로 마운트 하는 것이 안전 하지만 /var/tmpor는 아닙니다 /var/spool. /tmp재부팅시 유실 될 수있는 임시 스토리지에 사용됩니다. /var/tmp재부팅 후에도 남아있는 임시 저장소에 사용됩니다. 그리고 당신이 발견 한 것처럼, /var/spool데이터가 처리되는 것입니다. 이것은 재부팅 후에도 유지됩니다.
thomasrutter 2016 년


2
또한 쓰기 횟수는 더 이상 최신 SSD에서 문제가되지 않습니다.
thomasrutter 2016 년

17

시스템의 모든 사용자의 모든 크론 작업을 나열하려면 다음을 수행하십시오.

for user in $(cut -f1 -d: /etc/passwd)
do
  echo $user
  crontab -u $user -l
done

문제의 대안은 cron.d 폴더에 배치하고 예와 같이 cron별로 적절한 사용자를 지정하는 것입니다.

00 01 * * * user /home/user/user-script.sh

다른 드라이브에서 crontab을 복구하는 경우 crontab -u현재 시스템에서 실행 중이기 때문에 작동하지 않습니다 .
JVE999

필자는 80 자 미만이고 어느 정도 읽을 수있는 한 줄짜리라고 생각하지만, 일반적으로 사람이 복사하여 붙여 넣거나 스크립트에 넣을 수있는 형식으로 코드를 넣는 것을 좋아합니다. 스크립트에서 이것은 한 줄의 코드 가 아닙니다 ). 편집 제안 ...
파르티아 총

또한 while read user사용자 이름에 공백이 포함 된 경우를 처리하기 위해 루프 로 전환하려고 했지만 분명히 문제가되지는 않습니다. 매우 제한된 사용자 이름 문자.
Parthian Shot
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.