ไปป์ / ส่งคำสั่งเพื่อประมวลผลการทำงานใน nohup ที่รับอินพุตจาก STDIN


4

nohup program &ผมมีโปรแกรมที่ผมทำงานใช้ STDINโปรแกรมนี้จะรับข้อมูลจาก มีวิธีการส่งข้อความไปยังSTDINโปรแกรมที่ทำงานผ่านnohupหรือไม่?

นี่คือการทำงานของ FreeBSD ที่ทุบตี ฉันต้องการจะดูว่าสิ่งนี้ทำบน linux เช่นกัน


Linux (อันไหน)? Unix (อันไหน)? OS X หรือไม่ AmigaOS? มันคงไม่เจ็บที่จะพูดว่าเปลือกหอยชนิดใด ทุบตี? บอร์น? กรณ์? C? Z? ปลา?
Dennis Williamson

ขอโทษสำหรับเรื่องนั้น. อัปเดตคำถาม
vivin

คำตอบ:


7

nohupเรียกใช้โปรแกรมด้วยการเปลี่ยนเส้นทางอินพุตมาตรฐาน/dev/null(สมมติว่าคุณไม่ได้เปลี่ยนเส้นทางnohupคำสั่งด้วยตนเอง) ดังนั้นไม่คุณไม่สามารถส่งอินพุตไปที่โปรแกรมนี้

หากคุณต้องการส่งอินพุตไปยังโปรแกรมให้เปลี่ยนเส้นทางอินพุตเมื่อคุณเริ่มต้น:

nohup program <input-file.txt &  # input from a file
nohup data-producer | nohup program &  # input from another program
mkfifo program.pipe; nohup program <program.pipe &  # input from a named pipe, feed it what you want later

(อันที่จริงแล้วอาจเป็นไปได้ที่จะเชื่อมต่ออินพุตมาตรฐานของโปรแกรมไปยังแหล่งอื่นโดยใช้ptraceเช่นดีบักเกอร์หรือแฮ็คอื่น ๆ สิ่งนี้อาจทำให้โปรแกรมขัดข้องได้หากมันติดตามตำแหน่งที่อินพุตมาดูฉันจะหยุดการทำงานชั่วคราวได้อย่างไร ประมวลผลผ่าน ssh, ปฏิเสธ, เชื่อมโยงกับเชลล์หน้าจอใหม่และยกเลิกการหยุดชั่วคราวหรือไม่ ; มีคำถามอื่น ๆ ในเครือข่าย SE ในหัวข้อนี้)


ผู้ผลิตข้อมูลจะไม่ถูกฆ่าหรือไม่
wliao

1
@wliao แน่นอน ฉันเพิ่มnohupไว้ข้างหน้าด้วยเช่นกันขอบคุณ
Gilles
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.