Bir komut dosyasındaki bir arka plan programına benzer bir işlemi çalıştırmak ve yapılandırmak istiyorum.
Kabuğum Cygwin altında zsh öykünüyor ve arka plan programı temel bir FTP sunucusu olan SFK .
Burada önemli olan şeyler için senaryo startserv.sh
aşağıdaki gibi hazırlanabilir:
#!/bin/sh
read -s -p "Enter Password: " pw
user=testuser
share=/fshare
cmd="sfk ftpserv -user=$user -pw=$pw -usedir $share=$share"
$cmd &
Komut dosyasını çalıştırdıktan sonra startserv.sh
, herhangi bir istem göstermeden durur (biter?), Ardından:
CTRL+ Chem komut dosyasını hem de arka plan işi işlemini sonlandırır;
Vurmak Entersenaryoyu arka planda işlem kalıntıları biter.
Her neyse, sadece üzerinden görebiliyorum ps
ve göremiyorum jobs
, bu yüzden, süreci kapatmak kill -9
istediğimde, CTRL+ lehine kaçınmak istediğim bir şey olan acımasız bir sinyal göndermeliyim C.
Alternatif olarak tüm betiği arka planda çalıştırabilirsiniz. 'Olur', ancak read
komut dosyası olarak çalıştırılırsa komut kullanıcı girdisini alamaz startserv.sh &
.
Geçici bir sunucuya ihtiyacım olduğunu unutmayın, gerçek bir daemon değil : yani, komut dosyası bittikten sonra, basit bir etkileşimli kabuk görevleri (bir sanal makine konukuyla) gerçekleştirmek için sunucu işleminin arka planda çalışmasını istiyorum, ancak ' t Kabuğun hayatta kalması için işleme ihtiyaç yoktur; bu nedenle nohup
uygun görünmüyor.
bgproc="$!"
ve ardındancommand "$bgproc"
uygun işlemi yapmak için arka planda çalışan işlemin işlem kimliğini alın. Ayrıca bkz stackoverflow.com/questions/1908610/…