OS X'te başlatmayı günlüğe kaydetmeyi nasıl etkinleştiririm?


35

OS X 10.6'da lansman günlüğünü nasıl etkinleştiririm?

Düzgün başlamamış yeni bir arka plan programı ekledim (durum 1).

Sorunu ayıklamak istiyorum ancak launchdgünlükleri bulamadım, içeride değiller /var/log/launchd.log.

Yanıtlar:


26

Çözümü buldum

 sudo launchctl log level debug 

ve bundan sonra

 tail -f /var/log/system.log

1
Bu işletim sisteminin yöneticiye ihtiyacı olduğunu farkettim, tıpkı her şey gibi. "WTF ayrıntılı bayrağı nerede!" OSX kayalar, elbette, ama ele almak zor. Thx +1
chiggsy

Takip, FYI: Bu, OS X 10.7.2 ile de çalışır. Teşekkürler.
Alan W. Smith,

Leopard sunucularımla ilgili problemlerim vardı ve piyasaya sürülen sürünüşle ilgili bir sorun olduğunu düşündüm (aynı şey Snow Leopard'da da geçerli olsa da). Bunun üzerine yanılmak oldu ve çekicilik gibi çalışıyor :)
icasimpan

27
Bu artık 10.10 Yosemite'den beri çalışmıyor. launchctl sürümü: Darwin Sistemi Önyükleyici 2.0.0: Salı 9 Eylül 16:30:56 PDT 2014
JeanMertz

9
@JeanMertz - herhangi bir alternatif?
Umang

20

Launchd plist dosyasına aşağıdaki satırları eklerseniz, işleminizi başlatmak yerine kendi işleminizi kaydetmeye çalıştığınızı varsayalım:

<key>StandardOutPath</key>
<string>/path/to/logfile.log</string>
<key>StandardErrorPath</key>
<string>/path/to/another_logfile.log</string>

ve işlemi yeniden yüklediğinizde, komut dosyanızda dahili olarak bulunan herhangi bir kayıt veya baskı, çalıştırıldığında bu iki dosyadan birinde yakalanır. ancak dosyaları döndürmek size kalmış gibi görünüyor. Bekleyebileceğiniz gibi, her iki durumda da aynı dosyayı kullanırsanız, hem hata hem de stdout'u aynı yere kaydeder.

Bakınız: Hata ayıklama lansmanları ve Ajanlar Oluşturma bölümündeki Başlatma İşleri bölümü .


17

OS X 10.11'de (El Capitan), sudo launchctl debug <service-target> --stdout --stderr@peter tarafından önerilen dosya sistemi seçeneğini almak istemiyorsanız, bir kereye mahsus günlüğü etkinleştirmek için kullanabilirsiniz .

Mevcut uygulamada birçok şey farklıdır launchctlve bu <service-target>tür gariptir. Örneğin, yapılandırdığım ~/Library/LaunchAgents/dev.localmon.plist"etiket" olan yerel bir hizmetim olduğunu varsayalım dev.localmon. Onun <service-target>olduğu gui/$UID/dev.localmonyerde, $UIDsen CLI bu çalıştırıyorsanız beri, Kabuk sizin için interpole edecektir, kullanıcı kimliği vardır.

Bu yüzden dev.localmonhizmetimin başlangıçta kilitlendiğini varsayalım (öyleydi), launchctlişlemin stdout ve stderr'in bir dahaki sefere (ve sadece bir dahaki sefere) kabuğuma boru atması için aşağıdakini çağırabilirdim :

sudo launchctl debug gui/$UID/dev.localmon --stdout --stderr

Açık ve hazır TTY'lerle takıldığından, başka bir terminale gidin ve koşun:

launchctl start dev.localmon
# start is a legacy command and doesn't use the fancy new service-target notation

Sonra, birinci terminalde geri, sen gerektiğini çıktısına bakın. (Servis süreci öldüğü zaman Tuhaf bir şekilde kapanmaz, bu yüzden Ctrl-C'ye ihtiyacınız olacaktır.)

Btw, config dosyanızı bir PATH veya ortamın hizmeti daha önce ne kadar kırdığını saptadığınızda, launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plistbelgelerin öne sürdüğü uncachealt komut aşağıdaki etkiyi gösterdiğinden , eski iki adımı kullanmanız gerekir :

Komut henüz uygulanmadı.

Apple'ın İşler sonrası yayın stratejisi için Yay: "Hızlı hareket et ve işleri kır"


sudo launchctl debugCould not find domain forbenim için çıkar
Tom
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.