系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量
资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态
用户
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务
服务
# chkconfig --list # 列出所有系统服务
# chkconfig --list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包
本文中,Windows使用XP,Linux选用Ubuntu。但其实基本思想是一样的:Linux现在流行的bootloader是grub。xp和nt采用的是ntloader。
Ubuntu论坛里的这篇文章主张采用这样的引导方式:ntloader->grub->win/lin。但正如有的网友所说,grub考虑到了引导windows,而ntloader还没有考虑过引导windows之外的其他系统。而且,使用ntloader来引导比较繁琐。不如使用grub引导简便。这里我使用grub来作为bootloader。
先补充一下基础知识:理解Linux的启动过程。另外,手头要有xp和Ubuntu的安装光盘。(Ubuntu的LiveCD,用以挂载硬盘分区以及恢复mbr)。在开始之前,要知道这样几个事实:(1)PC启动时,在加载bios之后,紧接着就加载位于mbr中的bootloader,这个bootloader可以是ntloader,也可以是grub。(2)安装windows系统时,安装程序会把ntloader写入到mbr作为bootloader。(3)grub可以被安装到mbr,也可以安装到其他位置。但Ubuntu的liveCD进行安装时是默认安在mbr中的。
这样问题就来了:怎么才能保证双系统能正常启动呢?如果重装了其中的一个系统,如何保证另外一个系统不受影响呢?这就是这里要说的问题。
第一次安装
先安装Windows,然后安装Linux。采用这样的顺序不光是为了避免ntloader覆盖掉grub(就算被覆盖了,也有解决办法,在后面介绍),更因为Linux可以被装在扩展分区而Windows不行。另外,安装linux时,grub会检测到已有的分区,从而生成合适的启动选项来加载windows系统。
要注意的一点就是文件系统,可以采用这样的方法:在最开始安装windows时把计划给linux用的空间分为一个区,之后在安装Linux时将这个区删除,然后重新创建新的多个分区。UbuntuliveCD已经做得很傻瓜化,安装不会碰到任何问题。
恢复MBR
相比Linux,Windows会比较频繁地重装,重装之后的mbr会被覆盖,从而无法引导linux系统。解决整个问题只需要恢复以前的MBR。重装Linux则不存在任何问题。因为grub会检测到已有的windows分区。
首先备份mbr,使用dd命令将硬盘第一个扇区的头446字节'抓'下来保存。之后重装完windows之后再恢复mbr。这需要用到linux启动光盘。启动进入命令行,挂载那个被保存的mbr文件所在的分区,然后用dd命令恢复就可以了。(注意我的是SCSI硬盘,所以是sda,IED硬盘为hda)
备份MBR:
#ddif=/dev/sdaof=/boot/boot.NNNNbs=446count=1
恢复MBR:
#ddif=/boot/boot.NNNNof=/dev/sdabs=446count=1
为什么不是512呢,主引导扇区是一个扇区(512字节呀)?
只把主引导扇区的备份文件boot。NNNN的前446个字节重写入主引导扇区。
boot.NNNN是我们在安装Linux之前整个主引导分区的备份。如果我们把512个字节全部写入主引导扇区就可能会把安装了Linux后改变了的硬盘DPT表也破坏掉。
MBR->Main/MasterBootRecord,有些书上是写成Master的。
我认为可以分成三个部分吧,MBR+DPT+MagicNumber(446+64+2=512)
这也就是为什么进行MBR备份的时候要指定bs=512或者bs=1k,count=1的原因。然后恢复时经常看到HOWTO里面是bs=446count=1。
这个446就是指令部分的恢复,不是DPT的恢复。
往往MBR里面的第一个指令是cli。
linux中批量添加用户。
添加和删除用户对每位Linux系统管理员都是轻而易举的事,比较棘手的是如果要添加几十个、上百个甚至上千个用户时,我们不太可能还使用useradd一个一个地添加,必然要找一种简便的创建大量用户的方法。Linux系统提供了创建大量用户的工具,可以让您立即创建大量用户,方法如下:
(1)先编辑一个文本用户文件,每一列按照/etc/passwd密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。一个范例文件user.txt内容如下:
user002::601:100:user:/home/user002:/bin/bash
user003::602:100:user:/home/user003:/bin/bash
user004::603:100:user:/home/user004:/bin/bash
user005::604:100:user:/home/user005:/bin/bash
user006::605:100:user:/home/user006:/bin/bash
(2)以root身份执行命令/usr/sbin/newusers,从刚创建的用户文件user.txt中导入数据,创建用户:
然后可以执行命令vipw或vi /etc/passwd检查/etc/passwd文件是否已经出现这些用户的数据,并且用户的宿主目录是否已经创建。
(3)执行命令/usr/sbin/pwunconv,将/etc/shadow产生的shadow密码解码,然后回写到/etc/passwd中,并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消shadow password功能。
(4)编辑每个用户的密码对照文件,范例文件passwd.txt内容如下:
user002:密码
user003:密码
user004:密码
user005:密码
user006:密码
(5)以root身份执行命令/usr/sbin/chpasswd,创建用户密码,chpasswd会将经过/usr/bin/passwd命令编码过的密码写入/etc/passwd的密码栏。
(6)确定密码经编码写入/etc/passwd的密码栏后,执行命令/usr/sbin/pwconv将密码编码为shadow password,并将结果写入/etc/shadow。
这样就完成了大量用户的创建了,之后您可以到/home下检查这些用户宿主目录的权限设置是否都正确,并登录验证用户密码是否正确。