Sh komut dosyasını arka planda çalıştırma ve işi iş listesine ekleme


0

Sunucum için bir NodeJS sunucusu çalıştırmak istiyorum.

yükledim Nodemon ve otomatik olarak çalışacak bir komut dosyası oluşturdu.

Bu benim içeriğin init.sh senaryo:

nodemon ./index.js > logs 2> errors &

Ama şunu çalıştırdığımda:

./init.sh

Ve sonra koş:

jobs

İş listesinde göremiyorum. Koşmak zorundayım:

ps -eaf | grep nodemon

İşin kimliğini almak için öldür.

Bir çözüm arıyordum ve içinde bulunduğum kabuğun bağlamı ile ilgili görünüyor (SSH kullanıyorum).

Birisi yapmaya çalıştığım şeyi başarmamda bana yardımcı olabilir mi (yani, işi işler listesine gönderir) veya en azından beni doğru yöne işaret eder mi?


“… Göründüğüm kabuğun bağlamı ile ilgili görünüyor (SSH kullanıyorum)” derken, bağlantı yönteminizi (SSH)% 100 ilişkili olmayan bir kabuk ile karıştırıyorsunuz. Eğer senin init.sh Burada gösterildiği gibi olan temel kabuğu kullanıyorsunuz. /bin/sh ki - dürüstçe - sınırlı olabilir. Eklemeyi dene #!/bin/bash -l üstüne init.sh betiği kullanmak için Bash kabuğu ve -l yararlı olabilecek çevre değişkenleri boyunca geçer.
JakeGould

Yanıtlar:


2

jobs geçerli kabuğunuzun işlerini ./init.sh betiği ayrı bir kabuk içinde çalıştırır. Bu ayrı kabuk iş kontrolü muhtemelen devre dışı bırakılmıştır, ancak önemli değildir çünkü onu mevcut kabuğunuzdan kolayca kullanamazsınız.

Komut dosyasını "çalıştırmak" için şimdiki kabuk, kaynak o:

. init.sh

Bu, dosyanın içeriğini geçerli kabuğunuza yazmaya eşdeğerdir. Sonra jobs göstermeli nodemon geçerli kabuğun işi olarak.


İş gibi görünüyor, teşekkür ederim! Görünüşe göre anlayamadığım ve şimdi görebildiğim şey işin gerçekten durduğu. çalışmasını sağlamanın bir yolu var mı? Ayrıca, kullanmak zorunda kalmaktan kaçınmak için bir çözümü olurdu. . emirden önce mi? Hakkında okudum nohup, bu benim sorunumu çözer mi?
trichetriche

@trichetriche Lütfen bakınız Arka planda Linux süreci - işlerde "Durdu"? nohup ve giriş yeniden yönlendirme, en çok oylanan cevabı orada yapar, ancak hile yapan yönlendirmedir. Komutunuz, girişi yeniden yönlendirildiğinde derhal sona erebilir veya sona ermeyebilir. /dev/null (Bilmiyorum nodemon, Davranışını tahmin edemiyorum).
Kamil Maciorowski

@trichetriche Kaçabileceğini sanmıyorum . (veya source ) Geçerli kabuğun iş kontrolünü kullanmak istiyorsanız.
Kamil Maciorowski

Nodemon sadece bir node bir nöbetçi ile komut verin, böylece her komutta düğüm komutunuzu tekrar çalıştırmak zorunda kalmazsınız. Doğru bir şekilde elde edersem, çıktıları dosyalara yönlendirmem gerekiyor, ancak ben zaten yapıyorum, neden durdu? Her neyse, şu an doğrudan komutu çalıştırmaya karar verdim, çünkü hatta çizgiye odaklanmak istemiyorum çünkü JS'nin kendisi. Yine de yardımın için teşekkür ederim, en azından bir senaryoyu nasıl kaynaklayacağımı öğrendim!
trichetriche

1
Oh tamam, bunun için üzgünüm, çok teşekkür ederim :)
trichetriche
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.