Linux

  • 很早之前就遇到一次这个故障,当时是一台主机故障,这次是上百台主机故障。当时是使用mysqldump向NFS备份时,写数据时大概是NFS出现故障,使得mysqldump进程进入uninterruptible sleep(man ps)状态:

    $ps axu|grep mysqldump
    mysql 2718 0.0 0.0 51088 672 pts/0 S+ 13:30 0:00 grep mysqldump
    mysql 14916 1.4 0.0 0 0 ? D 02:03 10:03 [mysqldump]

    进入该状态的进程,会一直等待NFS,不接受任何信号,当然也就无法被杀死(kill/fuser -k)。因为进程一直在运行队列(running queue)中,所以还会导致主机的Load上升(虽然主机并不繁忙)。如果由于这个原因被卡住的进程很多的话,主机的Load可能会看起来非常高。[……]

    Read more

  • 使用getopts处理Shell脚本参数

    ·

    编写一个shell脚本,做一些事;改进这个脚本,更好做这件事;再改进这个脚本,帮自己做些其他的事情;再改进这个脚本帮助其他人做一些事……

    简单的脚本处理,一般使用变量$0 $1 $2 …就可以依次获得全部参数,还可以通过$#获得这个脚本一共有多少个参数。如果你需要处理的情况(或者分支)更多的时候,这个方法就不凑效了,这时候,就可以考虑使用getopts了(man getopts)。[……]

    Read more

  • Linux iostat监测IO状态

    ·

    Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。

    1. 基本使用

    $iostat -d -k 1 10

    参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。[……]

    Read more

  • 本文试图从硬件结构、逻辑结构两方面来介绍Linux中本地磁盘的基本知识。

    1. 硬件结构

    一块磁盘由多个盘面组成,每个盘面有一个对应的磁头(heads),我们可以在该盘面上存储我们需要的信息。

    每一个盘面,被分成多个圆环,我们称之为柱面(cylinders)。每一个柱面又被分割为多个扇形区域,简称扇区(sectors),参见下图:

    磁盘扇区(图片来源www.eygle.com/

    两个红色环形之间是一个柱面;图中黄色标记部分是一个扇区。[……]

    Read more

  • mysqld随Linux开机自动启动

    ·

    在MySQL的管理过程中,偶尔会遇到一些PC Server宕机或者重启,这时我需要在主机启动后再将MySQL服务启动。一般情况下,这项工作都是简单的。但是,当面临上百台或者更多的MySQL主机的时候,这种“偶尔”可能会很多,这种“偶尔”还会在半夜或者凌晨发生,如果每次都手动操作,这是很繁琐的。更重要的是,如果因此而打断了凌晨的美梦是不值得的。

    LinuxMySQL-2

    [……]

    Read more

  • 迥异的Linux Shell Script

    ·

    作者:mail
    摘要:如果你已经习惯编写Shell脚本,那么一切都显得很自然了。但像我这样,之前已经习惯了C语言(风格)的编程,就觉得Shell并不是那么友好。这里将记录一些Shell和”C风格”迥异的地方,以供参考。本文测试环境:GNU bash, version 3.00.15(1)-release (i386-redhat-linux-gnu)。文章中很多实例直接来在参考文件[1]、[2]。

    Linux

    [……]

    Read more