文章目录
Linux笔记
Linux简介
1.0 什么是Linux?
linux 是类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、多线程以及多CPU的操作系统。
1.1 Linux的发行版本:
CentOS、RedHat、Ubuntu、Debian、OpenSUSE…
1.2 Linux的服务器类型
1 . LAMP(Linux+Apache+Mysql+PHP)
2 . LNMP(Linux+Nginx+Mysql+PHP)
Linux 系统目录结构
命令:
ls /
2.0 树状目录结构如下:
2.1目录解释:
-
/bin:
这个目录存放着经常使用的命令。
-
/boot
这里存放的是启动Linux时使用的一些核心文件,包括一些链接文件和镜像文件。
-
/dev
该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是一样的。
-
/etc
该目录存放所有系统管理所需要的配置文件和子目录列表。
-
/hone
用户的主目录,在Linux中,每个用户都有一个自己的主目录,一般该目录名使用用户的账户名命名。
-
/lib
这里存放着系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所用的应用程序都需要用到这些共享库。
Linux 文件基本属性
3.0 在Linux中代表这个文件是目录、文件或链接文件等等。
- 当为 [ d ] 则是目录
- 当为 [ - ] 则是文件
- 当为 [ l ] 则表示为链接文档
- 当为 [ b] 则表示为装置文件里面的可供存储的接口设备(可随机存取装置)
- 当为 [ c ] 则表示为装置文件里的串行端口设备,例如键盘、鼠标(一次性读取装置)
3.1 文件属性
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
每个文件的属性由左边第一部分的10个字符来确定(如下图)。
3.2 更改文件属性
-
chgrp:更改文件属组
语法:
chgrp [-R] 属组名 文件名
-
chown:更改文件所有者,也可以同时修改文件所属组
语法:
chown [-R] 所有者 文件名
chown [-R] 所有者:所属组 文件名
cd ~ chown bin install.log
-
chmod:更改文件的9个属性
Linux文件属性的两种设置方法:一种是数字;一种是符号。
Linux文件的基本权限就有9个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
数字代表权限
- r:4
- w:2
- x:1
语法:
chmod [-R] xyz 文件或目录
参数说明:
- xyz:为rwx属性数值的相加。
符号类型改变权限
- (1)user
- (2)group
- (3)others
我们使用u、g、o来代表三种身份的权限! 此外,a代表all,即全部权限
chmod u=rwx,g=rx,o=r test1
例如要拿掉全部人的可执行权限:
chmod a-x test1
ls -al test1
Linux 文件与目录结构
我们知道Linux的目录结构为树状结构,最顶级的目录为根目录 / 。
其他目录可以通过挂载将他们添加到树中。
-
绝对路径:
路径的写法,由根目录 / 写起,例如: /user/share/doc 这个目录。
-
相对路径:
路径的写法,不是有 / 写起,例如由 /user/share/doc 要到 /user/share/man 底下时,可以写成:cd …/man这就是相对路径。
4.0 处理目录的常用命令
- ls : 列出目录以及文件名
- cd : 切换目录
- pwd : 显示当前目录
- mkdir : 创建一个新的目录
- rmdir : 删除下一个空目录
- cp : 复制文件或目录
- rm : 移除文件或目录
- mv : 移动文件与目录,或修改文件与目录的名称
你可以使用 man [命令] 来查看各个命令的使用文档。
4.0.1 ls(列出目录)
在Linux系统当中,ls 命令可能是最常运行的命令
选项与参数
-
-a :全部的文件,连同隐藏文件(开头为 . 的文件)一起列出来==(常用)==
-
-d :仅列出目录本身,而不是列出目录内的文件数据==(常用)==
-
-l :长数据串列出,包含文件属性权限等等数据==(常用)==
ls -al
4.0.2 cd(切换目录)
语法
cd [相对路径或绝对路径]
#使用 mkdir 命令创建 runoob 目录
mkdir runoob
#使用绝对路径切换到 runoob目录
cd /root/runoob/
#使用相对路径切换到 runoob 目录
cd ./runoob/
#回到自己的家目录
cd ~
#返回上一级目录
cd …
4.0.3 pwd (显示当前所在目录)
pwd [-p]
[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 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
4.0.4 mkdir (创建新目录)
mkdir [-mp] 目录名称
选项参数
- -m :配置稳健的权限
- -p :帮助你直接将需要的目录(包含上一级目录)递归创建起来。
实例:请到 /tmp 底下尝试创建新:
cd /tmp
mkdir test
mkdir test1/tset2/test3/test4 #没办法创建此目录
mkdir -p test1/tset2/test3/test4
加了 -p 的选项,可以创建多级目录
实例:创建权限为 rwx --x --x 的目录。
mkdir -m 711 test2
ls -l
上面权限的部分,如果没有加上 -m 来强制配置属性,系统使用默认属性。
4.0.5 rmdir (删除空的目录)
rmdir [-P] 目录名称
实例:删除 runoob 目录
rmdir runoob/
将 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
4.0.6 cp(复制文件或目录)
cp [-adfilprsu] 来源档 目标档
cp [options] source1 source2 source3 source4 ... 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 下,并命名为 bashrc
cp ~/.bashrc /tmp/bashrc
4.0.7 rm(移除文件或目录)
rm [-fir] 文件或目录
选项与参数
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -i :互动模式,在删除前会询问使用者是否动作
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
[root@www tmp]# rm -i bashrc rm: remove regular file `bashrc'? y
4.0.8 mv(移动文件或目录,或修改名称)
mv [-fiu] source destination
mv [options] source1 source2 source3 source4 ... 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
4.1 Linux 文件内容查看
Linux系统中使用以下命令来查看文件的内容:
- cat 由第一行开始显示文件内容
- tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- nl 显示的时候,顺道输出行号!
- more 一页一页的显示文件内容
- less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- head 只看头几行
- tail 只看尾巴几行
4.1.1 cat
由第一行开始显示文件内容
cat 文件名
例:查看 /etc/issue 这个文件的内容
[root@www ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m
4.1.2 tac
由最后一行开始显示文件内容
[root@www ~]# tac /etc/issue Kernel \r on an \m CentOS release 6.4 (Final)
4.1.3 nl
显示行号
[root@www ~]# nl /etc/issue 1 CentOS release 6.4 (Final) 2 Kernel \r on an \m
4.1.4 more
一页一页翻动
[root@www ~]# more /etc/man_db.config # # Generated automatically from man.conf.in by the # configure script. # # man.conf from man-1.6d ....(中间省略).... --More--(28%) <== 重点在这一行喔!你的光标也会在这里等待你的命令
在more这个程序运行过程中,需要的按键:
- 空白键 (space):代表向下翻『一页』;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
- b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
4.1.5 less
一页一页翻动
[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 这个程序;
4.1.6 head
取出文件的前几行
head [-n number] 文件
默认的情况中,显示前面 10 行!若要显示前 20 行,就得要这样:
[root@www ~]# head -n 20 /etc/man.config
4.1.7 tail
取出文件后面几行
head [-n number] 文件
例
[root@www ~]# tail /etc/man.config # 默认的情况中,显示最后的十行!若要显示最后的 20 行,就得要这样: [root@www ~]# tail -n 20 /etc/man.config
Linux 用户和用户组管理
实现用户账号的管理,要完成的工作主要有:
- 用户账户的添加、删除与修改
- 用户口令的管理
- 用户组的管理
5.0 Linux 系统用户账户的管理
###### 5.0.1 添加新的用户账号使用useradd命令,其语法如下:
>useradd 选项 用户名
参数说明
- -d : 指定用户主目录,如果目录不存在,则使用-m选项,可以创建目录
- -g : 指定用户所属的用户组
- -G : 用户组 指定用户所属的附加组
- -s : Shell文件 指定用户的登录Shell
实例一
useradd -d /home/sam -m sam
实例二
useradd -s /bin/sh -g group -G adm ,root gem
此命令新建了一个用户 gem ,该用户的登录 shell 是/bin/sh ,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
5.0.2 删除账号
删除一个已有的账户使用userdel命令,其格式如下:
userdel 选项 用户名
常用的选项是***-r***,它的作用是把用户的主目录一起删除。
例如:
userdel -r sam
此命令删除用户sam在系统文件中==(主要是/etc/passwd,/etc/shadow,/etc/group)==的记录,同时删除用户的主目录。
5.0.3 修改账号
修改已有用户的信息使用 usermod 命令,其格式如下:
usermod 选项 用户名
例如
usermod -s /bin/ksh -d /home/z -g developer sam
此命令是将用户sam的登录shell修改为ksh,主目录改为/home/z,用户组改为developer。
5.0.4 用户口令的管理
指定和修改用户口令的shell命令是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 -d sam
锁定用户
passwd -l sam
5.1 Linux 系统用户组的管理
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对==/etc/group==文件的更新。
5.1.0 增加一个新的用户组使用groupadd命令。其格式如下:
groupadd 选项 用户组
实例1:
#向系统中添加一个新组group1 groupadd group1 #向系统中添加一个新组group2,并同时指定新组的组标识 groupadd -g 101 group2
5.1.1 删除一个已有用户组,使用groupdel命令,其格式如下:
groupdel 用户组
例如
groupdel group1
5.1.2 修改用户组的属性使用groupmod命令,其格式如下:
groupmod 选项 用户组
实例1
groupmod -g 102 group2
此命令将组group2的组标识修改为102
实例2
groupmod -g 1000 -n group3 group2
此命令将组group2的标识号改为1000,组名修改为group3
5.1.3 切换到其他组
newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户组的主组或附加组。
5.2 与用户账号有关的系统文件
5.2.0 /etc/passwd 文件
Linux 系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
# cat /etc/passwd root:x:0:0:Superuser:/: daemon:x:1:1:System daemons:/etc: bin:x:2:2:Owner of system commands:/bin: sys:x:3:3:Owner of system files:/usr/sys: adm:x:4:4:System accounting:/usr/adm: uucp:x:5:5:UUCP administrator:/usr/lib/uucp: auth:x:7:21:Authentication administrator:/tcb/files/auth: cron:x:9:16:Cron daemon:/usr/spool/cron: listen:x:37:4:Network daemon:/usr/net/nls: lp:x:71:18:Printer administrator:/usr/spool/lp: sam:x:200:50:Sam san:/home/sam:/bin/sh
从上面的例子中可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分割为7个字段,具体含义如下:
用户名: 口令:用户标识号:组标识号:注释性描述:主目录:登录shell
1)"用户名"是代表用户账号的字符串。
通常长度不超过8个字符,并且由大小写字母和==/或数字==组成。登录名中不能有冒号(😃,因为冒号在这里是分隔符。
为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
2)“口令”一些系统中,存放着加密后的用户口令字。
虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
3)“用户标识号”是一个整数,系统内部用它来标识用户。
一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
4)“组标识号”字段记录的是用户所属的用户组。
它对应着==/etc/group==文件中的一条记录。
5)“注释性描述”字段记录着用户的一些个人情况。
例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
6)“主目录”,也就是用户的起始工作目录。
它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。
系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。
利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
8)系统中有一类用户称为伪用户(pseudo users)。
这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
5.2.1 /etc/shadow 文件
它的文件格式与/etc/passwd类似,由若干个字段组成,之间用冒号分隔:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- "登录名"是与/etc/passwd文件中的登录名相一致的用户账号
- "口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
- "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCO Linux 中,这个时间起点是1970年1月1日。
- "最小时间间隔"指的是两次修改口令之间所需的最小天数。
- "最大时间间隔"指的是口令保持有效的最大天数。
- "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
- "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
- "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。
例子
# cat /etc/shadow root:Dnakfw28zf38w:8764:0:168:7::: daemon:*::0:0:::: bin:*::0:0:::: sys:*::0:0:::: adm:*::0:0:::: uucp:*::0:0:::: nuucp:*::0:0:::: auth:*::0:0:::: cron:*::0:0:::: listen:*::0:0:::: lp:*::0:0:::: sam:EkdiSECLWPdSa:9740:0:0::::
5.2.2 /ect/group文件
用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:
组名:口令:组标识号:组内用户列表
- "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
- "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
- "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
- "组内用户列表"是属于这个组的所有用户的列表/b],不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
例
root::0:root bin::2:root,bin sys::3:root,uucp adm::4:root,adm daemon::5:root,daemon lp::7:root,lp users::20:root,sam
5.3 批量添加用户
-
先编辑一个文本用户文件
每一列按照==/etc/passwd==密码文件的格式书写,要注意每个用户的用户名、UID、宿主目录都不可以相同,其中密码栏可以留做空白或输入x号。一个范例文件user.txt内容如下:
user001::600:100:user:/home/user001:/bin/bash 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
- 以root身份执行命令 /usr/sbin/newusers,从刚创建的用户文件
user.txt
中导入数据,创建用户:
# newusers < user.txt
然后可以执行命令 vipw
或 vi /etc/passwd
检查 /etc/passwd
文件是否已经出现这些用户的数据,并且用户的宿主目录是否已经创建。
- 执行命令/usr/sbin/pwunconv。
将 /etc/shadow
产生的 shadow
密码解码,然后回写到 /etc/passwd
中,并将/etc/shadow
的shadow
密码栏删掉。这是为了方便下一步的密码转换工作,即先取消 shadow password
功能。
# pwunconv
- 编辑每个用户的密码对照文件。
用户名:密码
实例文件
user001:123456 user002:123456 user003:123456 user004:123456 user005:123456 user006:123456
- 以 root 身份执行命令
/usr/sbin/chpasswd
。
创建用户密码,chpasswd
会将经过 /usr/bin/passwd
命令编码过的密码写入 /etc/passwd
的密码栏。
# chpasswd < passwd.txt
- 确定密码经编码写入/etc/passwd的密码栏后。
执行命令 /usr/sbin/pwconv
将密码编码为 shadow password
,并将结果写入 /etc/shadow
。
# pwconv
Linux 磁盘管理
Linux磁盘管理常用三个命令为df、du和fdisk。
- df:列出文件系统的整体磁盘使用量
- du:检查磁盘空间使用量
- fdisk:用于磁盘分区
6.1 df 命令
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法
df [选项] [目录或文件名]
选项与参数
- -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% /
6.2 du命令
Linux 中du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。
语法
du [选项] 文件或目录名称
选项与参数
- -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
- -h :以人们较易读的容量格式 (G/M) 显示;
- -s :列出总量而已,而不列出每个各别的目录占用容量;
- -S :不包括子目录下的总计,与 -s 有点差别。
- -k :以 KBytes 列出容量显示;
- -m :以 MBytes 列出容量显示;
实例 1
只列出当前目录下所有文件夹容量
[root@www ~]# du 8 ./test4 <==每个目录都会列出来 8 ./test2 ....中间省略.... 12 ./.gconfd <==包括隐藏文件的目录 220 . <==这个目录(.)所占用的总量
实例 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 这个命令其实会直接到文件系统内去搜寻所有的文件数据。
6.3 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
Linux 的 vi/vim
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
7.1 什么是 vim?
vim是从 vi 发展出来的一个文本编辑器。
vim 键盘图
7.2 vi/vim 的使用
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
- 命 令模式
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 切换到编辑模式,以在最底一行输入命令。
- 插入模式
- 字符按键以及Shift组合,输入字符
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
- 编辑模式
- q 退出程序
- w 保存文件
7.3 yum命令
yum常用的命令
-
1.列出所有可更新的软件清单命令:yum check-update
-
2.更新所有软件命令:yum update
-
3.仅安装指定的软件命令:yum install <package_name>
-
4.仅更新指定的软件命令:yum update <package_name>
-
5.列出所有可安裝的软件清单命令:yum list
-
6.删除软件包命令:yum remove <package_name>
-
7.查找软件包 命令:yum search
-
8.清除缓存命令:
-
yum clean packages: 清除缓存目录下的软件包
-
yum clean headers: 清除缓存目录下的 headers
-
yum clean oldheaders: 清除缓存目录下旧的 headers
-
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
-
Linux下安装JDK
步骤
1、下载jdk安装包,进入 /usr目录下建立 java 文件夹
mkdir java
2、将java安装包放在 java文件夹下,并解压
tar -zxvf jdk-8u191-linux-x64.tar.gz(压缩包文件名)
3、继续执行 vim /etc/profile 进行环境变量的配置
在最下面添加
export JAVA_HOME=/usr/java/jdk1.8.0_191(你的版本) export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
4、配置完成后,:wq 保存
5、测试
输入 source /etc/profile 使环境变量生效
输入 java -version ,检查 jdk版本
Linux下 安装Tomcat
步骤
1、去官网下载Linux版安装包
2、创建存放在Tomcat文件夹下
mkdir /usr/tomcat
3、解压,压缩文件
tar -zxvf apache-tomcat-8.5.35(安装包名字)
4、启动
进入 /usr/tomcat/apache-tomcat-8.5.35/bin 目录 执行里面的 startup.sh 即可启动 ./startup.sh 执行 shutdown.sh 关闭程序 ```linux 5、访问 ```linux 访问地址:http://远程IP地址:8080
Linux下安装 Mysql
步骤
1、彻底删除
首先查看:
rpm -qa|grep -i mysql
如果有就一个个删除
yum remove '软件名'
2、下载安装
yum -y install wget
3、下载Mysql
wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm yum localinstall mysql57-community-release-el7-11.noarch.rpm
4、查看是否安装
yum repolist enabled | grep "mysql.*-community.*"
5、设置服务
yum install mysql-community-server
6、启动mysql
systemctl start mysqld
7、关闭mysql
systemctl stop mysqld
8、查看是否启动
systemctl status mysqld
9、重启mysql
systemctl restart mysqld
10、设置开机自启动
systemctl enable mysqld
11、继续执行
systemctl daemon-reload
12、修改密码
查看默认密码 grep 'temporary password' /var/log/mysqld.log
13、连接数据库
mysql -u root -p (随机密码)
14、Mysql有安全策略,在 /etc/my.cnf 中加入 validate_password = off 可以设置关闭密码校验
重启Mysql
systemctl restart mysqld
15、修改密码
alter user 'root'@'localhost' identified by '新密码';
16、远程连接
grant all privileges on *.* to root@'%'identified by '数据库密码';
Linux 下安装 Redis
步骤
1、安装环境:
yum install gcc-c++
2、上传解压(将下载好的安装包放在 /opt 文件夹下,并解压)
tar -zxvf redis-5.0.9.tar.gz
3、进入解压后的 redis-5.0.9文件夹下,执行 make 命令
make
4、安装:指定安装位置
make install PREFIX=/usr/redis
5、启动(进入bin目录下执行服务端启动:)
cd /usr/redis/bin
6、后台启动,现将配置文件复制到 bin 目录下
cp /opt/redis-5.0.9/redis.conf /usr/redis/bin
7、编辑改配置文件
vim /usr/redis/bin/redis.conf
8、将 daemonize no 改为daemonize yes
9、重新进入 bin 文件夹下执行
./redis-server redis.conf
10、查看redis状态
ps -ef|grep redis
Linux 下安装Zookeeper
步骤
下载地址:http://archive.apache.org/dist/zookeeper/
使用的Zookeeper版本为3.4.6,下载完成后可以获得名称为zookeeper-3.4.6.tar.gz的压缩文件。
安装步骤:
第一步:安装 jdk(略)
第二步:把 zookeeper 的压缩包(zookeeper-3.4.6.tar.gz)上传到 /usr/zookeeper 文件夹下
第三步:解压缩压缩包
tar -zxvf zookeeper-3.4.6.tar.gz
第四步:进入zookeeper-3.4.6目录,创建data目录
mkdir data
第五步:进入conf目录 ,把zoo_sample.cfg 改名为zoo.cfg
cd conf mv zoo_sample.cfg zoo.cfg
第六步:打开zoo.cfg文件, 修改data属性:dataDir=/usr/local/zookeeper-3.4.6/data
第七步:启动、停止
进入Zookeeper的bin目录,启动服务命令
./zkServer.sh start
停止服务命令
./zkServer.sh stop
查看服务状态:
./zkServer.sh status
启动zookeeper的客户端
./zkCli.sh
查看当前的所有节点
[zk: localhost:2181(CONNECTED) 0] ls /