fedora linux 脚本case语句,Bash脚本在Linux中启动byzanz记录(Fedora Xfce)

我希望我的英语足以打开讨论...对不起,如果你发现一些错误!我试图编写一个bash脚本来启动byzanz-record,这是Linux Fedora下的一个屏幕录像机,可以确定一段时间,直到它被另一个脚本停止。 Byzanz-record需要一个选项--duration来指定记录的持续时间,但我认为它可能是不确定的。试图给这个命令:Bash脚本在Linux中启动byzanz记录(Fedora Xfce)

byzanz-record -v -a -c --display=:0.0 --width=1366 --height=768 --duration=86400 --delay=0 ~/Video/test.flv

与kill命令手动停止然后,决定时,我获得具有24小时(86400秒)的持续时间虚拟一个test.flv文件,而不可能性使用时间轴滑块可以在视频中滚动,因为视频实际上远远少于24小时,所以这非常困难,然后我想要一个显示真实持续时间的视频。所以我打算使用环境变量作为--duration选项。我想它是这样的:

#!/bin/bash

pid_byzanz=$(ps -o pid --no-headers -C "byzanz-record")

sec_byzanz=$(ps -p ${pid_byzanz} -o etime= > /tmp/byzanz_elapsed_time && more /tmp/byzanz_elapsed_time | sed -E 's/(.*):(.+):(.+)/\1*3600+\2*60+\3/;s/(.+):(.+)/\1*60+\2/' | bc)

x=$((${sec_byzanz} + 3))

byzanz-record -v -a -c --display=:0.0 --width=1366 --height=768 --duration=$x --delay=0 /home/Riccardo/Video/test.flv

exit

,我创建了两个环境变量,$ {pid_byzanz}和$ {sec_byzanz},其中第一个注册byzanz记录的过程中所必需的PID,该命令“PS -p PID -o ETIME =”这使我启动的过程的持续时间,为hh:mm:ss格式,然后我在秒命令翻译:

sed -E 's/(.*):(.+):(.+)/\1*3600+\2*60+\3/;s/(.+):(.+)/\1*60+\2/' | bc

我将在寄存器环境变量$ {sec_byzanz},我认为应该增加一个任意数字(例如3)以允许进程启动,否则它可能会在它启动的同一时刻结束,这样,也许我应该能够为我的进程获得一个无限期(因为--duration选项将是3的总和,直到从另一个启动的脚本生成的下一次查杀为止)。

这是我的想法,但该脚本无法按预期工作,因为它不会将我的$ {sec_byzanz}变量与3相加,但会创建一个只有3秒持续时间的视频。我如何才能实现我的目的。我在bash脚本开始,我试图找到一个谷歌解决方案,直到我发现这个页面(How can I add numbers in a bash script)总结两个变量,我尝试没有目标,所以我的请求直接给你。

我希望在一个解决方案。

问候,

里卡多

编辑1:

在终端,我给了命令:

./launch_byzanz-record

其中 “launch_byzanz记录” 是我的脚本里面:

#!/bin/bash

pid_byzanz=$(ps -o pid --no-headers -C "byzanz-record")

sec_byzanz=$(ps -p ${pid_byzanz} -o etime= > /tmp/byzanz_elapsed_time && more /tmp/byzanz_elapsed_time | sed -E 's/(.*):(.+):(.+)/\1*3600+\2*60+\3/;s/(.+):(.+)/\1*60+\2/' | bc)

x=$((${sec_byzanz} + 60))

byzanz-record -v -a -c --display=:0.0 --width=1366 --height=768 --duration=$x --delay=0 /home/Riccardo/Video/test.flv

exit

和commad对现有流程的输出是:

$ ps ax | grep byzanz-record

4314 pts/1 S+ 0:00 /bin/bash ./launch_byzanz-record

4318 pts/1 Sl+ 0:04 byzanz-record -v -a -c --display=:0.0 --width=1366 --height=768 --duration=60 --delay=0 /home/Riccardo/Video/test.flv

4330 pts/0 S+ 0:00 grep --color=auto byzanz-record

,直到60秒结束时(我增加了秒钟给我测试会发生什么的时候)。

编辑2:

也许我可以做这样的事情,为的想法,我必须尝试在bash脚本转换:

的基础是要选择一个大的定数,如:

24小时= “86400秒”= “记录时间” + “加时”

我想“记录时间”作为我的选项“--duration”的值。所以,我可以做一些这样的,大概是:

如果我的过程byzanz记录没有运行,我$ X环境变量是一个固定的大量(例如86400秒);

如果我的过程byzanz记录开始运行,相反,我$ X成为 “记录时间”= “86400秒” - “额外的时间”= “ 86400秒” - ( “86400秒” - “记录时间”),其中 “记录时间” 是 “的输出PS -p $ {pid_byzanz} -o ETIME =” 命令强权它的工作原理?

+0

当您设置'pid_byzanz'的值时,'byzanz-record'尚未运行,是吗?看起来你正在试图用'ps'来预测进程在运行时需要多长时间。 –

2013-03-08 19:02:31

+0

感谢您的回复!看一下我的问题的最后一级**编辑1 **。谢谢 –

2013-03-08 19:30:57

+0

我明白你的意思......我该怎么办? –

2013-03-08 19:38:41

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值