我有2个阻止shell脚本,我希望彼此进行交互。有问题的脚本是peerflix(nodejs脚本)和ffmpeg(一个简单的bash脚本)。
会发生什么:Peerflix启动,将数据提供给ffmpeg bash脚本,在完成时终止peerflix。
因此,一旦peerflix启动,它会立即输出2行并阻塞:
[08:15 PM]-[vagrant@packer-virtualbox-iso]-[/var/www/test]-[git master]
$ node /var/www/test/node/node_modules/peerflix/app.js /var/www/test/flexget/torrents/test.torrent -r -q
listening: http://10.0.2.15:38339/
process: 9601
我必须将侦听地址提供给ffmpeg bash脚本:
#!/bin/sh
ffmpeg -ss 00:05:00 -i {THE_LISTENING_PORT} -frames:v 1 out1.jpg
ffmpeg -ss 00:10:00 -i {THE_LISTENING_PORT} -frames:v 1 out2.jpg
bash脚本完成后,我必须终止peerflix脚本(因此我输出了PID)。
我的问题是如何实现这一目标?
答案 0 :(得分:0)
我想你想要这样的东西:
# Start the node process in the background
node /var/www/test/node/node_modules/peerflix/app.js /var/www/test/flexget/torrents/test.torrent -r -q &
# Get the PID of the node process
PID=$!
# Run your stuff
ffmpeg -ss 00:05:00 -i {THE_LISTENING_PORT} -frames:v 1 out1.jpg
ffmpeg -ss 00:10:00 -i {THE_LISTENING_PORT} -frames:v 1 out2.jpg
# Stop the node process
kill $PID
您可以将其放在一个脚本中,或者让一个节点脚本启动/杀死节点进程作为包装器并在中间运行另一个脚本。希望这会有所帮助。