小编Nei*_*ill的帖子

在容器中运行服务(upstart/init.d)

我正在尝试在docker中启动一个具有许多init和upstart服务的系统,我得到了这个错误.

initctl: Unable to connect to Upstart:
Failed to connect to socket /com/ubuntu/upstart: Connection refused
Run Code Online (Sandbox Code Playgroud)

所有的解决方法建议与/ bin/true建立硬链接以使错误无效.但是我需要将这些服务由upstart管理,以实现restart-ability和upstart发出事件才能工作......

因为似乎docker不支持这个,我正在考虑编写脚本以启动/etc/rcX.d中的所有服务并跟踪PID的严重破解.这并不能解决来自暴发户的缺乏发射事件的问题.

有关如何在docker中启动新手进程的任何其他想法?

init upstart docker

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

Bash:如何在错误上获得调用链?

我在bash中有一个后跟踪功能,运行良好(下面的代码),但问题是当它遇到错误时bash本身,它没有给出回溯或任何有助于确定调用者的信息,可以帮助调试问题.

例如:

./c.sh:line 23:urgh:找不到命令

function backtrace () {
    local deptn=${#FUNCNAME[@]}

    for ((i=1; i<$deptn; i++)); do
        local func="${FUNCNAME[$i]}"
        local line="${BASH_LINENO[$((i-1))]}"
        local src="${BASH_SOURCE[$((i-1))]}"
        printf '%*s' $i '' # indent
        echo "at: $func(), $src, line $line"
    done
}
Run Code Online (Sandbox Code Playgroud)

是否有可能在这些错误上捕获bash所以我可以调用自己的函数来获得这样的输出?

 at: c(), ./c.sh, line 22
  at: b(), ./c.sh, line 11
   at: main(), ./b.sh, line 5
Run Code Online (Sandbox Code Playgroud)

更新:建议和跟踪陷阱的最终工作版本出错:

function backtrace () {
    local deptn=${#FUNCNAME[@]}

    for ((i=1; i<$deptn; i++)); do
        local func="${FUNCNAME[$i]}"
        local line="${BASH_LINENO[$((i-1))]}"
        local src="${BASH_SOURCE[$((i-1))]}"
        printf '%*s' $i '' # indent
        echo "at: $func(), $src, line …
Run Code Online (Sandbox Code Playgroud)

bash

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

C:const初始化器和调试符号

在代码审查中,我要求使用下面的选项(1),因为它导致创建符号(用于调试),而(2)和(3)似乎至少对gcc和icc没有这样做.但是(1)不是真正的const,不能在所有编译器上用作数组大小.有没有更好的选项,包括调试符号,真的是C的常量?

符号:

gcc f.c -ggdb3 -g ; nm  -a a.out | grep _sym
0000000100000f3c s _symA
0000000100000f3c - 04 0000 STSYM _symA
Run Code Online (Sandbox Code Playgroud)

码:

static const int symA = 1;  // 1

#define symB 2 // 2

enum { symC = 3 }; // 3
Run Code Online (Sandbox Code Playgroud)

GDB输出:

(gdb) p symA
$1 = 1

(gdb) p symB
No symbol "symB" in current context.

(gdb) p symC
No symbol "symC" in current context.
Run Code Online (Sandbox Code Playgroud)

而为了完整性,来源:

#include <stdio.h>

static const int symA = 1;

#define symB …
Run Code Online (Sandbox Code Playgroud)

c const declaration

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

x86 PIC,QEMU在所有CPU上引发中断是否正确?

我最近不得不解决x86 PIC的专有操作系统问题,该操作系统期望的计时器仅在CPU0上中断。我启用了IO-APIC来解决此问题,并进行了CPU引导,因此中断仅进入CPU0。问题解决了。

有人告诉我,我们的硬件坏了,无法做到这一点。即,仅使用PIC时,在所有CPU上引发定时器中断。有问题的“硬件”是QEMU / KVM。

QEMU / KVM在这里吗?操作系统是否做出了无效的假设?

我怀疑QEMU / KVM完全正确,操作系统应该能够处理CPU上的定时器中断!= 0 ...

x86 kvm qemu pic apic

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

KVM和rdtsc延迟

作为调试来宾VM的一部分,我们非常广泛地使用rdtsc来监视使用的时间量(正常,时钟周期)。有人提出这样的问题,因为rdtsc会导致VM退出,这本身就很昂贵。我认为没有更低级别的方法可以找出已经消耗了多少时钟时间或等效时间。还有其他解决方案吗?这真的很贵吗?

x86 kvm

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

标签 统计

kvm ×2

x86 ×2

apic ×1

bash ×1

c ×1

const ×1

declaration ×1

docker ×1

init ×1

pic ×1

qemu ×1

upstart ×1