vgchange

vgchange命令用于修改卷组的属性,经常被用来设置卷组是处于活动状态或非活动状态。处于活动状态的卷组无法被删除,必须使用vgchange命令将卷组设置为非活动状态后才能删除。

语法

vgchange(选项)(参数)

选项

-a:设置卷组的活动状态。

参数

卷组:指定要设置属性的卷组。

实例

使用vgchange命令将卷组状态改为活动的。在命令行中输入下面的命令:

[root@localhost ~]# vgchange -ay vg1000     #将卷组"vg1000"设置为活动状态

输出信息如下:

1 logical volume(s) in volume group "vg1000" now active

bmodinfo

bmodinfo命令用于显示给定模块的详细信息。

语法

bmodinfo(选项)(参数)

选项

-a:显示模块作者;
-d:显示模块的描述信息;
-l:显示模块的许可信息;
-p:显示模块的参数信息;
-n:显示模块对应的文字信息;
-0:用ASCII码的0字符分割字段值,而不使用新行。

参数

模块名:要显示详细信息的模块名称。

实例

显示sg模块的信息:

[root@localhost ~]# modinfo sg
filename:    /lib/modules/2.6.9-42.ELsmp/kernel/drivers/scsi/sg.ko
author:     Douglas Gilbert
description:  SCSI generic (sg) driver
license:    GPL
version:    3.5.31 B0B0CB1BB59F0669A1F0D6B
parm:      def_reserved_size:size of buffer reserved for each fd
parm:      allow_dio:allow direct I/O (default: 0 (disallow))
alias:     char-major-21-*
vermagic:    2.6.9-42.ELsmp SMP 686 REGPARM 4KSTACKS gcc-3.4
depends:    scsi_mod

mkswap

mkswap命令用于在一个文件或者设备上建立交换分区。在建立完之后要使用sawpon命令开始使用这个交换区。最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般都将整个文件或者设备作为交换区。

语法

mkswap(选项)(参数)

选项

-c:建立交换区前,先检查是否有损坏的区块;
-f:在SPARC电脑上建立交换区时,要加上此参数;
-v0:建立旧式交换区,此为预设值;
-v1:建立新式交换区。

参数

设备:指定交换空间对应的设备文件或者交换文件。

实例

查看系统swap space大小:

free -m
total used free shared buffers cached
Mem: 377 180 197 0 19 110
-/+ buffers/cache: 50 327
Swap: 572 0 572

查看当前的swap空间(file(s)/partition(s)):

swapon -s

等价于

cat /proc/swaps

添加交换空间

添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区;不过,若你没有多少空闲空间可用,则添加交换文件。

添加一个交换分区,步骤如下:

使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区),使用 mkswap 命令来设置交换分区:

mkswap /dev/sdb2

启用交换分区:

swapon /dev/sdb2

写入/etc/fstab,以便在引导时启用:

/dev/sdb2 swap swap defaults 0 0

添加一个交换文件,步骤如下:

创建大小为512M的交换文件:

dd if=/dev/zero of=/swapfile1 bs=1024 count=524288

使用mkswap命令来设置交换文件:

mkswap /swapfile1

启用交换分区:

swapon /swapfile1

写入/etc/fstab,以便在引导时启用:

/swapfile1 swap swap defaults 0 0

新添了交换分区并启用它之后,请查看cat /proc/swaps或free命令的输出来确保交换分区已被启用了。

删除交换空间:

禁用交换分区:

swapoff /dev/sdb2

/etc/fstab中删除项目,使用fdisk或yast工具删除分区。

echo

echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。

语法

echo(选项)(参数)

选项

-e:激活转义字符。

使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

  • \a 发出警告声;
  • \b 删除前一个字符;
  • \c 最后不加上换行符号;
  • \f 换行但光标仍旧停留在原来的位置;
  • \n 换行且光标移至行首;
  • \r 光标移至行首,但不换行;
  • \t 插入tab;
  • \v 与\f相同;
  • \\ 插入\字符;
  • \nnn 插入nnn(八进制)所代表的ASCII字符;

参数

变量:指定要打印的变量。

实例

用echo命令打印带有色彩的文字:

文字色:

