基于openjdk:8u171-alpine构建的java镜像,使用jstack命令打印线程的时候会提示以下错误: /opt # ps -ef PID USER TIME COMMAND 1 root 0:28 /usr/lib/jvm/java-1.8-openjdk/bin/java -jar /test/lib/test.jar 66 root 0:00 /bin/sh 70 root 0:00 ps /opt # jstack 1 1: Unable to get pid of Linu…
为了方便调式程序,产品中需要在程序崩溃或遇到问题时打印出当前的调用堆栈.由于是基于Linux的ARM嵌入式系统,没有足够的空间来存放coredump文件. 实现方法,首先用__builtin_frame_address()函数获取堆栈的当前帧的地址(faddr), ×faddr(栈帧的第一个单元存放的数据)即当前函数的返回地址,及调用函数中的指令地址.×(faddr-1)是调用函数的栈帧的地址,即栈帧中保存了调用函数的栈帧的地址.由此可知,同一线程的所有栈帧组成了一个链表.遍历此链表,就可以打印…
0x00 前言 吾使用 alpine 作为基础镜像构建了 jdk8 镜像,为线上业务的 java 微服务架构提供支持,但是有容器运行的 java 服务中打印的日志中一旦出现中文,就会出现诸如以下的 ???? 的乱码: 以下是解决该问题的方法,转载自 github 中这个 issues 中的解决方法. 0x01 解决 1.使用 alpine 构建镜像时,在 dockerfile 修改其语言环境: FROM alpine:3.6 # ---not shown here--- # Install la…
监控JVM中最占cpu的线程 top -Hp pid JVM中最占cpu的线程ID -o THREAD,tid,time | awk 'BEGIN {count=0; } { if($2>0.3&&$8!="-") { a[count]=$8; count++ } } END { printf " \n'\''"; for(i=0;i<count;i++) { if (i==0) { printf "%x",a[i]…
问题描述 在Alpine镜像中安装了openssh-server和openssh之后,无法执行ssh localhost.发现未启动服务,开启服务时报以下错误 / # ls /etc/init.d/sshd /etc/init.d/sshd / # /etc/init.d/sshd status sh: /etc/init.d/sshd: not found 很明显,sshd这个文件时有的.不能提示not found.通过查阅资料得到以下解决方法 解决方法 安装这个工具 apk add open…
这个镜像现在说起来简单, 带bash(增加执行脚本的兼容性,带GLIBC,中国时区,非root用户可运行crond命令-安全) 但让我开始陷入时,真的让我有段时间有点爆了. 比如,将filebeat文件夹放到alpine镜像里,运行filebeat时,死活出一个/bin/sh, ./filebeat not exist这样的提示. 百折千回之后,联想到之前作oracle JDK时,也是强调要使用glibc库,才深夜在家里测试出这个结果. (但网上没有多少文章强调go程序一定要glibc库) 另外…
一切都不难,难的就是在alpine镜像里. 最后,使用了网上编译好mysqlclient的镜像,才搞定. 记录一下. 一,基础镜像Dockerfile https://github.com/tnir/mysqlclient FROM python:3.6.8-alpine3.9 MAINTAINER Takuya Noguchi <takninnovationresearch@gmail.com> RUN apk add --update --no-cache mariadb-connecto…
编写Dockerfile文件使用最新的Alpine镜像并安装Python3环境,如下: 因为python高于3.4则不会默认安装pip,需要手动安装. 试了很多其他办法都没安装上,唯有下载get-pip.py进行安装. 这里说一下cherrypy版本不能高于9.0.0,负责等下import wsgiserver会出错,因为wsgiserver后面移出cherrypy了. FROM alpine RUN mkdir /install COPY get-pip.py /install RUN apk…
摘要:该项目是DAYU平台的数据开发(DLF),数据开发中一个重要的功能就是ETL(数据清洗).ETL由源端到目的端,中间的业务逻辑一般由用户自己编写的SQL模板实现,velocity是其中涉及的一种模板语言. Velocity之OOM Velocity的基本使用 Velocity模板语言的基本使用代码如下: 1. 初始化模板引擎 2. 获取模板文件 3. 设置变量 4. 输出 在ETL业务中,Velocity模板的输出是用户的ETL SQL语句集,相当于.sql文件.这里官方提供的api需要传…
转自:http://itindex.net/detail/16418-linux-%E4%BF%A1%E5%8F%B7-%E5%A0%86%E6%A0%88 此文只简单分析发送信号给用户程序后,用户堆栈和内核堆栈的变化.没有分析实时信号,当然整个过程基本一致.很多参考了<情景分析>,所以有些代码和现在的内核可能不同,比如RESTORE_ALL,但大体的机制是类似的. . 一个信号小例子 hex@Gentoo ~/signal $ cat sigint.c #include <stdio.…