漫画赏析:Linux 内核到底长啥样(转)

今天,我来为大家解读一幅来自 TurnOff.us 的漫画 “InSide The Linux Kernel” 。 TurnOff.us 是一个极客漫画网站,作者Daniel Stori 画了一些非常有趣的关于编程语言、Web、云计算、Linux 相关的漫画。今天解读的便是其中的一篇。 在开始,我们先来看看这幅漫画的全貌! Inside the Linux Kernel 这幅漫画是以一个房子的侧方刨面图来绘画的。使用这样的一个房子来代表 Linux 内核。   地基 作为一个房子,最重要的莫过于其地基,在这个图片里,我们也从最下面的地基开始看起: Filesystem 地基(底层)由一排排的文件柜组成,井然有序,文件柜里放置着“文件”——电脑中的文件。左上角,有一只胸前挂着 421 号牌的小企鹅,它表示着 PID(进程 ID(Process ID)) 为 421 的进程,它正在查看文件柜中的文件,这代表系统中正有一个进程在访问文件系统。在右下角有一只小狗,它是看门狗(watchdog) ,这代表对文件系统的监控。   一层(地面层) floor 看完了地基,接下来我们来看地基上面的一层,都有哪些东西。 Process Table 在这一层,最引人瞩目的莫过于中间的一块垫子,众多小企鹅在围着着桌子坐着。这个垫子的区域代表进程表。 左上角有一个小企鹅,站着,仿佛在说些什么这显然是一位家长式的人物,不过看起来周围坐的那些小企鹅不是很听话——你看有好多走神、自顾自聊天的——“喂喂,说你呢,哇塞娃(171),转过身来”。它代表着 Linux 内核中的初始化(init)进程,也就是我们常说的 PID 为 1 的进程。桌子上坐的小企鹅都在等待状态(wait)中,等待工作任务。 watchdog 瞧瞧,垫子(进程表)旁边也有一只小狗,它会监控小企鹅的状态(监控进程),当小企鹅们不听话时,它就会汪汪地叫喊起来。 httpd process 在这层的左侧,有一只号牌为 1341 的小企鹅,守在门口,门上写着 80,说明这个…

Continue Reading

awk一行和多行之间的转换

    很多时候我们需要把一行字符串按照一定的分割符切割成多行来打印,反之也经常碰到把多行字符串合并为一行显示(例如SQL语句操作多个userid,select * from user where mobile in (monile1,monile2,……….)),下面来给出解决方法   1  一行分散成多行显示 文件file的内容如下, 1 2 3 4 5 6 命令: awk  '{ for (i=1;i<=NF;i++) printf "%s\n",$i }' file   2  多行合并为一行显示 文件file的内容如下, 1 2 3 4 5 6 命令: awk '{ printf "%s "$0 }'

Continue Reading

AWK指定多个空格作为分隔符

  在查看nginx日志里被get的目录时,使用AWK命令指定多个分隔符可以解决问题,命令如下:   awk -F'(GET )|[ ]+' '{print $7}' /var/log/nginx/access.log  | sort -nr | uniq -c | sort -n | tail   对应的示例输出结果如下,   530 /wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1     544 /wp-content/plugins/sidebar-login/assets/css/sidebar-login.css?ver=2.7.3     595 /wp-content/themes/boston/assets/fonts/Norwester-Regular.ttf     850 /wp-content/themes/boston/assets/fonts/Norwester-Regular.woff     917 /robots.txt    3851 /wp-admin/admin-ajax.php    4632 /xmlrpc.php    4990 /   27450 /wp-login.php   37397 /wp-includes/js/wp-emoji-release.min.js?ver=4.6.1  

Continue Reading

Jira+Confluence集成环境的搭建(敏捷Agile)

       公司准备实行敏捷开发,经过一番工具选择,最终选定了jira和confluence,jira用作项目管理,confluence用于文档管理,下面说说这两个系统的搭建过程和集成设置。 一、软硬件准备 1  jira7.2.6软件       官网下载地址  https://downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-7.2.6.tar.gz     备用下载地址  https://peloo.net/download/jira/atlassian-jira-software-7.2.6.tar.gz 2  jdk1.8.0_112  下载页面  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html     备用下载地址  https://peloo.net/download/jdk/jdk-8u112-linux-x64.tar.gz 3  confluence5.10.8       官网下载地址  https://downloads.atlassian.com/software/confluence/downloads/atlassian-confluence-5.10.8.tar.gz     备用下载地址  https://peloo.net/download/jira/atlassian-confluence-5.10.8.tar.gz 4  mysql-server 5.6.34  下载地址   http://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.34.tar.gz 5  mysql-connector jar包       MySQL官网下载地址  http://120.52.72.23/cdn.mysql.com/c3pr90ntc0td//Downloads/Connector-J/mysql-connector-java-5.1.40.tar.gz     备用下载地址  https://peloo.net/download/db/mysql-connector-java-5.1.40.tar.gz 6  操作系统  CentOS6.X 7  服务器两台,强烈建议独立物理机,本人的服务器ip地址分别为172.25.0.105和172.25.0.107,分别部署jira和confluence 二、基础环境搭建 1  Java环境安装与配置…

