Linux 系统目录
├── bin -> usr/bin # 用于存放二进制命令
├── boot # 内核及引导系统程序所在的目录
├── dev # 所有设备文件的目录(如磁盘、光驱等)
├── etc # 配置文件默认路径、服务启动命令存放目录
├── home # 用户主目录,root用户为/root
├── lib -> usr/lib # 32位库文件存放目录
├── lib64 -> usr/lib64 # 64位库文件存放目录
├── media # 媒体文件存放目录
├── mnt # 临时挂载设备目录
├── opt # 自定义软件安装存放目录
├── proc # 进程及内核信息存放目录
├── root # 系统管理员,也称为超级权限者的用户主目录
├── run # 系统运行时产生临时文件,存放目录
├── sbin -> usr/sbin # 系统管理命令存放目录
├── srv # 服务启动之后需要访问的数据目录
├── sys # 系统使用目录
├── tmp # 临时文件目录
├── usr # 系统命令和帮助文件目录
└── var # 存放内容易变的文件的目录
目录管理
1. 查看
- ls (列出目录)
在Linux系统当中, ls 命令可能是最常被运行的。
语法:
[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
选项与参数:
- -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
- -l :长数据串列出,包含文件的属性与权限等等数据;(常用)
将目录下的所有文件列出来(含属性与隐藏档)
[root@www ~]# ls -al ~
- cd (切换目录)
cd是Change Directory的缩写,这是用来变换工作目录的命令。
语法:
cd [相对路径或绝对路径]
测试:
#相对路径进入bin文件夹
[root@zheng001Host /]# cd bin
#相对路径进入www文件夹
[root@zheng001Host bin]# cd ../www
#绝对路径进入www文件夹
[root@zheng001Host www]# cd /www/server/tomcat
#返回上一级文件夹
[root@zheng001Host tomcat]# cd ..
#返回更目录文件夹
[root@zheng001Host server]# cd /
- pwd ( 显示目前所在的目录 )
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
[root@kuangshen kuangstudy]#pwd [-P]
选项与参数:-P :显示出确实的路径,而非使用连接(link) 路径。
测试:
# 单纯显示出目前的工作目录
[root@zheng001Host tomcat]# pwd
/www/server/tomcat
2.创建、删除
- mkdir (创建新目录)
如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。
mkdir [-mp] 目录名称
选项与参数:
- -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
- -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
测试:
# 创建一个test1文件夹
[root@zheng001Host /]# cd home
[root@zheng001Host home]# mkdir test1
[root@zheng001Host home]# ls
redis test1 www
# 创建一个test2/test3的嵌套文件夹
[root@zheng001Host home]# mkdir test2/test3 -p
[root@zheng001Host home]# cd test2
[root@zheng001Host test2]# ls
test3
- rmdir ( 删除空的目录 )
语法:
rmdir [-p] 目录名称
选项与参数:**-p :**连同上一级『空的』目录也一起删除
[root@zheng001Host home]# ls
redis t0 t1 www
#t0为空,可以直接删除
[root@zheng001Host home]# rmdir t0
#t1中存在文件夹,不允许直接删除
[root@zheng001Host home]# rmdir t1
rmdir: failed to remove 't1': Directory not empty
#使用-p可嵌套删除
[root@zheng001Host home]# rmdir -p t1/t2/t3
[root@zheng001Host home]# ls
redis www
3. 复制、移除、移动
- cp ( 复制文件或目录 )
语法:
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
选项与参数:
- **-a:**相当于 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
- **-p:**连同文件的属性一起复制过去,而非使用默认属性(备份常用);
- **-d:**若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
- -r:递归持续复制,用於目录的复制行为;(常用)
- **-f:**为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
- **-i:**若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
- **-l:**进行硬式连结(hard link)的连结档创建,而非复制文件本身。
- **-s:**复制成为符号连结档 (symbolic link),亦即『捷径』文件;
- **-u:**若 destination 比 source 旧才升级 destination !
[root@zheng001Host home]# ls
redis t0 t1 www
[root@zheng001Host home]# cd t0
[root@zheng001Host t0]# ls
copy.txt
#将t0下的文件复制到同级目录下的t1下
[root@zheng001Host t0]# cp copy.txt ../t1
#复制重名文件会询问是否覆盖
[root@zheng001Host t0]# cp copy.txt ../t1
cp: overwrite '../t1/copy.txt'? y
- rm ( 移除文件或目录 )
语法:
rm [-fir] 文件或目录
选项与参数:
- -f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
- -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
- -i :互动模式,在删除前会询问使用者是否动作
[root@zheng001Host home]# ls
redis t0 t1 www
# 递归删除该目录下所有文件及目录
[root@zheng001Host home]# rm -rf t0
删库跑路:[root@zheng001Host home]# rm -rf /
- mv ( 移动文件与目录,或修改名称 )
语法:
[root@www ~]# mv [-fiu] source destination
[root@www ~]# mv [options] source1 source2 source3 .... directory
选项与参数:
- -f :强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
- -i :若目标文件已经存在时,就会询问是否覆盖!
- -u :若目标文件已经存在,且 source 比较新,才会升级 (update)
[root@zheng001Host t1]# ls
copy.txt
# 将t1下的文件移到t0文件夹
[root@zheng001Host t1]# mv copy.txt ../t0
# t0文件夹下有同名文件,询问是否覆盖
mv: overwrite '../t0/copy.txt'? y
基本属性
看懂文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
1.属性含义
- 在Linux中第一个字符代表这个文件是目录、文件或链接文件等等:
- 当为[ d ]则是目录
- 当为[ - ]则是文件;
- 若是[ l ]则表示为链接文档 ( link file );
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备 ( 可随机存取装置 );
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标 ( 一次性读取装置 )。
- 接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。
- [ r ]代表可读(read)
- [ w ]代表可写(write)
- [ x ]代表可执行(execute)。
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]。
文件类型 | 属主权限 | 属组权限 | 其他用户权限 |
---|---|---|---|
0 | 1-3 | 4-6 | 7-9 |
d | rwx | r-x | r-x |
目录、文件 | 读、写、执行 | 读、写、执行 | 读、写、执行 |
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
2.更改属性
- 修改文件属性
(1)chgrp:更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
(2)chown:更改文件属主,也可以同时更改文件属组
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
(3)chmod:更改文件9个属性
chmod [-R] xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字,一种是符号。
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
[root@zheng001Host test]# ls -l
total 8
drwxr-xr-x 2 root root 4096 Aug 28 22:34 t0
drwxr-xr-x 2 root root 4096 Aug 28 22:34 t1
# 更改文件夹t0属组
[root@zheng001Host test]# chgrp -R www t0
[root@zheng001Host test]# ls -l
total 8
drwxr-xr-x 2 root www 4096 Aug 28 22:34 t0
drwxr-xr-x 2 root root 4096 Aug 28 22:34 t1
# 更改文件夹t0属主
[root@zheng001Host test]# chown -R www t0
[root@zheng001Host test]# ls -l
total 8
drwxr-xr-x 2 www www 4096 Aug 28 22:34 t0
drwxr-xr-x 2 root root 4096 Aug 28 22:34 t1
# 更改文件9个属性
[root@zheng001Host test]# chmod -R 775 t0
[root@zheng001Host test]# chmod -R 000 t1
[root@zheng001Host test]# ls -l
total 8
drwxrwxr-x 2 www www 4096 Aug 28 22:34 t0
d--------- 2 root root 4096 Aug 28 22:34 t1
查看文件
概述
Linux系统中使用以下命令来查看文件的内容:
-
cat 由第一行开始显示文件内容
-
tac 由最后行开始显示文件内容
-
nl 显示的时候,顺道输出行号!
-
more 一页一页的显示文件内容
- 空白键 (space):代表向下翻一页;
- Enter :代表向下翻『一行』;
- /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字;
- :f :立刻显示出档名以及目前显示的行数;
- q :代表立刻离开 more ,不再显示该文件内容。
-
less 一页一页的显示文件内容,还可以往前翻页!
- 上下键翻动
- /字串 :向下搜寻『字串』的功能;
- ?字串 :向上搜寻『字串』的功能;
- n :重复前一个搜寻 (与 / 或 ? 有关!)
-
head 只看头几行
-
tail 只看尾巴几行
# 查看ifcfg-eth0文件的前2行
[root@zheng001Host network-scripts]# head -n 2 ifcfg-eth0
拓展:Linux 链接概念
硬链接:假设B是A的硬链接,那么他们指向同一个文件!A删除,B仍然存在可用。
软链接:同样B是A的硬链接,他们类似于快捷方式!A删除,B则无法访问。
ln 源文件名 链接名
- -s:默认是硬链接,加s为软链接
Vim使用
- 三种使用模式
基本上 vi/vim 共分为三种模式,分别是命令模式,输入模式和底线命令模式
不存在该文件为添加该文件,存在则为编辑。
命令模式:
用户启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符。(实操中为任意键)
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
输入模式:
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
在底线命令模式中,基本的命令有(已经省略了冒号):
- q 退出程序
- w 保存文件(wq可组合使用)
- ESC键可随时退出底线命令模式,进入命令模式
命令 | 说明 |
---|---|
a/i/o | 进入输入模式 |
n+20 > 空格 | 向后移动20个字符 |
n+20 > enter | 向下移动20行 |
x | 删除光标后1个字符 |
x20 | 删除光标后20个字符 |
dd | 删除光标那1行 |
20dd | 删除光标行开始下20行 |
yy | 复制光标那1行 |
20yy | 复制光标行开始下20行 |
y0 | 复制从光标开始到行首 |
y$ | 复制从光标开始到行尾 |
p | 粘贴到光标后 |
u | 撤销一个动作 |
[ctr]+r | 恢复一个动作 |
:w | 保存 |
:q | 退出 |
:q! /ZZ | 修改了但不想保存,强制退出 |
:set nu | 显示行号 |
:set nonu | 取消行号 |
/word | 向下搜索word字符串 |
?word | 向上搜索word字符串 |
账号管理
- 添加账号 useradd
useradd 选项 用户名
参数说明:
-
选项 :
-
- -c comment 指定一段注释性描述。
- -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
- -g 用户组 指定用户所属的用户组。( root )
- -G 用户组,用户组 指定用户所属的附加组。
- -m 使用者目录如不存在则自动建立。( **/home/**zheng01 )
- -s Shell文件 指定用户的登录Shell。
- -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
# 此命令创建了一个用户zheng01
[root@zheng001Host home]# useradd -m zheng01
[root@zheng001Host home]# ls
redis www zheng01
#增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。
- 删除帐号
删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。
删除一个已有的用户账号使用userdel命令,其格式如下:
userdel 选项 用户名
- 常用的选项是 -r,它的作用是把用户的主目录一起删除。
[root@kuangshen home]# userdel -r zheng01
此命令删除用户zheng01在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
- 修改帐号
修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。
修改已有用户的信息使用usermod命令,其格式如下:
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。
例如:
# usermod -s /bin/ksh -d /home/z –g developer kuangshen
此命令将用户kuangshen的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
- Linux下如何切换用户
1.切换用户的命令为:su username 【username是你的用户名】
2.从普通用户切换到root用户,还可以使用命令:sudo su
3.在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
4.在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-,例如:【su - root】
- $表示普通用户
- #表示超级用户,也就是root用户
[root@zheng001Host home]# useradd testuser -m
[root@zheng001Host home]# ls
redis testuser www
# 切换用户
[root@zheng001Host home]# su testuser
# 退回原来的用户
[testuser@zheng001Host home]$ exit
exit
[root@zheng001Host home]#
- 用户口令的管理
命令的格式为:
passwd 选项 用户名
可使用的选项:
- -l 锁定口令,即禁用账号。
- -u 口令解锁。
- -d 使账号无口令。
- -f 强迫用户下次登录时修改口令。
[root@zhengHost home]# ls
redis testuser www
[root@zhengHost home]# passwd testuser
# 输入新密码
Changing password for user testuser.
New password:
# 密码太简单,当仍然可通过
BAD PASSWORD: The password is shorter than 8 characters
# 再次输入新密码
Retype new password:
passwd: all authentication tokens updated successfully.
用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对**/etc/group**文件的更新。
- 增加一个新的用户组使用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。
- 修改用户组的属性使用groupmod命令
groupmod 选项 用户组
常用的选项有:
- -g GID 为用户组指定新的组标识号。
- -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
- -n新用户组 将用户组的名字改为新名字
# 此命令将组group2的组标识号修改为102。
groupmod -g 102 group2
# 将组group2的标识号改为10000,组名修改为group3。
groupmod –g 10000 -n group3 group2
- 切换组
如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。
用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。例如:
$ newgrp root
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。
拓展:文件说明
-
/etc/passwd 用户管理工作涉及的最重要的一个文件,可查看每个用户
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
这个文件对所有用户都是可读的。
[root@zhengHost /]# head -n 3 /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin # 用户名:口令(密码,不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell # “主目录”,也就是用户的起始工作目录 # “登录Shell”,用户登录后,要启动一个进程,负责将用户的操作传给内核
-
/etc/group 用户组的所有信息
[root@zhengHost /]# head -n 3 /etc/group root:x:0: bin:x:1: daemon:x:2: #组名:口令:组标识号:组内用户列表
磁盘管理
概述
Linux磁盘管理常用命令为 df、du。
- df :列出文件系统的整体磁盘使用量
- du:检查磁盘空间使用量
- df
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:
df [-ahikHTm] [目录或文件名]
选项与参数:
- -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
- -k :以 KBytes 的容量显示各文件系统;
- -m :以 MBytes 的容量显示各文件系统;
- -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
- -H :以 M=1000K 取代 M=1024K 的进位方式;
- -T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;
- -i :不用硬盘容量,而以 inode 的数量来显示
[root@zhengHost /]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 926M 0 926M 0% /dev
tmpfs 944M 16K 944M 1% /dev/shm
tmpfs 944M 468K 944M 1% /run
tmpfs 944M 0 944M 0% /sys/fs/cgroup
/dev/vda1 20G 8.2G 11G 45% /
tmpfs 189M 0 189M 0% /run/user/0
- du
查看使用空间的,与df命令不同的是该命令是对文件和目录磁盘使用的空间的查看
选项与参数:
- -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
- -h :以人们较易读的容量格式 (G/M) 显示;
- -s :列出总量而已,而不列出每个各别的目录占用容量;
- -S :不包括子目录下的总计,与 -s 有点差别。
- -k :以 KBytes 列出容量显示;
- -m :以 MBytes 列出容量显示;
[root@zhengHost home]# du -ah
- 磁盘挂载与卸除
根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载”
Linux 的磁盘挂载使用mount命令,卸载使用umount命令。
磁盘挂载语法:
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n] 装置文件名 挂载点
测试
# 将 /dev/hdc6 挂载到 /mnt/hdc6 上面!
[root@www ~]# mkdir /mnt/hdc6
[root@www ~]# mount /dev/hdc6 /mnt/hdc6
磁盘卸载命令 umount 语法:
umount [-fn] 装置文件名或挂载点
选项与参数:
- -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
- -n :不升级 /etc/mtab 情况下卸除。
进程管理
- 命令 ps
查看当前系统中正在执行的各种进程的信息!
ps -aux:
- -a 显示当前终端运行的所有的进程信息
- -u 以用户的信息显示进程
- -x 显示后台运行进程的参数
- | 管道符,可以把A命令的结果操作B命令
# 查看关于mysql的进程
# grep:过滤的命令
[root@zhengHost /]# ps -aux|grep mysql
root 1585 0.0 0.1 222400 3528 ? S Aug28 0:00 /bin/sh /www/server/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --datadir=/www/server/data --pid-file=/www/server/data/zheng001Host.pid
mysql 2296 0.0 10.2 968316 198356 ? Sl Aug28 0:19 /www/server/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/www/server/mysql --datadir=/www/server/data --plugin-dir=/www/server/mysql/lib/plugin --user=mysql --log-error=zheng001Host.err --open-files-limit=65535 --pid-file=/www/server/data/zheng001Host.pid --socket=/tmp/mysql.sock --port=3306
root 16111 0.0 0.0 221460 840 pts/1 R+ 17:53 0:00 grep --color=auto mysql
**ps -ef:**查看父进程信息
**pstree:**树结果查看
- -p 显示父id
- -u 显示用户组
- 结束进程
# 表示强制结束该进程
kill -9 进程id
防火墙配置
# 查看已开启的端口
firewall-cmd --list-ports
# 查看firewall服务状态
systemctl status firewalld
# 开启firewalld.service服务
service firewalld start
# 重启firewalld.service服务
service firewalld restart
# 关闭firewalld.service服务
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
# 开启端口
开端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:systemctl restart firewalld.service
命令含义:
- –zone #作用域
- –add-port=80/tcp #添加端口,格式为:端口/通讯协议
- –permanent #永久生效,没有此参数重启后失效