小编xoi*_*oid的帖子

docker status永远"重述"

我创建了一些容器,它们还没有准备好使用,总是"重新启动"状态:

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS                        NAMES
02141a219070        debian              "/bin/bash"         53 minutes ago      Restarting (0) 3 minutes ago                                 test
3a8b684011d4        debian              "/bin/bash"         About an hour ago   Restarting (0) 4 minutes ago    10.140.10.151:443->443/tcp   support-web.equifax.ru
ad40188569cd        debian              "/bin/bash"         4 hours ago         Restarting (0) 25 minutes ago   10.140.10.150:443->443/tcp   vpn.equifax.ru
Run Code Online (Sandbox Code Playgroud)

没有执行官:

docker exec test/bin/bash

来自守护程序的错误响应:容器测试正在重新启动,等待容器运行

没有日志:

码头工人日志测试

我用这种方式创建了容器:

docker run --name = test --restart = always debian/bin/bash

如何解决Docker问题?

docker

6
推荐指数
1
解决办法
6864
查看次数

更优雅的方法来构造添加WHERE和使用占位符的SQL

构造具有各种WHERE条件的sql的最佳方法是什么?我的解决方案看起来很难看

my ($where, @values);
if ($phone_number)
{
    $where = 'AND pnone_number=?';
    @values = ($from, $till, $phone_number);
}
else 
{
    $where = '';
    @values = ($from, $till);
}
my $sql = 'SELECT * FROM calls WHERE time between ? AND ? '.$where.' ORDER BY time';
my $res = $dbh->selectall_arrayref($sql, undef, @values) or warn 'error';
Run Code Online (Sandbox Code Playgroud)

perl dbi

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

如果没有这样的文件,"for"循环通配符被评估为变量

$ for f in /etc/shell*; do echo $f; done
/etc/shells
$
Run Code Online (Sandbox Code Playgroud)

好!

$ for f in /etc/no_such*; do echo $f; done
/etc/no_such*
$
Run Code Online (Sandbox Code Playgroud)

坏!

如果没有文件,我怎样才能获得通配符评估?

bash for-loop wildcard

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

从标准输入创建 tar 文件

我想即时将 mysql 备份到磁带。有些喜欢

mysqldump|tar --filename=mysqlbackup.sql > /dev/tape
Run Code Online (Sandbox Code Playgroud)

我希望磁带的内容是 tar 文件,而该文件的内容是“mysqldump.sql”

所以命令“tar -t < /dev/tape”应该输出

mysqldump.sql
Run Code Online (Sandbox Code Playgroud)

我不想首先将 mysqldump 保存到文件,因为我没有空间和 IO 资源。我想即时完成。

我不想要“mysqldump > /dev/tape”,因为没有元信息,也无法知道磁带有任何内容/

pipe tar

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

(m/regexp /)或{倍; 命令; 后; 要么; }

我非常喜欢这种语法:

try_something() or warn "Cant do it"; 
Run Code Online (Sandbox Code Playgroud)

如何在之后添加更多命令or

例如,它在这段代码中很有用:

foreach (@array)
{
   m/regex/ or {warn "Does not match"; next;}  # this syntax is wrong
   ...
}
Run Code Online (Sandbox Code Playgroud)

我找到的一种方法是

try_something() or eval {warn "Can't do it"; next;}; 
Run Code Online (Sandbox Code Playgroud)

但我认为这是个坏主意.

最好的答案:

  1. do比...更好eval.
  2. 逗号运算符甚至更好:do_smth() or warn("Does not match"), next;Nota bene:括号是必需的,warn因此next不会将其解析为其参数之一.

error-handling perl

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

做危险的事情,如果失败,试着修复它并再做一次.如果仍然失败,请放弃

我正在寻找好的形式

if (! write_to_file($data) )
{
    open_this_file($file_name)
    write_to_file($data) or die "Cant write to $file_name" ;
}
Run Code Online (Sandbox Code Playgroud)

它看起来很不清楚,不是吗?怎么写它自我解释?

perl

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

巨大的映射文件上的 strstr

我打开巨大的(11Gb)文件,将其映射到内存,但无法搜索文件中的字符串

我的代码是

 if ( (fd  = open("l", O_RDONLY)) < 0 )     err_sys("Cant open file");
 if ( fstat(fd, &statbuf) < 0 )             err_sys("Cant get file size");
 printf("size is %ld\n", statbuf.st_size);

 if ( (src = mmap(0, statbuf.st_size, PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED )  err_sys("Cant mmap");
 printf("src pointer is at %ld\n", src);

 char * index = strstr(src, "bin/bash");
 printf("needle is at %ld\n", index);
Run Code Online (Sandbox Code Playgroud)

它适用于小文件,但在巨大的源上返回 0。我应该使用什么函数来搜索巨大的映射文件?

输出是:

size is 11111745740
src pointer is at 140357526544384
needle is at 0
Run Code Online (Sandbox Code Playgroud)

c string mmap

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

process.env TypeError:无法读取未定义的属性“PATH”

为什么我在这样的代码中收到“无法读取未定义的属性‘PATH’”

console.log(process.env.PATH)
Run Code Online (Sandbox Code Playgroud)

我期望获得UNIX环境变量PATH (PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

但我的node.js“process.env”变量未定义

environment-variables undefined node.js

0
推荐指数
1
解决办法
1606
查看次数