halt

关闭正在运行的Linux操作系统

补充说明

halt命令 用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。

语法

1
halt(选项)

选项

1
2
3
4
5
6
-d:不要在wtmp中记录;
-f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;
-i:在halt之前,关闭全部的网络界面;
-n:halt前,不用先执行sync;
-p:halt之后,执行poweroff;
-w:仅在wtmp中记录,而不实际结束系统。

实例

1
2
halt -p     //关闭系统后关闭电源。
halt -d //关闭系统,但不留下纪录。

gzip

用来压缩文件

补充说明

gzip命令 用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。

gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

语法

1
gzip(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-a或——ascii:使用ASCII文字模式;
-d或--decompress或----uncompress:解开压缩文件;
-f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-h或——help:在线帮助;
-l或——list:列出压缩文件的相关信息;
-L或——license:显示版本与版权信息;
-n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记;
-N或——name:压缩文件时,保存原来的文件名称及时间戳记;
-q或——quiet:不显示警告信息;
-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
-t或——test:测试压缩文件是否正确无误;
-v或——verbose:显示指令执行过程;
-V或——version:显示版本信息;
-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高;
--best:此参数的效果和指定“-9”参数相同;
--fast:此参数的效果和指定“-1”参数相同。
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6。

参数

文件列表:指定要压缩的文件列表。

实例

把test6目录下的每个文件压缩成.gz文件

1
gzip *

把上例中每个压缩的文件解压,并列出详细的信息

1
gzip -dv *

详细显示例1中每个压缩的文件的信息,并不解压

1
gzip -l *

压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz

1
gzip -r log.tar

递归的压缩目录

1
gzip -rv test6

这样,所有test下面的文件都变成了.gz,目录依然存在只是目录里面的文件相应变成了.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。

递归地解压目录

1
gzip -dr test6

gzexe

用来压缩可执行文件

补充说明

gzexe命令 用来压缩可执行文件,压缩后的文件仍然为可执行文件,在执行时进行自动解压缩。当您去执行被压缩过的执行文件时,该文件会自动解压然后继续执行,和使用一般的执行文件相同。这个命令也可以看成是gunzip命令的一个扩展。

语法

1
gzexe(选项)(参数)

选项

1
-d:解压缩被gzexe压缩过的可执行文件。

参数

文件:指定需要压缩的可执行文件。

gunzip

用来解压缩文件

补充说明

gunzip命令 用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。

语法

1
gunzip(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-a或——ascii:使用ASCII文字模式;
-c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备;
-f或-force:强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-h或——help:在线帮助;
-l或——list:列出压缩文件的相关信息;
-L或——license:显示版本与版权信息;
-n或--no-name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理;
-N或——name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上;
-q或——quiet:不显示警告信息;
-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
-t或——test:测试压缩文件是否正确无误;
-v或——verbose:显示指令执行过程;
-V或——version:显示版本信息;

参数

文件列表:指定要解压缩的压缩包。

实例

首先将/etc目录下的所有文件以及子目录进行压缩,备份压缩包etc.zip到/opt目录,然后对etc.zip文件进行gzip压缩,设置gzip的压缩级别为9。

1
2
zip –r /opt/etc.zip /etc
gzip -9v /opt/etc.zip

查看上述etc.zip.gz文件的压缩信息。

1
2
3
gzip -l /opt/etc.zip.gz
compressed uncompressed ratio uncompressed_name
11938745 12767265 6.5% /opt/etc.zip

解压上述etc.zip.gz文件到当前目录。

1
2
3
[root@mylinux ~]#gzip –d /opt/etc.zip.gz 
或者执行
[root@mylinux ~]#gunzip /opt/etc.zip.gz

通过上面的示例可以知道gzip –d等价于gunzip命令。

grub

多重引导程序grub的命令行shell工具

补充说明

grub命令 是多重引导程序grub的命令行shell工具。

语法

1
grub(选项)

选项

1
2
3
4
5
6
7
8
9
10
11
--batch:打开批处理模式;
--boot-drive=<驱动器>:指定stage2的引导驱动器;
--config-file<配置文件>:指定stage2的配置文件;
--device-map=<文件>:指定设备的映射文件;
--help:显示帮助信息;
--install-partition=<分区>:指定stage2安装分区;
--no-config-file:不使用配置文件;
--no-pager:不使用内部分页器;
--preset-menu:使用预设菜单;
--probe-second-floppy:检测第二个软盘驱动器;
--read-only:只读模式。

实例

利用grub命令来启动损坏的Linux系统,可能你的电脑因为某些原因损坏不能自动启动了。当然原因很多,可能的现象也很多。

这里说一下这种情况下的处理方法,即:屏幕上提示grub>,但你的硬盘上数据没有丢失,各分区都是好的。这种情况是你的grub信息损坏了,但比较严重的是系统启动不了。

当然,在正常启动情况下,屏幕上出现grub的启动项选择菜单时按c键也是可以进入grub>状态的。这时候我们需要用grub的命令来手工启动系统。

只需要用到四个命令boot、kernel、initrd、boot。

但grub本身命令很多,比如查看文件内容的cat ,你输入help会得到。

首先,输入“ root (hd ” ,然后按两次 TAB 键; / 这会列出你电脑上可能的磁盘设备,硬盘为 hd0/hd1 或 sd0/sd1 等 /

然后,选择你的安装 Linux 系统的硬盘,比如 hd0 ,输入 “ root (hd0, ” 再按两次 TAB 键; / 这会列出你的第一块硬盘上的分区情况,你会知道哪个是 swap 交换分区, 0x82 ,哪个是 Linux 分区 0x83 /

选择你认为可能的 /boot 目录所在的分区, 输入root (hd0, 1)回车;

接着,输入cat /boot/vm, 按两次 TAB 键,如果出现一些 vm 开头的文件,比如 vmlinuz-2.6.15-26-386 说明这里是 /boot 所在的分区。

删除上一次的输入,再输入cat /boot/initrd,按两次 TAB 键,如果出现一些 initrd 开头的文件,比如 initrd.img-2.6.15-26-386 说明这个 /boot 所在的分区有 initrd ,即 ramdisk 镜像;

删除上一次的输入,再输入cat /sbin/init,按两次 TAB 键,如果出现一些 init 开头的文件,比如/sbin/init说明这个分区是/所在的分区;

如果没有出现/sbin/init文件,说明(hd0,1)分区仅仅是/boot分区而不是/分区。重新输入root (hd0,N)命令,这里 N 是某个 Linux 分区,然后再试cat /sbin/init, 直到屏幕上出现/sbin/init,说明你找到了/分区,严格来说,应该是/sbin目录所在的分区;

依次输入命令:

1
2
3
4
root (hd0,1)   /* 假设 /dev/hda2 是你的 /boot 所在的分区 */
kernel /boot/vmlinuz-2.6.15-26-386 ro dev=/dev/hda3 /* 假设 /dev/hda3 是你的 / 所在的分区 */
initrd /boot/initrd.img-2.6.15-26-386
boot

即可启动系统。

这里的关键问题是如何确定系统的几个分区:/boot / /sbin

grpunconv

用来关闭群组的投影密码

补充说明

grpunconv命令 用来关闭群组的投影密码。它会把密码从gshadow文件内,回存到group文件里。

语法

1
grpunconv

实例

未关闭的情况

1
2
cat /etc/gshadow | grep cdy
cdy:123456::

关闭影子密码

1
2
cat /etc/gshadow
cat: /etc/gshadow: 没有那个文件或目录

查看密码已经复制到/etc/group中了。

1
2
cat /etc/group | grep cdy
cdy:123456:1000:

grpconv

用来开启群组的投影密码

补充说明

grpconv命令 用来开启群组的投影密码。Linux系统里的用户和群组密码,分别存放在/etc目录下的passwd和group文件中。因系统运作所需,任何人都得以读取它们,造成安全上的破绽。投影密码将文件内的密码改存在/etc目录下的shadow和gshadow文件内,只允许系统管理者读取,同时把原密码置换为”x”字符。投影密码的功能可随时开启或关闭,您只需执行grpconv指令就能开启群组投影密码。

语法

1
grpconv

实例

设置cdy组密码

1
2
3
groupmod --password 123456 cdy
cat /etc/group | grep cdy
cdy:123456:1000: //看出密码是123456

启动影子系统

1
2
3
4
5
6
grpconv
cat /etc/group | grep cdy
cdy:x:1000: //看出密码段已经被x替代

cat /etc/gshadow | grep cdy
cdy:123456:: //已经移到影子文件了

注:gshadow, shadow只有root权限才可以查看。

grpck

用于验证组文件的完整性

补充说明

grpck命令 用于验证组文件的完整性,在验证之前,需要先锁定(lock)组文件/etc/group/etc/shadow

grpck命令检查数据是否正确存放,每条记录是否都包含足够的信息,是否有一个唯一的组名,是否包含正确的用户,是否正确设置了组的管理员等。grpck检查发现错误以后,在命令行提示用户是否删除错误的记录。如果用户没有明确回答删除记录,grpck终止运行。

语法

1
grpck(选项)

选项

1
2
-r:只读模式;
-s:排序组id。

实例

对组账号和影子文件进行验证:

1
2
grpck   //必须以管理员身份运行
grpck /etc/group /etc/gshadow //后面两句一样,如果没有输出信息,则表示没有错误。

测试错误的实例:

1
2
3
4
5
6
7
8
9
10
**echo check_user:x: >> /etc/group    //添加一行错误的格式数据
cat /etc/group | grep check_user**
check_user:x: //这儿GID字段为空,是错误的。

**grpck /etc/group**
invalid group file entry
delete line 'check_user:x:'? y //提示是否删除
grpck: the files have been updated //这时已经删除了错误的行,提示文件已经更新。

**cat /etc/group | grep check_user //没有查到,已经删除了。**

groups

用来打印指定用户所属的工作组

补充说明

groups命令 在标准输入输出上输出指定用户所在组的组成员,每个用户属于/etc/passwd中指定的一个组和在/etc/group中指定的其他组。

语法

1
groups(选项)(参数)

选项

1
2
-help:显示命令的帮助信息;
--version:显示命令的版本信息。

参数

用户名:指定要打印所属工作组的用户名。

实例

显示linux用户所属的组

1
2
groups linux
linux : linux adm dialout cdrom plugdev lpadmin admin sambashare

groupmod

更改群组识别码或名称

补充说明

groupmod命令 更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。

语法

1
groupmod(选项)(参数)

选项

1
2
3
-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:设置欲使用的群组名称。

参数

组名:指定要修改的工作的组名。