How to kill an `uninterruptible sleep` process

2010-05-18 20:49  |  分类: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可能会看起来非常高。 全文阅读 »

使用getopts处理Shell脚本参数

2010-04-21 19:48  |  分类:技术细节

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

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

Linux iostat监测IO状态

2010-03-1 13:13  |  分类:Linux,技术细节

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

1. 基本使用

$iostat -d -k 1 10

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

Linux本地磁盘(硬盘)介绍

2010-02-24 20:05  |  分类:Linux,技术细节

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

1. 硬件结构

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

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

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

两个红色环形之间是一个柱面;图中黄色标记部分是一个扇区。 全文阅读 »

mysqld随Linux开机自动启动

2009-11-26 11:11  |  分类:MySQL,技术细节

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

LinuxMySQL-2

全文阅读 »

迥异的Linux Shell Script

2009-09-17 15:44  |  分类:Linux,技术细节

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

Linux

全文阅读 »

Pages: 1 2 Next