Sistem birimi hata ayıklama


13

Tamamen genişletilmiş ExecStart/ExecStopkomut satırını yazdıramayacağımı merak ediyorum . Aşağıdaki örneği düşünün:

ExecStart=/usr/bin/java $OPTS_COMMON $OPTS $OPTS_LOG $OPTS_DEBUG some.class.Start --param1 ${PARAM1} --param2 ${PARAM2}

Çok fazla çevre değişkenine sahip oldukça uzun komut satırlarım var. Değişkenlerden bazıları yanlış hale gelirse (örneğin, açılan yapılandırma yoluyla), hizmet hiç başlatılamayabilir. Ancak hiçbir yerde ikame env ile tamamen genişletilmiş çizgi görmüyorum ve neyin yanlış olduğunu bulmak için mücadele ediyorum.

Ben bu googling hiçbir şans vardı ve şimdiye kadar bulduğum tek olasılık birim /usr/bin/echoyerine hizmet yerine çalıştırmak için dosyayı değiştirmek için . Ama bu biraz yorucu. Ya da daha can sıkıcı bir çözüm - her ortam değişkenini tek tek kontrol edin.

Systemd'i bana gerçekten neyin çalıştırılmaya çalışıldığını göstermeye zorlamanın bir yolu var mı?

Yanıtlar:


10

Maalesef, yerleşik bir yol yok. Son ExecStart'ı görmek için hata ayıklamayı açabilirsiniz. Düzen dosyasını /etc/systemd/system.confve set LogLevel=için debug. Sonra şöyle bir şey göreceksiniz:

java.service About to execute: /usr/bin/java $OPTS_COMMON...Bu, sorununuzu çözmez ancak systemd'nin belirleyicisinin değiştirildiğini görmek iyidir. https://www.freedesktop.org/software/systemd/man/systemd.unit.html(specifiers)

Ancak, argüman değişiminin gerçekten altına inmek istiyorsanız, buraya bakmanız gerekir: https://github.com/systemd/systemd/blob/7ce9cc154576e342015eab8c1500790a9ededc01/src/core/execute.c#L2570


Bunu yapmanın bir yolu olmadığından biraz korktum. :/ Yine de teşekkürler.
pystole

2

[Service] bölümündeki * .service dosyasında

ExecStartPre=/bin/bash -l -c 'echo "$OPTS_COMMON">/tmp/options.debug'

Benim için çalışmadı. Dosyanın içeriği yok.
Max Leske

komutun etrafındaki tekli tırnaklar bash değişkeninin değiştirilmesini engeller. Bunu 've' konumlarını değiştirerek deneyin. Bash -l -c "echo '$ OPTS_COMMON'> / tmp / options.debug" yerine. Bash -l -c "echo \" $ OPTS_COMMON \ "> / tmp / Options.Debug"
user207998
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.