MacOSX Lion'daki cron günlük dosyası nerede?


25

Son bir değişikliğe kadar iyi çalışan bir cron işi ile ilgili sorunları gidermek istiyorum, ancak cron günlük dosyasını bulamıyorum, nerede?


2
Gerçekten bir cron işi mi yoksa fırlatmayı mı kullanıyorsun? Cron OS X'de kullanımdan kaldırıldı
jaberg

1
Cron işi için bir günlük dosyası ayarladınız mı?
daviesgeek

aslında kurduğum bir croncron -eve onu görebiliyorum cron -lve Lion ve bundan önce de Snow Leopard üzerinde çalıştığından eminim.
Ali

ve hayır, işin içindeki bir günlük dosyasına yazmam ve bir şeyi değiştirdikten sonra son zamanlarda çalışmayı durdurmama rağmen 'cron' için bir günlük dosyası el ile ayarlamıyorum.
Ali

2
Ali, Cevabın alındığından, lütfen cevabını cevap olarak gönder ve kabul et. Soruyu düzenlemeyin. Sadece kendi sorunuzu cevaplamanıza izin verilmez, ayrıca teşvik edilir.
Jason Salaz,

Yanıtlar:


30

Varsayılan olarak, cron yürütülen işlerin çıktısını günlüğe kaydetmez. Cronjobs'un çalıştırıldığı gerçeğini kaydetmek mümkündür, ancak bu, OS X'te de varsayılan değildir.

Cronjob yürütme çıktısını araştırmak için, STDOUT ve STDERR'yi günlük dosyalarına yönlendirmek için cronjob hattınızı değiştirmenizi öneriyorum. Crontab dosyanızda veya çalıştıktan sonra crontab -e, ancak buna devam ederseniz, iş hattınıza aşağıdaki gibi bir şey ekleyin:

0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log

Bunu yapmak için, STDOUT (normal olarak basılmış veya yankılanmış çıktıları STDOUT'a yazdırarak) / tmp dizinindeki stdout.log adlı bir metin dosyasına ve STDERR'yi temp dizinindeki stderr.log dosyasına göndermelidir. Birçok yardımcı program, uygulama hataları olduğunda özel hata mesajları yazdırmak için STDERR kullanır ve programın gerçek uygulaması tarafından oluşturulan hataları değil. ( Wikipedia'da STDERR hakkında daha fazla bilgi edinebilirsiniz .)


Teşekkürler, tam olarak yapmaya çalıştığım şey cronbuydu, bazı nedenlerden dolayı işi ilk etapta yürütememek gibi görünüyor . Eğer terminalde komut yazarak işi kendim çalıştırırsam, çalıştıran ve logfile çıktısını alır ama cronçalışmasını beklersem hiçbir şey olmaz, en azından log dosyasında değişiklik olmaz, belki de bir "cron log dosyası düşünüyordum "ya da konsolda ne olup bittiğini öğrenmeme yardımcı olabilecek izler vardı, son zamanlarda kabuğumu bash'dan zsh'a değiştirdim ama bunun da bunu etkileyebileceğini sanmıyorum.
Ali

1
Erikslab.com/2011/02/04/logging-with-launchd'a göre , cron /System/Library/LaunchDaemons/com.vix.cron.plisthata ayıklamasını yapmak için cron plistini ( ) bir Stdout / Stderr yolu ile değiştirebilirsiniz. Eğer hatırlamıyorum launchctl unloading ve launchctl loadplist ing yeterli mi, yoksa bir sistem cin olacağından tamamen yeniden olurdu eğer. İkincisi sadece emin olmak için öneririm.
Jason Salaz,

21

Aşağıdakini aşağıdakilere eklemek çok daha kolay /etc/syslog.conf:

cron.* /var/log/cron.log 

Ardından syslog'u yeniden başlatın

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist 
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist 

OSX 10.7.4'te test edildi ve çalışıyor


3
Bu fikri sevdim - ama 10.10.5'te /etc/syslog.confdiyor # Note that flat file logs are now configured in /etc/asl.conf. Bu dosyanın farklı bir sözdizimi var, giriş yapmayı nasıl yapılandıracağım açık değil.
Ken Williams, 18

@KenWilliams bunu söylese bile, syslog.conf hala Yüksek Sierra'da çalışıyor.
Balık Monitörü

15

Varsayılan olarak, "günlüğe kaydetme" etkin değildir. Ancak mailkomutu çalıştırarak bazı yararlı bilgiler edinebilirsiniz .

TL; DR mailkomutunda: mesajları okumak için enter'a basın ve sonra qçıkmak için girin.


4
Çok iyi teşekkürler. Mine bana Cron'umla tanınmayan bir emir olduğunu gösterdi. Şerefe!
Joshua Pinter

7

Cron-job girişlerini bulabildim.

/var/mail/{user-name}

Bir AWS CLI komutu çalıştırmak için aldığım bir cron iş günlüğünün ardından,

From build@BuildServer1.local  Fri Mar  2 10:00:00 2018
Return-Path: <build@BuildServer1.local>
X-Original-To: build
Delivered-To: build@BuildServer1.local
Received: by BuildServer1.local (Postfix, from userid 501)
    id A7A94296CBA3; Fri,  2 Mar 2018 10:00:00 +0100 (CET)
From: build@BuildServer1.local (Cron Daemon)
To: build@BuildServer1.local
Subject: Cron <build@BuildServer1> /app/scripts/s3-sync.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=build>
X-Cron-Env: <USER=build>
X-Cron-Env: <HOME=/Users/build>
Message-Id: <20180302090000.A7A94296CBA3@BuildServer1.local>
Date: Fri,  2 Mar 2018 10:00:00 +0100 (CET)

upload: ../../app/logs/debug.log to s3://**my-s3***/app/logs/debug.log

1
Bu posta kutusunun içinde saklanan bir hata postasıuser
nohillside

@patrix, başarıyı cron işinde de bulabildim. Cevap güncellendi.
Vineeth

Güzel! Kabul edilen cevap olmalı!
Trollhorn

3

Cron, işi yürütürken ortaya çıktı (benim gibi), /usr/local/biniçinde değil PATH.
Bunu deneme yanılma ile buldum ve işi sıfırdan bir işe yaratacağını bildiğim basit bir şeyden yapıyorum ve sorunu bulana kadar yavaş yavaş şeyler ekledim.

Diğer öneri ve cevaplar hakkında:
Bir nedenden dolayı (en azından SnowLeopard'dan yükseltilmiş bir Lion çalıştıran makinemde), okumak için sopatlanmış cronolan pist dosyalarında belirtilen parametreleri launchdkullanmıyor /System/Library/LaunchDaemons/com.vix.cron.plistya da Lion'da cron yazmıyor stdout veya stderr için.

Bu arada kullanıyorum http://s3tools.org/s3cmd için sync(ilkel DropBox gibi) yedek olarak bir Amazon S3 kova ile bir klasör.

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.