僵尸进程和孤儿进程简介

Posted on 2016-11-30 in Linux • Tagged with linuxLeave a comment

前言

最近在做内部使用的 Docker base image,老大甩给我几个链接让我关注一下 Docker init process 的问题,其中有一篇文章详细描述了 Docker PID 1 僵尸程序回收的问题,我也趁此机会学习了一下有关僵尸进程和孤儿进程的知识。

基本概念

Linux 系统中运行的所有进程按照一颗树的形式组织。每个进程都可以生成子进程,并且除了最顶端的init进程,每个进程都会有一个父进程。

当我们启动系统的时候,kernel会启动最顶端的init进程,然后由init进程启动余下的部分,比如说SSH服务,Docker服务,Apache/Nginx,图形化界面等等,而它们又可以继续生成其他的子进程。

Unix process hierarchy

通常来说,当一个子进程退出的时候,父进程会收到操作系统发来的SIGCHLD信号并且调用wait()或者waitpid()来取得子进程的终止状态,这个行为被叫做 ...

Continue reading

Linux 文件的三个时间

Posted on 2016-8-2 in Linux • Tagged with linuxLeave a comment

每个 Linux 文件下面都会记录许多的时间参数,其实是有三个主要的变动时间,他们的意义是什么呢?

mtime

mtime 可以理解为 modification time,当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性或权限。

ctime

ctime 可以理解为 status time,当该文件的“状态”(status)改变时,就会更新这个时间,比如说权限与属性被更改时,都会更新这个时间。

atime

atime 可以理解为 access time,当“该文件的内容被取用”时,就会更新这个读取时间(access)。举例来说,使用 cat 去读取文件时,就会更新该文件的 atime。

举个例子

在默认情况下,ls 显示出来的是文件的mtime。

jonathang@jonathang-pc ...
Continue reading

find 命令用法记录

Posted on 2016-4-25 in Linux • Tagged with linux, commandLeave a comment

find 命令在 Linux 中是一个经常使用的命令,被用于在目录层次结构中搜索文件。

它最简单的使用是,搜索一个或多个目录。比如说,输出家目录及子目录的列表:
$ find ~

常见用法

  1. 查找当前文件夹及子文件夹里有文件名为“aaa”的文件
    $ find . -name "abc"
    -name:表示要根据名称查找,我们也可以指定 “*.py” 来表示要查找所有的 Python 脚本文件。

  2. 查找当前文件夹及子文件夹里有没有“bbb”目录
    $ find . -type d -name bbb
    -type:表示设定查找类型,d表示文件夹,f表示普通文件,l表示链接文件。

  3. 查找当前文件夹及子文件夹中属于用户“tntc4stl3”的文件
    $ find . -user tntc4stl3
    -user:设定所属用户的名称,还可以指定-group ...

Continue reading

Docker 默认配置文件不生效

Posted on 2016-2-28 in Docker • Tagged with docker, linuxLeave a comment

最近的工作需要跟 Docker 打交道,并且搭建了一个私有仓库在本地环境存储相应的 Docker 镜像,但是在往私有仓库(非HTTPS)推镜像的时候,出现了 x509: certificate signed by unknown authority 的错误,Google 后得知解决方法是在 Docker 运行的时候添加 --insecure-registry 选项,或者修改 /etc/default/docker 文件增加一个配置项。

我选择 option 2。于是诡异的事情发生了。

我的系统是 Ubuntu 15.04,Docker 版本是 1.10.2(写本文的时候是最新的稳定版)。

按照网上的解决方案,我在 /etc/default/docker 中增加了一行 DOCKER_OPTS="--insecure-registry ...

Continue reading

dmidecode 硬件信息查看

Posted on 2015-3-9 in Linux • Tagged with linux, commandLeave a comment

在新东家工作的期间,接触了很多以前没见过的硬件和 Linux 命令,准备抽空整理一下,做个备忘。

先说说 dmidecode

在此之前呢,先介绍一下DMI。所谓DMI,即 Desktop Management Interface,DMI 表是一张包含有系统的硬件组件描述,以及序列号、BIOS版本这类有用的信息的表,以人类可读的样式展示出来。DMI 表的意义在于,让我们在不接触实体硬件的情况家探测硬件信息,方便了用户,同时这也意味着展示出来的信息可能是不可靠的。

最简单的方法将显示dmidecode能显示的全部 DMI 信息:

$ sudo dmidecode

但是有时候我们只需要找出我们关注的信息。

1. 常用参数

  • -q 或 --quiet:
    少显示一些信息,未知或者OEM指定的信息讲不会显示,为了得到简要的信息,这一条比较有用。

  • -t 或者 --type TYPE: 指定要显示信息的类型。

  • -s 或者 --string KEYWORD ...

Continue reading