标签: debug

如何找出重启后linux服务器崩溃的原因

这是交易,

开始工作只是发现一台服务器根本没有响应,机器已打开,但屏幕根本不显示任何内容,不响应键盘输入(我没有启用 sys rq 键)。

服务器需要尽可能快地启动和运行,所以我对服务器进行了硬重置,现在一切正常。

现在我的老板想知道发生了什么以及为什么。

那么如何在重新启动之前开始调试出了什么问题呢?我应该特别注意哪些日志,您现在是否有任何关于如何调试随机服务器冻结的巧妙技巧(这种情况不经常发生 - 这是我第一次看到它)

感谢您提供任何有用的指导方针和建议。

Ps:我正在运行 ubuntu 服务器 12.04。

linux ubuntu debug

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

奇怪的行为 ssh -> bash --> (tty no echo) --> c 程序?

在工作中,我们有一个旧的 C 程序,它与霍尼韦尔的工业手持终端一起工作。

该终端有自己的 ssh 客户端来连接到 linux redhat 6.6 服务器。一旦它连接到 linux box(使用某个用户),bash shell 就会启动一个 C 程序,并带有以下参数

export TERM=vt200
stty raw icrnl -echo
$APLI_EXEC/program param1 param2
Run Code Online (Sandbox Code Playgroud)

所以流程就像 => 客户端 ssh --> ssh 服务器-> bash --> c 程序

应用程序(或看起来)运行良好,但有时(每周 1-3-5 次)随机终端停止从服务器接收数据,但应用程序接收来自服务器的输入。就像在 shell 中编写 Ctrl+S 一样。

使用 strace 调试应用程序和 ssh 进程时,我意识到一些奇怪的事情:

应用程序 strace 很好

write(1, "1", 7) = 1
Run Code Online (Sandbox Code Playgroud)

但是 ssh 过程的 strace 不好(我认为..是的,我看到 ioctl 没有 echo 参数,但是...)

rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(3, "\227\316\242\350\261\330)\300e\210\352\367\2VX\24\305\2474\272\371\34\273n{\323p.\211\17H\327"..., 16384) …
Run Code Online (Sandbox Code Playgroud)

debug ssh bash

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

识别内存泄漏的进程

在 linux 服务器 (Ubuntu Lucid) 上,我使用的交换在服务器上按小时不断增长,我很难确定哪个进程在交换中增长。

我可以使用什么工具来监控它?

linux memory debug swap

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

为什么strace打开,读取512字节,然后fstat libncurses?

我有以下 strace 输出,我正在通过这些输出自学更多关于程序流程的知识。这是让我困惑的部分:

16:08:02 open("/lib/libncurses.so.5", O_RDONLY) = 3 <0.000046>
16:08:02 read(3, "\x7f\"..., 512) = 512 <0.000048>
16:08:02 fstat64(3, {st_dev=makedev(202, 0), st_ino=16548, st_mode=S_IFREG|0644, st_nlink=1, st_uid=0, st_gid=0, st_blksize=4096, st_blocks=464, st_size=231576, st_atime=2011/02/06-15:37:43, st_mtime=2011/01/04-06:05:23, st_ctime=2011/02/06-15:37:43}) = 0 <0.000038>
Run Code Online (Sandbox Code Playgroud)

通过读取前 512 个字节获得了什么?似乎这种模式在共享库中很常见。

更新:我刚刚得到了一个很好的答案,澄清了 512 字节的长度。具体来自 elf/dl-load.c 中的评论:

ELF 标头 32 位文件的长度为 52 字节,而 64 位文件的长度为 64 字节。每个程序头条目的长度分别为 32 和 56 字节。即,即使文件有 10 个程序头条目,我们也只需要分别读取 372B/624B。为程序注释添加一点余量,分别读取 32 位和 64 位文件的 512B 和 832B 就足够了。

linux debug debian strace

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

标签 统计

debug ×4

linux ×3

bash ×1

debian ×1

memory ×1

ssh ×1

strace ×1

swap ×1

ubuntu ×1