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.shaş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 psve göremiyorum jobs, bu yüzden, süreci kapatmak kill -9istediğ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 readkomut 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 nohupuygun 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/…