Continue Reading

linux ACL权限的设置

对于文件的权限,简单的用命令chmod设定,在允许特定用户访问的时候,显得不够精细。   举个例子,目录/var/www/download的权限设定位755,属主用户是pc,属组也是pc,如下图, 现在此目录需要配置在nginx服务器上用于网站下载,如何设定目录权限???   问题分析: 1  nginx进程的启动用户是nginx,所以需要增加用户nginx对目录download以及子目录的读访问权限 2  目录download新增加的文件或文件夹,nginx用户也应该继承读权限 问题解决: setfacl参数解释, -m : 修改ACL权限 -R :  递归目录下的所有子目录及文件。   在目录download下创建个新文件并查看nginx用户是否有读权限,   另外,删除目录所有ACL权限使用如下命令  setfacl -R -b /var/www/download/      

Continue Reading

NGINX配置高并发(转)

一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu计为8)。 2.  worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一 个进程分配到多个cpu。 3.  worker_rlimit_nofile 65535; 这个指令是指当一个nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文 件数(ulimit -n)与nginx 进程数相除,但是nginx 分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。 现在在Linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。 这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。 查看linux系统文件描述符的方法: [root@web001 ~]# sysctl -a | grep fs.file fs.file-max = 789972 fs.file-nr = 510 0 789972 4.  use epoll; 使用epoll 的I/O…

Continue Reading

du命令统计指定层级目录大小

    有时候我们在实际工作中,如裁剪APP包大小的时候,需要检查各个层级目录的总大小,这样可以针对占用空间较大的目录做裁剪。     在Linux中统计指定层级的目录大小可以用du命令,来个实际例子,下面的命令可以统计Linux的etc目录的第一级目录按大小升序排列前9位, [root@openresty ~]# du -m –max-depth=1  /etc/ | sort -n | tail 1    /etc/X11 1    /etc/xdg 1    /etc/xinetd.d 1    /etc/xml 1    /etc/yum 1    /etc/yum.repos.d 4    /etc/pki 9    /etc/gconf 21    /etc/selinux 40    /etc/  

Continue Reading

GlusterFS3.7.3源码编译安装

一、背景简介     最近在学习性能测试,首先想到如果能真是搭建个基础网站架构,肯定对进一步的学习有帮助,肯定比lordrunner自带的那个网站程序更有帮助。在搭建的过程中,因为是要建立个远程文件服务器,glusterfs是个不错的选择,搭建glusterfs服务器费了不少周折,折腾了一个多星期才搞定,在这里有必要总结下。   二、系统环境      环境中共3台服务器,IP分别是172.17.1.135  172.17.1.134  172.17.1.133,其中133和134作为glusterfs服务器端,135作为客户端挂载服务器端的卷。     三个服务器172.17.1.135  172.17.1.134  172.17.1.133的信息依次如下图所示,       三、编译安装     三台服务器上均执行以下安装步骤 #  添加 epel 软件源     rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm   #  安装必要的依赖包     yum install -y aclocal autoconf aotuheader automake libtool     yum install -y  automake autoconf libtool flex bison openssl-devel libxml2-devel python-devel libaio-devel libibverbs-devel librdmacm-devel readline-devel lvm2-devel…

Continue Reading

AWK高级用法之打印匹配行的上一行

    最近对数据处理很感兴趣,一直在研究Linux三剑客:grep AWK sed ,下面举个实际工作中遇到的一个小实例,联用三大文本处理剑客。   已知table.txt文件,cat查看文件内容如下,其实也就是我查询数据库中部分表的状态。   [pc@glusterfs-srv-01 ~]$ cat table.txt   *************************** 15. row ***************************            Name: procs_priv          Engine: MyISAM         Version: 10      Row_format: Fixed            Rows: 0  Avg_row_length: 0     Data_length: 0 Max_data_length: 239253730204057599    Index_length: 4096       Data_free: 0  Auto_increment: NULL     Create_time: 2016-09-19 01:38:11     Update_time: 2016-09-19…

Continue Reading