2025-02-06
编程
00
请注意,本文编写于 80 天前,最后修改于 80 天前,其中某些信息可能已经过时。

目录

登录系统
密码登录
密钥登录
无密钥登录
Linux文件基本属性
Linux文件属主和属组
1、chgrp:更改文件属组
2、chown:更改文件属主,也可以同时更改文件属组
3、chmod:更改文件9个属性
Linux目录与文件管理
ls (列出目录)
cd (切换目录)
pwd (显示目前所在的目录)
mkdir (创建新目录)
rmdir (删除空的目录)
cp (复制文件或目录)
rm (移除文件或目录)
mv (移动文件与目录,或修改名称)
Linux 文件内容查看
cat(由第一行开始显示文件内容)
tac(文件内容从最后一行开始显示)
nl(显示行号)
more(一页一页翻动)
less(一页一页翻动)
head(取出文件前面几行)
tail(取出文件后面几行)
Linux 用户和用户组管理
useradd(添加帐号)
userdel(添加帐号)
passwd(管理账号密码)
groupadd(添加账号组)
groupdel(删除用户组)
Linux 磁盘管理
df(检查文件系统的磁盘空间)
du(du命令也是查看使用空间的)
fdisk(磁盘分区)
mkfs(磁盘格式化)
fask(磁盘检验)
mount(磁盘挂载与卸除)
umount(卸载命令)

linux的运维教程

image.png ● /bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。
● /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
● /dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
● /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
● /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
● /lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
● /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
● /media linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
● /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
● /opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
● /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all
● /root:该目录为系统管理员,也称作超级权限者的用户主目录。
● /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
● /selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
● /srv:该目录存放一些服务启动之后需要提取的数据。
● /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
● /tmp:这个目录是用来存放一些临时文件的。
● /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
● /usr/bin:系统用户使用的应用程序。
● /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。 ● /usr/src:内核源代码默认的放置目录。 ● /var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

登录系统

使用ssh远程登录或者本地直接登录

密码登录

ssh name@<ip> -p <port>

再输入密码就可以登录了

密钥登录

ssh name@<ip> -p <port> -i /path

无密钥登录

  1. 生成SSH密钥对:如果还没有SSH密钥对,可以使用ssh-keygen命令在本地计算机上生成。默认情况下,此命令会在~/.ssh目录下生成一个名为id_rsa的私钥和一个名为id_rsa.pub的公钥。
  2. 将公钥上传到服务器:你需要将生成的公钥(id_rsa.pub的内容)添加到服务器上的~/.ssh/authorized_keys文件中。这可以通过手动复制或使用ssh-copy-id username@server_ip命令完成。
  3. 修改SSH配置(可选):为了进一步增强安全性,你可以编辑服务器的SSH配置文件(通常位于/etc/ssh/sshd_config),禁用基于密码的认证(PasswordAuthentication no),并确保启用了公钥认证(PubkeyAuthentication yes)。之后需要重启SSH服务以应用更改。
  4. 测试登录:完成上述步骤后,尝试从客户端计算机使用ssh username@server_ip命令登录服务器。如果一切设置正确,你应该能够无需输入密码直接登录。
ssh name@<ip> -p <port>

Linux文件基本属性

[root@www /]# ls -l total 64 dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot ……

在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
● 当为[ d ]则是目录
● 当为[ - ]则是文件;
● 若是[ l ]则表示为链接文档(link file);
● 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
● 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

Linux文件属主和属组

同时,在Linux系统中,用户是按组分类的,一个用户属于一个或多个组。 文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。

1、chgrp:更改文件属组

语法:

chgrp [-R] 属组名文件名

参数选项 ● -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。

2、chown:更改文件属主,也可以同时更改文件属组

语法:

chown [–R] 属主名 文件名 chown [-R] 属主名:属组名 文件名

进入 /root 目录(~)将install.log的拥有者改为bin这个账号:

[root@www ~] cd ~ [root@www ~]# chown bin install.log [root@www ~]# ls -l -rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log

将install.log的拥有者与群组改回为root:

[root@www ~]# chown root:root install.log [root@www ~]# ls -l -rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log

