Linux 进程的一些问题

在开发中遇到的问题:用 pyinstaller 编译出的二进制文件,用 python 的 paramiko 库 ssh 连接后运行却运行失败,记录一下排查错误的过程,同时学到了一些常用的指令。

  1. 首先认为是二进制工具本身有问题
    1
    ps aux
    查看目前所有进程及其状态,找到二进制工具进程对应的 PID 号 4975
    1
    2
    cd /proc/4975
    cat status
    显示出进程的状态,查看系统对每个进程限制的最大线程量
    1
    cat /proc/sys/kernel/threads-max
  2. 可能是由于命令在 stderr 或 {} 上产生过多的输出而导致缓冲区溢出,导致命令完成的信号丢失
    但是先前会有很多输出数据,并没有出现此问题,也不会是超时问题
  3. 问题可能出现在 paramiko 上,发现 exec_command 函数中有一参数,get_pty,设置 get_pty=True
    1
    stdin, stdout, stderr = client.exec_command(cmd, get_pty=True)
    问题完美解决