ฉันต้องการเรียกใช้และกำหนดค่ากระบวนการคล้ายกับ daemon จากสคริปต์
shell ของฉันคือ zsh emulated ภายใต้ Cygwin และ daemon คือSFKซึ่งเป็นเซิร์ฟเวอร์ FTP พื้นฐาน
สำหรับสิ่งที่สำคัญที่นี่สคริปต์startserv.sh
สามารถถูกร่างได้ดังนี้:
#!/bin/sh
read -s -p "Enter Password: " pw
user=testuser
share=/fshare
cmd="sfk ftpserv -user=$user -pw=$pw -usedir $share=$share"
$cmd &
หลังจากเรียกใช้สคริปต์สคริปต์startserv.sh
จะหยุด (จบลง?) โดยไม่แสดงพรอมต์ใด ๆ จากนั้น:
CTRL+ Cจบทั้งสคริปต์และกระบวนการทำงานเบื้องหลัง
การกดปุ่มEnterสคริปต์จะสิ้นสุดกระบวนการจะยังคงอยู่ในพื้นหลัง
อย่างไรก็ตามผมสามารถดูได้ผ่านทางps
และไม่ได้jobs
ดังนั้นเมื่อฉันต้องการที่จะปิดการที่ผมต้องส่งโหดร้ายkill -9
สัญญาณซึ่งเป็นสิ่งที่ผมอยากจะหลีกเลี่ยงในความโปรดปรานของ +CTRLC
ทางเลือกอื่น จะเรียกใช้สคริปต์ทั้งหมดในพื้นหลัง 'จะ' แต่คำสั่งไม่สามารถได้รับข้อมูลผู้ใช้ถ้าสคริปต์ทำงานเป็นread
startserv.sh &
โปรดทราบว่าฉันต้องการเซิร์ฟเวอร์ชั่วคราวไม่ใช่ภูตจริง: นั่นคือฉันต้องการให้กระบวนการเซิร์ฟเวอร์ทำงานในพื้นหลังหลังจากสคริปต์จบลงเพื่อทำงานเชลล์เชิงโต้ตอบอย่างง่าย (พร้อมแขกเครื่องเสมือน) แต่ฉันไม่ต้อง ' ไม่จำเป็นต้องใช้กระบวนการเพื่อเอาตัวรอดจากเปลือก ดังนั้นจึงnohup
ดูเหมือนไม่เหมาะสม
bgproc="$!"
จากนั้นcommand "$bgproc"
ดำเนินการตามความเหมาะสม ดูstackoverflow.com/questions/1908610/…