echo -e "\e[1;31mThis is red text\e[0m"
This is red text
  • \e[1;31m 将颜色设置为红色
  • \e[0m 将颜色重新置回

颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

背景色

echo -e "\e[1;42mGreed Background\e[0m"
Greed Background

颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

文字闪动:

echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"

红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐

blockdev

blockdev命令在命令调用“ioxtls”函数,以实现对设备的控制。

语法

blockdev(选项)(参数)

选项

-V:打印版本号并退出;
-q:安静模式;
-v:详细信息模式;
--setro:只读;
--setrw:只写;
--getro:打印只读状态,“1”表示只读,“0”表示非只读;
--getss:打印扇区大小。通常为521;
--flushbufs:刷新缓冲区;
--rereadpt:重新读取分区表。

参数

设备文件名:指定要操作的磁盘的设备文件名。

实例

设置设备为只读:

blockdev --setro /dev/hda4

读取设备是否为只读:

blockdev --getro /dev/hda4

设置设别为可读写:

blockdev --setrw /dev/hda4

vgconvert

vgconvert命令用于转换指定LVM卷组的元数据格式,通常将“LVM1”格式的卷组转换为“LVM2”格式。转换卷组元数据前必须保证卷组处于非活动状态,否则无法完成转换操作。

语法

vgconvert(选项)(参数)

选项

-M:要转换的卷组格式。

参数

卷组:指定要转换格式的卷组。

实例

转换卷组元数据格式前,使用vgchange命令将卷组设置为非活动状态。在命令行中输入下面的命令:

[root@localhost lvm]# vgchange -an vg1000    #设置卷组状态为非活动状态
0 logical volume(s) in volume group "vg1000" now active 

使用vgconvert命令将卷组"vg1000"从"LVM1"格式转换为"LVM2"格式。在命令行中输入下面的命令:

[root@localhost lvm]# vgconvert -M2 vg1000    #转换卷组为"LVM2"格式
Volume group vg1000 successfully converted

使用vgchange命令将卷组设置为活动状态。在命令行中输入下面的命令:

[root@localhost lvm]# vgchange -ay vg1000     #设置卷组状态为活动状态
0 logical volume(s) in volume group "vg1000" now active

alias

alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。

alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中。

语法

alias(选项)(参数)

选项

-p:打印已经设置的命令别名。

参数

命令别名设置:定义命令别名,格式为“命令别名=‘实际命令’”。

实例

alias 的基本使用方法为:

alias 新的命令='原命令 -选项/参数'

例如:alias l=‘ls -lsh'将重新定义ls命令,现在只需输入l就可以列目录了。直接输入 alias 命令会列出当前系统中所有已经定义的命令别名。

要删除一个别名,可以使用 unalias 命令,如 unalias l。

查看系统已经设置的别名:

alias -p
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

fg

fg命令用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。与bg命令一样,若后台任务中只有一个,则使用该命令时,可以省略任务号。

在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到 jobs、bg、和 fg 三个命令以及两个快捷键来完成。

语法

fg(参数)

参数

作业标识:指定要放到前台的作业标识号。

实例

使用fg命令将任务号为1的任务从后台执行转换到前台执行,输入如下命令:

fg 1          #将任务转换到前台执行

执行上面的命令后,命令行窗口将显示如下信息:

find / -name password       #前台执行命令

depmod

depmod命令可产生模块依赖的映射文件,在构建嵌入式系统时,需要由这个命令来生成相应的文件,由modprobe使用。

语法

depmod(选项)

选项

-a或--all:分析所有可用的模块;
-d或debug:执行排错模式;
-e:输出无法参照的符号;
-i:不检查符号表的版本;
-m<文件>或system-map<文件>:使用指定的符号表文件;
-s或--system-log:在系统记录中记录错误;
-v或--verbose:执行时显示详细的信息;
-V或--version:显示版本信息;
--help:显示帮助。

实例

depmod -b /home/windsome/EMMA3PF-KernelSource-20080626/install_pos -e -F ./boot/System.map -v 2.6.18_pro500-bcm91250-mips2_fp_be -A -a
  • /home/windsome/EMMA3PF-KernelSource-20080626/install_pos是我make mod_install后,所有模块的存放路径。
  • ./boot/System.mapmake linux后生成,我拷贝到此目录的。
  • 2.6.18_pro500-bcm91250-mips2_fp_be是我build的linux的版本。

编译linux过程及执行depmod的例子:

genkernel.sh (at linux-2.6.18_pro500)
#######
export INSTALL_ROOT_EMMA3PF="/home/windsome/EMMA3PF-KernelSource-20080626/install_pos"
export INSTALL_MOD_EMMA3PF="/home/windsome/EMMA3PF-KernelSource-20080626/install_pos"
rm /home/windsome/EMMA3PF-KernelSource-20080626/install_pos/lib -rf
rm /home/windsome/EMMA3PF-KernelSource-20080626/install_pos/boot/* -rf
cd <linux_src_dir>
make
make modules_install
cp vmlinux System.map /home/windsome/EMMA3PF-KernelSource-20080626/install_pos/boot/ -p
cd /home/windsome/EMMA3PF-KernelSource-20080626/install_pos
depmod -b /home/windsome/EMMA3PF-KernelSource-20080626/install_pos -e -F ./boot/System.map -v 2.6.18_pro500-bcm91250-mips2_fp_be -A -a

其他用法:

在linux桌面系统中,当你编译了新的驱动,为了能够用modprobe ***加载模块, 你需要先将模块拷贝到/lib/modules /2.6.31-20-generic目录下,然后运行sudo depmod -a将模块信息写入modules.dep、modules.dep.bin、modules.alias.bin、modules.alias和modules.pcimap文件中。

如,我编译了一个新的wifi驱动r8192se_pci.ko,将其拷贝到/lib/modules/2.6.31-20-generic/wireless下,然后到/lib/modules/2.6.31-20-generic运行depmod -a,之后可以在任意目录运行modprobe r8192se_pci。

type

type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。

命令类型:

  • alias:别名。
  • keyword:关键字,Shell保留字。
  • function:函数,Shell函数。
  • builtin:内建命令,Shell内建命令。
  • file:文件,磁盘文件,外部命令。
  • unfound:没有找到。

语法

type(选项)(参数)

选项

-t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;
-p:如果给出的指令为外部指令,则显示其绝对路径;
-a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。

参数

指令:要显示类型的指令。

实例

[root@localhost ~]# type ls
ls is aliased to `ls --color=tty'

[root@localhost ~]# type cd
cd is a shell builtin

[root@localhost ~]# type date
date is /bin/date

[root@localhost ~]# type mysql
mysql is /usr/bin/mysql

[root@localhost ~]# type nginx
-bash: type: nginx: not found

[root@localhost ~]# type if
if is a shell keyword

[root@localhost ~]# type which
which is aliased to `alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@localhost ~]# type -a cd
cd is a shell builtin

[root@localhost ~]# type -a grep
grep is /bin/grep