Supervisord: cara menambahkan ke $ PATH

23

Saya tidak bisa menemukan cara menambahkan ke jalur default dalam konfigurasi program pengawas.

Saya dapat mengatur ulang jalur:

environment=PATH="/home/site/environments/master/bin"

Tetapi ketika saya mencoba:

environment=PATH="/home/site/environments/master/bin:$PATH"

Saya melihat bahwa pengawas tidak mengevaluasi $PATH.

Google tidak banyak membantu dalam hal ini karena suatu alasan, saya tidak percaya saya orang pertama yang membutuhkan ini.

Supervisord harus memiliki dukungan untuk ini, tahu apa itu?

Prody
sumber
1
@ascobol nggak, saya sudah meng-hardcode jalur yang saya butuhkan, untuk saat ini
Prody
2
supervisordjangan jalankan shell untuk memproses variabel di file konfigurasi, jadi Anda tidak bisa menggunakan ekspresi shell untuk memperluas variabel. Meskipun ada tambalan yang memungkinkan untuk dilakukan %($PATH)dan telah dibahas dalam milis kembali pada tahun 2011 tetapi AFAIK masih belum dimasukkan ke pohon sumber arus utama. Sebagai solusinya, Anda dapat membuat skrip yang akan mengatur lingkungan dan menjalankan perintah yang disediakan dalam argumen. Maka Anda cukup menjalankan skrip dari supervisordsejenisnyacommand /usr/local/bin/setup_env_master.sh program_name arguments
Dmitry Vasilyanov
1
Ada kelemahan yang signifikan pada solusi pembungkus shell - ketika pengawas akan mencoba menghentikan proses menggunakan INT atau KILL, sinyal akan diterima oleh skrip bash dan bukan program yang sebenarnya dibungkus. Ini dapat menyebabkan (dan mengarah dalam kasus saya) untuk proses menjuntai.
stoiczek
@stoiczek masalah mudah untuk dipecahkan. Gunakan exec di akhir skrip bash, jangan hanya menjalankan perintah secara teratur. Jadi exec server --args. Anda melihatnya di pekerjaan pemula selalu.
CameronNemo

Jawaban:

1

Saya meninjau dokumentasi dan setuju dengan Dmitry.

Jawaban saat ini adalah: supervisor tidak melakukan direktori ini, tetapi membuat skrip wrapper akan membantu.

Theuni
sumber