小编Tom*_*ner的帖子

18
推荐指数
3
解决办法
1万
查看次数

编写运行命令并记录退出代码的包装函数的最佳方法是什么

我目前使用此函数来包装执行命令并记录它们的执行,并返回代码,并在非零返回代码的情况下退出.

然而,这是有问题的,因为它显然是双插值,使得带有单引号或双引号的命令会破坏脚本.

你能推荐一个更好的方法吗?

这是功能:

do_cmd()
{
    eval $*
    if [[ $? -eq 0 ]]
    then
        echo "Successfully ran [ $1 ]"
    else
        echo "Error: Command [ $1 ] returned $?"
        exit $?
    fi
}
Run Code Online (Sandbox Code Playgroud)

unix bash shell

17
推荐指数
2
解决办法
8454
查看次数

更改脚本中的工作目录的最佳做法是什么?

你认为在bash或Perl脚本中更改目录是可以接受的吗?或者应该不惜一切代价避免这样做?

这个问题的最佳做法是什么?

bash shell perl zsh

11
推荐指数
2
解决办法
2万
查看次数

如何旋转和压缩Log4perl日志文件?

据我所知,CP4中的Log4Perl或其任何相关模块都不支持日志文件的旋转和压缩.

旋转可以通过使用:

  1. 登录:: Log4perl :: Appender的::文件
  2. Log :: Dispatch :: FileRotate.

但这两个模块都不支持旋转压缩.(Log :: Dispatch :: FileRotate在它的待办事项列表中有它,但它目前没有实现).

可以使用Linux中的标准Logrotate工具,使用Log :: Log4perl :: Appender :: File的recreate_check_interval或recreate_check_signal来完成此操作.

从最初的测试中,它看起来像使用日志轮播与delaycompress选项就可以了-即使在高负荷的机器上,因为一旦文件被移动,log4perl将继续记录到同一个文件句柄,直到该信号毫无遗漏.

但是,如果未使用delaycompress,并且压缩日志文件与通过Perl程序捕获信号之间存在(甚至稍有延迟),则某些日志记录数据可能会丢失.

你怎么看?还有其他我们没有想到的选择吗?

perl rotation log4perl

10
推荐指数
2
解决办法
4220
查看次数

有没有办法确定客户在网页上花费的时间

假设我有一个开源Web服务器或代理我可以增强,让我们说apache或squid.

有没有办法确定每个客户在网页上花费的时间?

HTTP当然是无状态的,所以它不是微不足道的,但也许有人知道如何处理这个问题?

apache proxy apache2 squid

6
推荐指数
2
解决办法
337
查看次数

如何减少常量中的重复?

我有这个Perl脚本,有很多已定义的配置文件常量.例如:

use constant  {
LOG_DIR                             => "/var/log/",
LOG_FILENAME                        => "/var/log/file1.log",
LOG4PERL_CONF_FILE                  => "/etc/app1/log4perl.conf",
CONF_FILE1                          => "/etc/app1/config1.xml",
CONF_FILE2                          => "/etc/app1/config2.xml",
CONF_FILE3                          => "/etc/app1/config3.xml",
CONF_FILE4                          => "/etc/app1/config4.xml",
CONF_FILE5                          => "/etc/app1/config5.xml",
};
Run Code Online (Sandbox Code Playgroud)

我想减少"/ etc/app1"和"/ var/log"的重复,但使用变量不起作用.使用先前定义的常量也不能在相同的"使用常量块"中工作.例如:

use constant {
LOG_DIR                             => "/var/log/",
FILE_FILENAME                       => LOG_DIR . "file1.log" 
};
Run Code Online (Sandbox Code Playgroud)

不起作用.

使用单独的"使用常量"块可以解决此问题,但这会增加许多不需要的代码.

这样做的正确方法是什么?

谢谢.

perl refactoring constants

6
推荐指数
2
解决办法
272
查看次数

如何直接显示web2py错误(自动重定向到票证)

在开发web2py应用程序时,它很常见,有各种语法错误,数据库问题等.

但是,在调试这些问题时(在非生产系统中),默认情况下会显示故障单链接,而不是实际故障单.

有没有办法自动重定向到实际票证,无需单击(并等待实际票证加载)?

web2py

5
推荐指数
1
解决办法
1391
查看次数

如何让log4perl输出更容易阅读?

使用log4perl时,我使用的调试日志布局是:

log4perl.appender.D10.layout=PatternLayout
log4perl.appender.D10.layout.ConversionPattern=%d [pid=%P] %p %F{1} (%L) %M %m%n
log4perl.appender.D10.Filter = DebugAndUp
Run Code Online (Sandbox Code Playgroud)

这会生成非常详细的调试日志,例如:

2008/11/26 11:57:28 [pid=25485] DEBUG SomeModule.pm (331) functions::SomeModule::Test Test XXX was successfull
2008/11/26 11:57:29 [pid=25485] ERROR SomeOtherUnrelatedModule.pm (99999) functions::SomeModule::AnotherTest AnotherTest YYY has faled
Run Code Online (Sandbox Code Playgroud)

这很好用,并提供出色的调试数据.

但是,调试日志的每一行都包含不同的函数名称,pid长度等.这使得每个行的布局都不同,并且使得读取调试日志比需要的更加困难.

是否有一种方法在log4perl中格式化行,以便调试元数据(直到实际日志消息的所有内容)在末尾用空格/制表符填充,并使实际消息从同一列文本开始?

perl logging log4perl

4
推荐指数
2
解决办法
1197
查看次数

如何在postgresql 8.3.7中的分区表上使用索引

我有这种情况,运行一个由分区表中的索引列过滤的查询,执行全表扫描.

显然,这是postgresql中的一个已知问题,这里有详细解释.

除了对每个分区执行查询,然后对所有结果执行UNION之外,还有更优雅的方法吗?

postgresql indexing partitioning

4
推荐指数
1
解决办法
8623
查看次数

时区应该是常数还是变量?

我在代码中有几个地方需要使用TimeZone.我可以使用DateTime :: TimeZone获取时区名称.将时区名称放在常量中是否合理?或者它应该在变量中?

perl timezone datetime

2
推荐指数
1
解决办法
227
查看次数