我使用init脚本来运行一个简单的进程,该进程以:
start-stop-daemon --start --quiet --chuid $DAEMONUSER \
--make-pidfile --pidfile $PIDFILE --background \
--exec $DAEMON $DAEMON_ARGS
Run Code Online (Sandbox Code Playgroud)
名为$ DAEMON的进程通常将日志信息打印到其标准输出.据我所知,这些数据没有存储在任何地方.
我想将$ DAEMON的stdout写入或附加到某个文件中.
我知道的唯一解决方案是告诉start-stop-daemon直接调用一个shellscript而不是$ DAEMON; 然后脚本调用$ DAEMON并写入日志文件.但这需要一个额外的脚本,就像修改守护进程本身一样,似乎是解决这种常见任务的错误方法.
我使用两个版本的ROS彼此相邻.要使用一个,我必须为特定版本获取一些环境变量.我想创建一个执行此操作的脚本.但是,如果我创建一个类似下面的脚本,则未设置变量,它们可能设置在子shell中.如何将文件源到主终端shell?
source.sh:
source /opt/ros/fuerte/setup.bash;
source ~/fuerte_workspace/setup.bash;
Run Code Online (Sandbox Code Playgroud)
这是我如何调用source.sh:
./source.sh
# This does not echo anything, but I expect it should
echo $ros_config
Run Code Online (Sandbox Code Playgroud)
更新:通过采购答案中建议的source.sh,我现在可以看到正在设置的变量.
source ./source.sh
# This works now
echo $ros_config
Run Code Online (Sandbox Code Playgroud) 我可以使用什么字符将评论放在Exuberant Ctags .ctags文件中?
我想添加注释和解释,也许是禁用一些正则表达式.
但我找不到ctags-exuberant接受的评论字符!
我一直收到警告:
ctags: Warning: Ignoring non-option in /home/joey/.ctags
Run Code Online (Sandbox Code Playgroud)
这比错误更好,但仍然有点烦人.
我试过# // /* ... */并;作为评论,但是ctags试图解析它们!
这是一个示例文件,其中包含一些ctags会抱怨的注释:
# Add some more rules for Javascript
--langmap=javascript:+.jpp
--regex-javascript=/^[ \t]*var ([a-zA-Z_$][0-9a-zA-Z_$]*).*$/\1/v,variable/
--regex-javascript=/^[ \t]*this\.([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]*=.*$/\1/e,export/
--regex-javascript=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*):.*$/\1/p,property/
--regex-javascript=/^\<function\>[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)/\1/f,function/
# Define tags for the Coffeescript language
--langdef=coffee
--langmap=coffee:.coffee
--regex-coffee=/^class @?([a-zA-Z_$][0-9a-zA-Z_$]*)( extends [a-zA-Z_$][0-9a-zA-Z_$]*)?$/\1/c,class/
--regex-coffee=/^[ \t]*(@|this\.)([a-zA-Z_$][0-9a-zA-Z_$]*).*$/\2/e,export/
--regex-coffee=/^[ \t]*@?([a-zA-Z_$][0-9a-zA-Z_$]*):.*[-=]>.*$/\1/f,function/
--regex-coffee=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]+=.*[-=]>.*$/\1/f,function/
--regex-coffee=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]+=[^->\n]*$/\1/v,variable/
--regex-coffee=/^[ \t]*@?([a-zA-Z_$][0-9a-zA-Z_$]*):.*$/\1/p,property/
Run Code Online (Sandbox Code Playgroud) ES5语言规范清楚地表明它的Error(foo)作用与此相同new Error(foo).
但我注意到,在野外,较长的new Error(foo)形式更常见.
这有什么理由吗?
是否有使用new Error(foo)优先使用的情况Error(foo)?
你知道wmctrl的其他选择吗?一个程序,允许您从命令行操作窗口和窗口管理.
wmctrl的一个缺点是,虽然你可以操作当前窗口,但是你不能让wmctrl列出关于当前窗口的信息(它忽略了-r).
我想将错误传递给警报,以警告用户他们在代码中犯了错误,即使他们没有打开控制台.
var doc=(frame.contentWindow.document || obj.contentDocument|| obj.contentWindow);
var head = doc.getElementsByTagName('head')[0];
var scriptElement = doc.createElement('script');
scriptElement.setAttribute('type', 'text/javascript');
scriptElement.text = scripts;
try{
head.appendChild(scriptElement);
}
catch(e){ alert("error:"+e.message +" linenumber:"+e.lineNumber);}
Run Code Online (Sandbox Code Playgroud)
当脚本包含错误时,appendChild会抛出错误.它直接进入控制台,我希望它显示在警报中,因为它适用于孩子,他们可能不会检查控制台.try catch块不会捕获错误.我用eval(脚本)试了一下.
try{
eval(scripts);} catch(e){ alert("error:"+e.message +" linenumber:"+e.lineNumber);}
Run Code Online (Sandbox Code Playgroud)
这确实有效,但这意味着代码执行了两次,这在某些情况下非常不方便.
我试过猴子修补console.error:
console.log=function(){alert("taking over the log");}
console.error=function(){alert("taking over the log");}
Run Code Online (Sandbox Code Playgroud)
但这只有在我真正使用console.error时才有效.不是在抛出实际错误时.如果不是console.error,在真正的错误情况下,什么函数将错误发送到控制台?我可以访问并更改它吗?有任何想法吗?帮助将非常感激.谢谢Jenita
Meteor似乎是快速编写动态应用程序的一个很好的框架,但必须有一个问题.
据推测,使用Meteor构建应用程序时会遇到一些限制.
我正在寻找一种方法来评估Meteor是否是特定项目的不错选择.
您能否提供一些在Meteor中无法轻易编写的应用程序示例,并且可以使用不同的,更可自定义的框架更好地编写?
关于"我应该使用分号吗?"有很多问题.和"分号注射如何工作?",但我想找一个能够尽可能避免使用分号的编码人员的无FUD建议.
如果有人像izs或Bootstrap开发者那样选择不用分号编写Javascript,在什么条件下他必须添加分号,还应该做些什么来确保他的代码不会失败?
ccache是一种通过缓存结果来加速构建您之前已经构建的 C 二进制文件的绝妙方法。(另一个很棒的工具是distcc,它将代码传递给其他机器进行并行编译!)
我可以npm在使用ccache构建 C 文件时使用gyp吗?
下面是一种测试方法:
$ time npm install mmmagic
...
npm install mmmagic 103.83s user 9.06s system 100% cpu 1:51.84 total
$ rm -rf node_modules/mmmagic
$ time npm install mmmagic
...
npm install mmmagic 103.48s user 8.59s system 102% cpu 1:48.87 total
Run Code Online (Sandbox Code Playgroud)
如果我们可以使用ccache,那么在第二次尝试时它应该会明显更快。
查看是否ccache被调用以及是否有帮助的另一种方法是在构建正在进行时在单独的终端中运行它:
$ watch -d ccache -s
Run Code Online (Sandbox Code Playgroud)
这将显示ccache的统计信息的实时更新。