- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从事一个项目,将 HDTV 从个人电脑流式传输到支持 HTTP 实时流式传输的设备(想想 iOS 设备和一些安卓设备)。我有视频的格式和流媒体方面的问题。我现在尝试实现的是一种远程更改 channel 的简单方法。
我目前的方法是通过 SSH 连接以终止旧流并开始新流。这有效,但并不漂亮。我想要我妈妈或女朋友可以使用的东西。我决定构建一个 HTML5 应用程序,通过 CGI 脚本发布 channel 切换。我目前有一个父进程,其表单调用子进程来确定流是否正在运行,然后调用子进程来实际调整流。
当我从我的计算机流式传输实时视频时,我需要子进程无限期地运行。 不幸的是,当我的父进程完成时,子进程中启动的后台进程似乎终止了。
我尝试了一个简单的 &,使用 nohup、setsid 和守护进程。守护进程运行最干净,但仍会在父进程完成时终止。即使有 -r 标志。我将把我的代码放在下面,也许有人会对我如何实现这个或实现相同目标的更好方法有想法?谢谢! (哦,我知道杀死 vlc 并不是杀死流的好方法,如果你有更好的方法我洗耳恭听)
parent invoking child:
----------------------
./ChangeChannel.sh $channel #passed from form submission
child (ChangeChannel.sh):
-------------------------
#!/bin/bash
directory=./Channels/
newchannel=$1
if [ $(pidof vlc) ]
then
sudo kill $(pidof vlc)
fi
daemon -r -v -d $directory$newchannel &
subchild example:
-----------------
vlc atsc://frequency=605029000 --intf=dummy --sout-transcode-audio-sync :live-cache=3000 --sout='#transcode{vcodec=h264,vb=150,fps=25,width=480,scale=1,venc=x264{aud,profile=baseline,level=30,keyint=15,bframes=0,ref=1},acodec=aac,ab=40,channels=2,samplerate=22050}:duplicate{dst=std{mux=ts,dst=-,access=livehttp{seglen=16,delsegs=true,numsegs=10,index=/var/www/stream/live.m3u8,index-url=content/live-######.ts},mux=ts{use-key-frames},dst=/var/www/stream/content/live-######.ts,ratecontrol=true}}'
我怎样才能防止子进程终止???在 Ubuntu 12.04 上运行 Apache
最佳答案
我明白了!
对于任何对如何操作感兴趣的人,我改变了策略以使用 nohup、&、disown 和 >/dev/null 2>&1。
老实说,我仍然不太确定我是如何让它工作的……只是通过一些有根据的猜测进行了大量的试验和错误。我的代码如下:
parent invocation:
------------------
nohup ./ChangeChannel.sh $channel & disown
child invocation:
-----------------
sudo nohup su user $directory$newchannel &> /dev/null 2>&1
subchild invocation:
--------------------
vlc atsc://frequency=605029000 --intf=dummy --sout-transcode-audio-sync :live-cache=3000 --sout='#transcode{vcodec=h264,vb=150,fps=25,width=480,scale=1,venc=x264{aud,profile=baseline,level=30,keyint=15,bframes=0,ref=1},acodec=aac,ab=40,channels=2,samplerate=22050}:duplicate{dst=std{mux=ts,dst=-,access=livehttp{seglen=16,delsegs=true,numsegs=10,index=/var/www/stream/live.m3u8,index-url=content/live-######.ts},mux=ts{use-key-frames},dst=/var/www/stream/content/live-######.ts,ratecontrol=true}}' & disown
ChangeChannel.sh 使用 sudo 通过 cgi 执行 su,以便以 root 以外的用户身份执行 vlc。看起来有点乱,但它确实有效。
关于html - 生成守护进程的 CGI Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12156452/
一 点睛 线程可以设置为守护线程,ThreadGroup 也可以设置为守护 ThreadGroup,但是若将一个 ThreadGroup 设置为 deamon,也并不会影响线程的 daemon 属性,
我有一个 python 脚本需要在启动时作为守护进程运行。进程从 tty(和 pdb)分离,但代码不运行。 我已经将它缩小到一个最小的例子 import daemon from time import
reactjs isMounted API 的文档提到: You can use this method to guard asynchronous calls to setState() or fo
我正在开发一个需要嵌入 HTTP 服务器的守护进程。我正在尝试使用 BaseHTTPServer 来完成它,当我在前台运行它时,它工作正常,但是当我尝试将守护进程 fork 到后台时,它停止工作。我的
我正在尝试使用 Apache Commons Daemon 使用 Daemon 接口(interface)来守护我的应用程序。 Java 应用程序本身不执行任何操作,只是写入 stout。 我编译了j
我正在使用 Bootle Python Web Framework 在 Ubuntu 上开发网络应用程序。是否有任何有效的方法来守护启动默认 bottlepy 网络服务器的脚本? 谢谢。 UPD:现在
我一直使用 bluepill成功地守护简单的 Ruby 脚本。然而这一次,我有一个脚本,它也在加载 Rails 环境,因此我可以访问 Rails 应用程序及其各自模型的数据库连接。我使用的 bluep
我试图守护一些代码,但我遇到了一些麻烦。 如果我用 tklogger() 调用代码,它运行得很好。但是,如果我在守护程序上下文中调用它,我会得到以下跟踪信息: Traceback (most rece
我打算使用 systemd 将 celery 4.3.0 作为守护进程运行,但它给了我这个错误: 它会启动 worker 但会很快停止它们。但是,我可以通过键入以下命令手动运行工作人员: celery
我是一名优秀的程序员,十分优秀!