Tag Archives: Linux

Linux系统全方位调试与维护工具整理

俗话说:“工欲善其事,必先利其器。”

在多年维护和开发Linux服务器的过程中,我接触了一些常用的开发和调试工具。本文将这些工具整理在一起,便于指导读者选择正确的工具。文中对于工具只有简单的介绍,需要详细的用法可以--help或自行Google。

本文针对的环境是CentOS/RedHat服务器 (需要epel库)。其他发行版应该也有相应的命令,但我没有一一测试。

系统管理

  • ssh: 远程登录
  • last, lastlog: 查看用户登录历史
  • cron: 设置周期运行的定时任务
  • at: 设置运行一次的定时任务
  • screen/nohup: 在后台运行程序,程序不会随着shell关闭而退出
  • rsync: 文件夹同步
  • pv: 文件拷贝(重定向方法,含进度条,但会丢失文件的权限信息)
  • lshw: 显示硬件信息
  • lscpu: 显示CPU信息
  • dmesg: 显示系统日志

资源监控

通过查看系统资源使用,快速定位性能瓶颈与系统异常。

  • 内存
    • free: 当前内存使用情况
  • 硬盘
    • df: 硬盘空间使用情况
    • iotop: 磁盘IO使用实时监视
    • ncdu: 分析文件夹使用的磁盘大小
  • CPU
    • 见进程调试
  • 网络
    • nethogs: 监控当前活跃的网络连接
    • nload: 主机上传/下载流量监控
  • 综合
    • glances: 系统资源、进程查看工具(我的最爱)
    • linux-dash/pyDash: 系统资源监控(基于网页)

内核调试

  • perf
  • kgdb: 内核调试工具
  • lsmod: 显示所有被使用的module
  • vmstat

进程调试

  • ps: 查看当前进程
  • top: 查看当前进程以及进程资源占用情况(动态更新)
  • htop: top替代工具,信息丰富,可以查看树状进程信息
  • pidof: 按进程名查PID
  • skill: kill的升级版,通过名字(而不是PID)kill进程

文件调试

  • tree: 将文件夹按树形显示
  • lsof: 显示当前程序文件(包括虚拟文件)打开情况
  • mc: Midnight Commander知名文件管理器

网络调试

  • curl: 发送HTTP, REST请求
  • tcpdump: 抓包工具,通过自带的与或非逻辑可以组合成复杂的过滤条件
  • wireshark: 类似tcpdump的老牌抓包神器
  • nmap: 网络开放端口扫描
  • ip: 网络管理工具集
  • fping: ping升级版
  • netstat
  • nicstat
  • iptraf

程序调试

  • gdb: gnu项目下的代码调试器
  • strace: 打印出进程调用了哪些系统调用。
  • ldd: 查看程序依赖库。
  • objdump: 打印目标码和反汇编结果。
  • xargs: 读取输入流并将读取的文本作为指定命令行工具的命令行参数。
  • ipcs: 显示进程间通信设施状态

其他工具

  • vim/nano: 文本编辑器
  • grep, sed: 文本信息处理
  • awk: 表处理,很强大的二维表处理功能,可以对格式化文本输出进行处理
  • jq: 命令行的json查询和格式化工具,适合查看REST接口的输出

References

[1] 用十条命令在一分钟内检查Linux服务器性能, http://www.infoq.com/cn/news/2015/12/linux-performance
[2] Linux Performance, Brendan D. Gregg, http://www.brendangregg.com/linuxperf

从U盘引导安装Linux

如果想从硬盘直接安装Linux系统,就需要Linux启动盘。Linux启动盘一般是用DVD光盘刻录的,但对于没有刻录条件的人来说,也可以使用U盘来制作启动盘。

在正式开始之前,需要做以下准备工作:
1、准备Linux系统的镜像文件,可以从Ubuntu、CentOS、Fedore网站下载;
2、一个2G左右的空U盘,做好备份,因为U盘上的资料会全部丢失;
3、下载UltraISO软件并安装。

一、打开UltraISO软件,选择文件->打开,打开需要烧录的镜像文件:
20121222_01

二、选择启动->写入硬盘映像:20121222_02

三、选择硬盘驱动器为U盘所在盘符,写入方式为USB-HDD+,点击便携启动->写入新的硬盘主引导记录->USB-HDD+,在弹出的对话框中选择“是”:

20121222_03

四、点击“写入”按钮,在弹出的对话框中选择“是”,等待写入完成:20121222_04

五、写入完成后,进入BIOS,选择从U盘引导,重启后进入以下画面(该画面因各种发行版不同而不同,这里我用的是Ubuntu),选择第二项Install Ubuntu:

20121222_05

六、现在即可开始安装:

20121222_06

注:我在安装过程中遇到一个插曲,就是选择Install之后,提示无法找到磁盘文件,最后发现是因为U盘插在了USB3.0接口上,无法被系统识别,更换成USB2.0接口后即可正常安装。

参加Linux20周年开发者大会


周末应同事邀请去参加了”Linux20周年开发者大会”,地点在南京大学。南京大学不是非常好找,下了地铁以后费了半天功夫才找到,甚至动用了我那台信号微弱的GPS。会议所在的”逸夫馆”,是有点古老的大楼,爬满了藤蔓。

这次大会的主题是”国产软件,中国力量”,组织方是NANJING LUG和南大Open社团。因为在大学里举行,参加的有一半左右都是学生,也有华为等公司的Linux开发人员。会议参加方有中标麒麟、富士通、新华科技。主要介绍了Linux系统在各个公司的应用,也分享了BtrFS (Butter FS)的结构,这是一个由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。目标在取代Linux目前的ext3文件系统,改善ext3的限制。

因为是第一次参加,听得稀里糊涂的,没等到结束就离开了。会议中途下了场大雨,雨后的天空多么晴朗!

据说AKA Kernel Conference 2011也会在南京开幕,到时有时间一定参加。

最后附上相关链接:

AKA : http://www.aka-kernel.org/news/

NJLUG : http://nanjinglug.org/