Kullanıcı crontab nerede saklanır?


249

Yükseltmeden bu yana, kullanıcının crontab'ı silindi. Bu, bu yıl ilk defa olmuyor ve her seferinde onu yeniden canlandırıyor.

Kullanıcım için crontab'ı yedekleyebilmek istiyorum ancak bunun için nerede depolandığını bilmem gerekiyor.


4
Birisinin de bir sebep vermesi niçin hoş olurdu, NEDEN silinmiş
Walter Tross

1
@WalterTross Evet oldukça can sıkıcı. cronPaketi güncellemenin bir yan etkisi olduğunu tahmin ediyorum ama katılıyorum - olması gereken bir şey değil.
Oli

Uh, bu kullanıcı cronu her cron paketi yükseltmesi için silinmiyor!
pl1nk

@ pl1nk Ne sildiği hakkında hiçbir fikrim yok, ancak devam ediyor. Sanırım makinedeki hayalet.
Oli

Kullanıcı tabloları, geçici olarak / var / spool / cron / crontabs / $ USER alanında saklanır, çünkü bunlar bir sonraki açılışınızda veya yükseltmelerinizde silinebilir.
fcm

Yanıtlar:


325

Aslında bu dosyaları elle ele almanız önerilmez. crontabAdam başına sayfa:

Her kullanıcı kendi crontab'ına sahip olabilir ve
bu dosyalar içeride /var/spool/cron/crontabsolsalar da,
doğrudan düzenlenmeleri amaçlanmamıştır.

Altındaki dosyalar /var/spoolgeçici olarak kabul edilir / çalışır, bu nedenle muhtemelen yükseltme sırasında silinirler, ancak cronpaketin yükseltme komut dosyalarına yakından bakabilirsiniz .

Neyse, her zaman cron girişlerinizi yedeklemek veya giriş dizininizdeki bir dosyada saklamak iyi bir uygulamadır.

crontab -eAnında crontab dosyaları oluşturmak için kullandığınızı varsayıyorum . Eğer öyleyse, yaparak crontab dosyanızın bir "kopyasını" alabilirsiniz crontab -l. Bir "yedekleme" almak için bunu bir dosyaya aktarın:

crontab -l > my-crontab

Sonra bu my-crontab dosyasını girişleri eklemek veya değiştirmek için düzenleyebilir ve ardından crontab'a vererek "kurun":

crontab my-crontab

Bu, aynı sözdizimini kontrol ediyor crontab -e.


7
crontab -l/var/spool/cron/crontabs/$USERBu dosyadaki tuhaf izinler nedeniyle çoğunlukla geçmekten daha kolaydır .
Oli

1
iptables-saveCron'nun. Güzel ...
Parthian Shot

4
Belki de otomatik olarak kendini yedeklemek için bir crontab koymalıyız> :)?
PascalVKooten

4
/var/spool/cron/crontabsBirden fazla kullanıcıdan gelen crontab'ları iyileştirmek veya incelemek istediğinizde bunu yapmak kullanışlıdır.
dhasenan

1
Bir sunucu üzerinde sırlarını araştırırken bunu yaygındır, aşina olmayan sudo grep -rHin "$string" /etc/cron*(string gibi bir komut nerede olabilir docker, lftp, iptables, vb Yani bu Q & A götürebilir ne de kullanıcı crontab dosyalarına kontrol etmek iyi bir fikirdir..sudo grep -rHin "$string" /etc/cron* /var/spool/cron*
Bruno Bronosky


30

Sonunda neden crontab'larımın ve Postfix kurulumumun açılıştan sonra kırılmaya devam ettiğini öğrendim . Çok aptalca bir sebep ama ...

RAM sürücüsü /var/spoololarak monte etmiştim tmpfs.

Aptalca geliyor ve öyle ama SSD'imin ömrünü uzatmak için eski SSD-tweaks'lardan birini izlemiştim. Bunu yaparken, ben körlemesine monte /tmp, /var/tmpve /var/spoololarak tmpfsyankıları düşünmeden. Düşündüğümden /var/spoolgibiydi /proc/ya /run/ve oturum süresince sadece yararlı olduğunu. Açıkça yanılmışım.


8
/tmpTmpfs olarak monte etmek güvenli olmalı , ancak /var/tmpveya olmamalıdır /var/spool. /tmpYeniden başlatma sırasında kaybolabilecek geçici depolama için kullanılır. /var/tmpBir yeniden başlatma işleminden sonra kalacak geçici depolama için kullanılır. Ve keşfettiğiniz gibi, /var/spoolyeniden başlatmanın ardından da kalabilecek verilerin işlenmesi içindir.
thomasrutter


2
Ayrıca, yazma sayısının artık modern SSD'ler ile ilgili bir sorun olmadığını unutmayın.
thomasrutter

17

Sisteminizdeki tüm kullanıcıların tüm cron işlerini listelemek için:

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

Sorununuza bir alternatif, bunları cron.d klasörüne yerleştirmek ve cron başına uygun kullanıcıyı örnek olarak belirtmektir:

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

crontab'ı başka bir sürücüden kurtarıyorsanız, crontab -ugeçerli sisteminizden çalıştığı için bu işe yaramayacaktır .
JVE999

Her ne kadar 80 karakterden daha az sığabileceği ve biraz okunabilir olduğu konusunda tek bir gömlek olduğunu varsayalım, genellikle kod kopyalamayı yapıştırabilecek veya bir komut dosyasına koyabilecek şekilde (ve, Bir komut dosyasında bu bir kod satırı olmaz ). Düzenleme
Parthian Shot

Ayrıca, while read userkullanıcı adının boşluk içerdiği durumu ele almak için onu bir döngüye çevirmek üzereydim , ama görünüşe göre bu bir sorun değil. Çok sınırlı kullanıcı adı karakter kümesi.
Parthian Shot
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.