3、chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
● r:4
● w:2
● x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
● owner = rwx = 4+2+1 = 7
● group = rwx = 4+2+1 = 7
● others= --- = 0+0+0 = 0
所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:

chmod [-R] xyz 文件或目录

选项与参数:
● xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
● -R : 进行递归(recursive)的持续变更,亦即连同此目录下的所有文件都会变更
举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么命令如下:

[root@www ~]# ls -al .bashrc -rw-r--r-- 1 root root 395 Jul 4 11:45 .bashrc [root@www ~]# chmod 777 .bashrc [root@www ~]# ls -al .bashrc -rwxrwxrwx 1 root root 395 Jul 4 11:45 .bashrc

那如果要将权限变成 -rwxr-xr-- 呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754

Linux目录与文件管理

ls (列出目录)

在Linux系统当中, ls 命令可能是最常被运行的。
语法:

[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称 [root@www ~]# ls [--color={never,auto,always}] 目录名称 [root@www ~]# ls [--full-time] 目录名称

选项与参数:
● -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
● -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
● -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
将家目录下的所有文件列出来(含属性与隐藏档)

[root@www ~]# ls -al ~

cd (切换目录)

cd是Change Directory的缩写,这是用来变换工作目录的命令。 语法:

cd [相对路径或绝对路径]
#使用 mkdir 命令创建w3cschool.cn目录 [root@www ~]# mkdir w3cschool.cn #使用绝对路径切换到w3cschool.cn目录 [root@www ~]# cd /root/w3cschool.cn/ #使用相对路径切换到w3cschool.cn目录 [root@www ~]# cd ./w3cschool.cn/ # 表示回到自己的家目录,亦即是 /root 这个目录 [root@www w3cschool.cn]# cd ~ # 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思; [root@www ~]# cd ..

pwd (显示目前所在的目录)

pwd是Print Working Directory的缩写,也就是显示目前所在目录的命令。

[root@www ~]# pwd [-P]

选项与参数: -P :显示出确实的路径,而非使用连结 (link) 路径。 范例:单纯显示出目前的工作目录

[root@www ~]# pwd /root <== 显示出目录啦~ 范例:显示出实际的工作目录,而非连结档本身的目录名而已 [root@www ~]# cd /var/mail <==注意,/var/mail是一个连结档 [root@www mail]# pwd /var/mail <==列出目前的工作目录 [root@www mail]# pwd -P /var/spool/mail <==怎么回事?有没有加 -P 差很多~ [root@www mail]# ls -ld /var/mail lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail

看到这里应该知道为啥了吧?因为 /var/mail 是连结档,连结到 /var/spool/mail
所以,加上 pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!

mkdir (创建新目录)

如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。 语法:

mkdir [-mp] 目录名称

选项与参数:
● -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
● -p :帮助你直接将所需要的目录(包含上一级目录)递回创建起来!
范例:请到/tmp底下尝试创建数个新目录看看:

[root@www ~]# cd /tmp [root@www tmp]# mkdir test <==创建一名为 test 的新目录 [root@www tmp]# mkdir test1/test2/test3/test4 mkdir: cannot create directory `test1/test2/test3/test4': No such file or directory <== 没办法直接创建此目录啊! [root@www tmp]# mkdir -p test1/test2/test3/test4

加了这个 -p 的选项,可以自行帮你创建多层目录! 范例:创建权限为rwx--x--x的目录

[root@www tmp]# mkdir -m 711 test2 [root@www tmp]# ls -l drwxr-xr-x 3 root root 4096 Jul 18 12:50 test drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1 drwx--x--x 2 root root 4096 Jul 18 12:54 test2

上面的权限部分,如果没有加上 -m 来强制配置属性,系统会使用默认属性。 如果我们使用 -m ,如上例我们给予 -m 711 来给予新的目录 drwx--x--x 的权限。

rmdir (删除空的目录)

语法:

rmdir [-p] 目录名称

选项与参数:
● -p :连同上一级『空的』目录也一起删除
删除 w3cschool.cn 目录

[root@www tmp]# rmdir w3cschool.cn/

范例:将於mkdir范例中创建的目录(/tmp底下)删除掉!

[root@www tmp]# ls -l <==看看有多少目录存在? drwxr-xr-x 3 root root 4096 Jul 18 12:50 test drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1 drwx--x--x 2 root root 4096 Jul 18 12:54 test2 [root@www tmp]# rmdir test <==可直接删除掉,没问题 [root@www tmp]# rmdir test1 <==因为尚有内容,所以无法删除! rmdir: `test1': Directory not empty [root@www tmp]# rmdir -p test1/test2/test3/test4 [root@www tmp]# ls -l <==您看看,底下的输出中test与test1不见了! drwx--x--x 2 root root 4096 Jul 18 12:54 test2

利用 -p 这个选项,立刻就可以将 test1/test2/test3/test4 一次删除。 不过要注意的是,这个 rmdir 仅能删除空的目录,你可以使用 rm 命令来删除非空目录。

cp (复制文件或目录)

cp 即拷贝文件和目录。 语法:

[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination) [root@www ~]# cp [options] source1 source2 source3 .... directory

选项与参数:
● -a :相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
● -d :若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
● -f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
● -i :若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
● -l :进行硬式连结(hard link)的连结档创建,而非复制文件本身;
● -p :连同文件的属性一起复制过去,而非使用默认属性(备份常用);
● -r :递回持续复制,用於目录的复制行为;(常用)
● -s :复制成为符号连结档 (symbolic link),亦即『捷径』文件;
● -u :若 destination 比 source 旧才升级 destination !
用root身份,将家目录下的 .bashrc 复制到 /tmp 下,并更名为 bashr

[root@www ~]# cp ~/.bashrc /tmp/bashrc [root@www ~]# cp -i ~/.bashrc /tmp/bashrc cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为覆盖

rm (移除文件或目录)

语法:

rm [-fir] 文件或目录

选项与参数:
● -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
● -i :互动模式,在删除前会询问使用者是否动作
● -r :递回删除啊!最常用在目录的删除了!这是非常危险的选项!!!
将刚刚在 cp 的范例中创建的 bashrc 删除掉!

[root@www tmp]# rm -i bashrc rm: remove regular file `bashrc'? y

如果加上 -i 的选项就会主动询问喔,避免你删除到错误的档名!

mv (移动文件与目录,或修改名称)

语法:

[root@www ~]# mv [-fiu] source destination [root@www ~]# mv [options] source1 source2 source3 .... directory

选项与参数:
● -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
● -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
● -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
复制一文件,创建一目录,将文件移动到目录中

[root@www ~]# cd /tmp [root@www tmp]# cp ~/.bashrc bashrc [root@www tmp]# mkdir mvtest [root@www tmp]# mv bashrc mvtest 将某个文件移动到某个目录去,就是这样做! 将刚刚的目录名称更名为 mvtest2 [root@www tmp]# mv mvtest mvtest2

Linux 文件内容查看

cat(由第一行开始显示文件内容)

语法:

cat [-AbEnTv]

选项与参数:
● -A :相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
● -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
● -E :将结尾的断行字节 $ 显示出来;
● -n :列印出行号,连同空白行也会有行号,与 -b 的选项不同;
● -T :将 [tab] 按键以 ^I 显示出来;
● -v :列出一些看不出来的特殊字符
检看 /etc/issue 这个文件的内容:

[root@www ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m

tac(文件内容从最后一行开始显示)

tac与cat命令刚好相反,文件内容从最后一行开始显示,可以看出 tac 是 cat 的倒着写!如:

[root@www ~]# tac /etc/issue Kernel \r on an \m CentOS release 6.4 (Final)

nl(显示行号)

语法:

nl [-bnw] 文件

选项与参数:
● -b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
-b t :如果有空行,空的那一行不要列出行号(默认值);

● -n :列出行号表示的方法,主要有三种:
-n ln :行号在萤幕的最左方显示;
-n rn :行号在自己栏位的最右方显示,且不加 0 ;
-n rz :行号在自己栏位的最右方显示,且加 0 ;
● -w :行号栏位的占用的位数。
范例一:用 nl 列出 /etc/issue 的内容

[root@www ~]# nl /etc/issue 1 CentOS release 6.4 (Final) 2 Kernel \r on an \m

more(一页一页翻动)

[root@www ~]# more /etc/man.config # # Generated automatically from man.conf.in by the # configure script. # # man.conf from man-1.6d ....(中间省略).... --More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令

在 more 这个程序的运行过程中,你有几个按键可以按的:
● 空白键 (space):代表向下翻一页;
● Enter :代表向下翻『一行』;
● /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;

:立刻显示出档名以及目前显示的行数;
● q :代表立刻离开 more ,不再显示该文件内容。
● b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。

less(一页一页翻动)

一页一页翻动,以下实例输出/etc/man.config文件的内容:
[root@www ~]# less /etc/man.config

# # Generated automatically from man.conf.in by the # configure script. # # man.conf from man-1.6d ....(中间省略).... : <== 这里可以等待你输入命令!

less运行时可以输入的命令有:
● 空白键 :向下翻动一页;
● [pagedown]:向下翻动一页;
● [pageup] :向上翻动一页;
● /字串 :向下搜寻『字串』的功能;
● ?字串 :向上搜寻『字串』的功能;
● n :重复前一个搜寻 (与 / 或 ? 有关!)
● N :反向的重复前一个搜寻 (与 / 或 ? 有关!)
● q :离开 less 这个程序;

head(取出文件前面几行)

语法:

head [-n number] 文件

选项与参数:
● -n :后面接数字,代表显示几行的意思

[root@www ~]# head /etc/man.config

默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:

[root@www ~]# head -n 20 /etc/man.config

tail(取出文件后面几行)

语法:

tail [-n number] 文件

选项与参数:
● -n :后面接数字,代表显示几行的意思
● -f :表示持续侦测后面所接的档名,要等到按下[ctrl]-c才会结束tail的侦测
[root@www ~]# tail /etc/man.config
默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样:

[root@www ~]# tail -n 20 /etc/man.config

Linux 用户和用户组管理

useradd(添加帐号)

useradd 选项 用户名

参数说明:
● 选项:
○ -c comment 指定一段注释性描述。
○ -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
○ -g 用户组 指定用户所属的用户组。
○ -G 用户组,用户组 指定用户所属的附加组。
○ -s Shell文件 指定用户的登录Shell。
○ -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
● 用户名:指定新账号的登录名。
实例1

useradd –d /usr/sam -m sam

此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。 实例2

useradd -s /bin/sh -g group –G adm,root gem

此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
这里可能新建组:#groupadd group及groupadd adm
增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。

userdel(添加帐号)

userdel sam

删除一个已有的用户账号使用userdel命令,其格式如下:

userdel 选项 用户名

常用的选项是-r,它的作用是把用户的主目录一起删除。 此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
另外,有些系统可以使用选项:-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例如:

# usermod -s /bin/ksh -d /home/z –g developer sam

此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。

passwd(管理账号密码)

passwd 选项 用户名

可使用的选项:
● -l 锁定口令,即禁用账号。
● -u 口令解锁。
● -d 使账号无口令。
● -f 强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:

$ passwd Old password:****** New password:******* Re-enter new password:*******

如果是超级用户,可以用下列形式指定任何用户的口令:

$ passwd sam New password:******* Re-enter new password:*******

普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。 为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。
为用户指定空口令时,执行下列形式的命令:

passwd

此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。
passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:

passwd -l sam

groupadd(添加账号组)

增加一个新的用户组使用groupadd命令。其格式如下:

groupadd 选项 用户组

可以使用的选项有:
● -g GID 指定新用户组的组标识号(GID)。
● -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
实例1:

groupadd group1

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
实例2:

groupadd -g 101 group2

此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。
如果要删除一个已有的用户组,使用groupdel命令,其格式如下:

groupdel(删除用户组)

例如:

groupdel group1

此命令从系统中删除组group1。
常用的选项有:
● -g GID 为用户组指定新的组标识号。
● -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
● -n新用户组 将用户组的名字改为新名字
实例1:

groupmod -g 102 group2

此命令将组group2的组标识号修改为102。
实例2:

groupmod –g 10000 -n group3 group2

此命令将组group2的标识号改为10000,组名修改为group3。
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:

$ newgrp root

这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。

Linux 磁盘管理

df(检查文件系统的磁盘空间)

语法:

df [-ahikHTm] [目录或文件名]

选项与参数:
● -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
● -k :以 KBytes 的容量显示各文件系统;
● -m :以 MBytes 的容量显示各文件系统;
● -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
● -H :以 M=1000K 取代 M=1024K 的进位方式;
● -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
● -i :不用硬盘容量,而以 inode 的数量来显示
实例 1
将系统内所有的文件系统列出来!

[root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc2 9920624 3823112 5585444 41% / /dev/hdc3 4956316 141376 4559108 4% /home /dev/hdc1 101086 11126 84741 12% /boot tmpfs 371332 0 371332 0% /dev/shm

在 Linux 底下如果 df 没有加任何选项,那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!
实例 2
将容量结果以易读的容量格式显示出来

[root@www ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% / /dev/hdc3 4.8G 139M 4.4G 4% /home /dev/hdc1 99M 11M 83M 12% /boot tmpfs 363M 0 363M 0% /dev/shm

实例 3
将系统内的所有特殊文件格式及名称都列出来

[root@www ~]# df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/hdc2 ext3 9920624 3823112 5585444 41% / proc proc 0 0 0 - /proc sysfs sysfs 0 0 0 - /sys devpts devpts 0 0 0 - /dev/pts /dev/hdc3 ext3 4956316 141376 4559108 4% /home /dev/hdc1 ext3 101086 11126 84741 12% /boot tmpfs tmpfs 371332 0 371332 0% /dev/shm none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs

实例 4
将 /etc 底下的可用的磁盘容量以易读的容量格式显示

[root@www ~]# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.7G 5.4G 41% /

du(du命令也是查看使用空间的)

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。 语法:

du [-ahskm] 文件或目录名称

选项与参数:
● -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
● -h :以人们较易读的容量格式 (G/M) 显示;
● -s :列出总量而已,而不列出每个各别的目录占用容量;
● -S :不包括子目录下的总计,与 -s 有点差别。
● -k :以 KBytes 列出容量显示;
● -m :以 MBytes 列出容量显示;
实例 1
列出目前目录下的所有文件容量

[root@www ~]# du 8 ./test4 <==每个目录都会列出来 8 ./test2 ....中间省略.... 12 ./.gconfd <==包括隐藏文件的目录 220 . <==这个目录(.)所占用的总量

直接输入 du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。
实例 2
将文件的容量也列出来

[root@www ~]# du -a 12 ./install.log.syslog <==有文件的列表了 8 ./.bash_logout 8 ./test4 8 ./test2 ....中间省略.... 12 ./.gconfd 220 .

实例 3
检查根目录底下每个目录所占用的容量

[root@www ~]# du -sm /* 7 /bin 6 /boot .....中间省略.... 0 /proc .....中间省略.... 1 /tmp 3859 /usr <==系统初期最大就是他了啦! 77 /var

通配符 * 来代表每个目录。
与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

fdisk(磁盘分区)

fdisk 是 Linux 的磁盘分区表操作工具。
语法:

fdisk [-l] 装置名称

选项与参数:
● -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
实例 1
列出所有分区信息

[root@AY120919111755c246621 tmp]# fdisk -l Disk /dev/xvda: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/xvda1 * 1 2550 20480000 83 Linux /dev/xvda2 2550 2611 490496 82 Linux swap / Solaris Disk /dev/xvdb: 21.5 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x56f40944 Device Boot Start End Blocks Id System /dev/xvdb2 1 2610 20964793+ 83 Linux

实例 2
找出你系统中的根目录所在磁盘,并查阅该硬盘内的相关信息

[root@www ~]# df / <==注意:重点在找出磁盘文件名而已 Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc2 9920624 3823168 5585388 41% / [root@www ~]# fdisk /dev/hdc <==仔细看,不要加上数字喔! The number of cylinders for this disk is set to 5005. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): <==等待你的输入! 输入 m 后,就会看到底下这些命令介绍 Command (m for help): m <== 输入 m 后,就会看到底下这些命令介绍 Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition <==删除一个partition l list known partition types m print this menu n add a new partition <==新增一个partition o create a new empty DOS partition table p print the partition table <==在屏幕上显示分割表 q quit without saving changes <==不储存离开fdisk程序 s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit <==将刚刚的动作写入分割表 x extra functionality (experts only)

离开 fdisk 时按下 q,那么所有的动作都不会生效!相反的, 按下w就是动作生效的意思。

Command (m for help): p <== 这里可以输出目前磁盘的状态 Disk /dev/hdc: 41.1 GB, 41174138880 bytes <==这个磁盘的文件名与容量 255 heads, 63 sectors/track, 5005 cylinders <==磁头、扇区与磁柱大小 Units = cylinders of 16065 * 512 = 8225280 bytes <==每个磁柱的大小 Device Boot Start End Blocks Id System /dev/hdc1 * 1 13 104391 83 Linux /dev/hdc2 14 1288 10241437+ 83 Linux /dev/hdc3 1289 1925 5116702+ 83 Linux /dev/hdc4 1926 5005 24740100 5 Extended /dev/hdc5 1926 2052 1020096 82 Linux swap / Solaris

装置文件名 启动区否 开始磁柱 结束磁柱 1K大小容量 磁盘分区槽内的系统

Command (m for help): q 想要不储存离开吗?按下 q 就对了!不要随便按 w 啊! 使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。

mkfs(磁盘格式化)

磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。
语法:

mkfs [-t 文件系统格式] 装置文件名

选项与参数:
● -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)
实例 1
查看 mkfs 支持的文件格式

[root@www ~]# mkfs[tab][tab] mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat

按下两个[tab],会发现 mkfs 支持的文件格式如上所示。
实例 2
将分区 /dev/hdc6(可指定你自己的分区) 格式化为 ext3 文件系统:

[root@www ~]# mkfs -t ext3 /dev/hdc6 mke2fs 1.39 (29-May-2006) Filesystem label= <==这里指的是分割槽的名称(label) OS type: Linux Block size=4096 (log=2) <==block 的大小配置为 4K Fragment size=4096 (log=2) 251392 inodes, 502023 blocks <==由此配置决定的inode/block数量 25101 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=515899392 16 block groups 32768 blocks per group, 32768 fragments per group 15712 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (8192 blocks): done <==有日志记录 Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

这样就创建起来我们所需要的 Ext3 文件系统了!简单明了!

fask(磁盘检验)

fsck(file system check)用来检查和维护不一致的文件系统。
若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。
语法:

fsck [-t 文件系统] [-ACay] 装置名称

选项与参数:
● -t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数
● -s : 依序一个一个地执行 fsck 的指令来检查
● -A : 对/etc/fstab 中所有列出来的 分区(partition)做检查
● -C : 显示完整的检查进度
● -d : 打印出 e2fsck 的 debug 结果
● -p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行
● -R : 同时有 -A 条件时,省略 / 不检查
● -V : 详细显示模式
● -a : 如果检查有错则自动修复
● -r : 如果检查有错则由使用者回答是否修复
● -y : 选项指定检测每个文件是自动输入yes,在不确定那些是不正常的时候,可以执行 # fsck -y 全部检查修复。
实例 1
查看系统有多少文件系统支持的 fsck 命令:

[root@www ~]# fsck[tab][tab] fsck fsck.cramfs fsck.ext2 fsck.ext3 fsck.msdos fsck.vfat 实例 2 强制检测 /dev/hdc6 分区: [root@www ~]# fsck -C -f -t ext3 /dev/hdc6 fsck 1.39 (29-May-2006) e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks

如果没有加上 -f 的选项,则由于这个文件系统不曾出现问题,检查的经过非常快速!若加上 -f 强制检查,才会一项一项的显示过程。

mount(磁盘挂载与卸除)

Linux 的磁盘挂载使用 mount 命令,卸载使用 umount 命令。
磁盘挂载语法:

mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点

实例 1
用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面!

[root@www ~]# mkdir /mnt/hdc6 [root@www ~]# mount /dev/hdc6 /mnt/hdc6 [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on .....中间省略..... /dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6

umount(卸载命令)

磁盘卸载命令 umount 语法:

umount [-fn] 装置文件名或挂载点

选项与参数:
● -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
● -n :不升级 /etc/mtab 情况下卸除。
卸载/dev/hdc6

[root@www ~]# umount /dev/hdc6

文章如有错误,还望留言指正

参考资料
特殊原因,不便展示,请见谅