1. Linux 入门
Linux 内核最初由芬兰人林纳斯·托瓦兹在大学时出于个人爱好而编写的
Linux 是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux 能运行主要的UNIX工具软件、应用程序和网络协议,支持32和64位硬件,继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
比较 | Window | Linux |
---|---|---|
免费与收费 | 收费且很贵 | Linux 免费或少许费用 |
软件与支持 | 数量和质量的优势,不过大部分为收费软件;由微软官方提供支持和服务; | 开源自由软件,用户可以修改定制和再发布,由于基本免费没有资金支持,部分软件质量和体验欠缺;有全球所有的Linux开发者和自由软件社区提供支持。 |
安全性 | 三天两头打补丁安装系统安全更新,还是会中病毒木马; | 要说 Linux 没有安全问题,那当然是不可能的, 这一点仁者见仁智者见智,相对来说肯定比 Windows 平台要更加安全 |
使用习惯 | 普通用户基本都是纯图形界面下操作使用,依靠鼠标和键盘完成一切操作,用户上手容易入门简单; | 兼具图形界面操作和完全的命令行操作,可以只用键盘完成一切操作,新手入门较困难,需要一些学习和指导,一旦熟练之后效率极高。 |
可定制性 | 封闭的,系统可定制性很差; | 开源,可定制化非常强。 |
应用场景 | 桌面操作系统主要使用的是window。 | 支撑百度,谷歌,淘宝等应用软件和服务的,是后台成千上万的Linux服务器主机。世界上大部分软件和服务都是运行在Linux之上的。 |
下载与安装
虚拟机软件:VMWare
CentOS官网:The CentOS Project
VMWare只需要修改安装地址即可;CentOS的安装需要分配CPU内核数和内存。其中处理器数量和每个处理器内核数量相乘不能超过物理机的逻辑处理器个数。
虚拟机上网方式:
- 桥接网络:虚拟机直接连接外部物理网络的模式,主机七到了网桥的作用。这种模式下,虚拟机可以直接访问外部网络,并且对外部网络时可见的。可能造成ip冲突
相当于VMWare创建了一个虚拟交换机(一个网桥不能连接多台虚拟机),通过pc机与虚拟机之间搭建的网桥,让路由器内部的DHCP服务器动态地分配一个ip给虚拟机
- NAT模式(网络地址转换)
虚拟机和主机构建一个专用网络,并通过虚拟网络地址转换(NAT)设备对IP进行转换。虚拟机通过共享主机IP可以访问外部网络,但外部网络无法访问虚拟机。
相当于VMWare创建了一个虚拟路由器(实际上是底层创建了一个NAT服务器做网络地址转换和一个DHCP服务器做动态地址分配),通过pc的IP给虚拟机分配子网ip,此时虚拟机可以连外网。
VMWare还给pc创建了一个虚拟网卡(VMnet8),连接虚拟路由器,以便pc能连接到虚拟机
- 仅主机模式:虚拟机只与主机共享一个专用网络,无法与外部通信
相当于VMware创建了一个虚拟交换机连接虚拟机,并给pc创建了一个虚拟网卡(VMnet1)连接到交换机
文件系统的IO方式,磁盘类型都使用推荐,磁盘种类选择创建新虚拟磁盘,分配好空间后选择将虚拟磁盘拆分成多个文件,方便虚拟机的转移。
第一次启动CentOS时需要定制化内容,软件选择GHOME桌面(图形化界面的方式);然后可以在安装位置进行手动分区。
Linux的分区由三部分构成:
- /boot:引导分区的挂载点
- swap:交换分区,在内存不够用时的暂存区
- /:根目录
KDUMP会占用一部分内存,学习阶段建议关闭
Linux 的目录结构
Linux 系统中一切皆文件。
Linux 的文件系统采用级层式的树状目录结构,根目录为“/”,在此目录下再创建其它目录
目录结构具体介绍:
- /bin:Binary 的缩写,存放最常使用的命令
- /sbin:s表示Super User,存放系统管理员使用的系统管理程序
- /home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名由用户的账号命名
- /root:系统管理员,也称超级权限者的用户主目录
- /lib:系统开机所需要最基本的动态连接共享库,作用类似于Windows中的DLL文件,几乎所有的应用程序都需要用到这些共享库
- /boot:存放启动Linux时使用的一些核心文件,包括一些连接文件一级镜像文件
- /etc:所有的系统管理所需要的配置文件和子目录
- /usr:用户的很多应用程序和文件都放在这个目录下,类似于Windows中的programfiles目录
- 该目录下的local:另一个给主机额外安装软件所安装的目录。一般通过编译源码方式安装的程序。
- /proc:一个虚拟的目录,是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息
- /srv:service的缩写,该目录存放一些服务启动之后需要提取的数据
- /sys:是linux2.6内核的一个很大的变化,该目录安装了2.6内核中新出现的一个系统文件sysfs
- /tmp:用来存放一些临时文件
- /dev:类似于Windows的设备管理器,把所有的硬件用文件的形式存储
- /media(CentOS6):Linux系统会自动识别一些设备,例如U盘等,识别后Linux会将识别的设备挂载到这个目录下;CentOS7迁移到/run/media
- /mnt:系统提供该目录用于让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,可以进入该目录查看内容
- /opt:给主机额外安装软件所摆放的目录。默认是空的
- /var:用于存放会不断扩充的文件,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件
- /run:记录自启动以来的系统信息。可以找到有关正在运行的守护程序、登录用户等信息,让我们了解自启动以来系统资源的使用情况
2. VI/VIM编辑器
VI 是 Unix 操作系统和类 Unix 操作系统中最通用的文本编辑器。
最小系统需要安装vim:
1 | yum install vim-enhanced #亲测有用 |
VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM 与 VI 编辑器完全兼容。
vim:”编辑器之神”,效率极高
emacs:”神之编辑器”
一般模式
以 vi/vim 打开一个档案就直接进入一般模式了(这是默认的模式)。
常用语法 | 功能描述 |
---|---|
yy | 复制光标当前一行 |
y 数字 y | 复制一段(从第几行到第几行) |
p | 箭头移动到目的行粘贴 |
u | 撤销上一步 |
dd | 删除光标当前行 |
d 数字 d | 删除光标(含)后多少行 |
x | 剪切一个字母,相当于 del |
X | 剪切一个字母,相当于 Backspace |
yw | 复制一个词 |
dw | 删除一个词 |
shift+6(^) | 移动到行头 |
shift+4($) | 移动到行尾 |
1+shift+g | 移动到页头,数字 |
shift+g | 移动到页尾 |
数字+shift+g | 移动到目标行 |
编辑模式
在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容;
进入编辑模式:
按键 | 功能 |
---|---|
i | 当前光标前插入 |
a | 当前光标后 |
o | 当前光标行的下一行 |
I | 光标所在行最前 |
A | 光标所在行最后 |
O | 当前光标行的上一行 |
退出编辑模式:ESC;回到一般模式
指令模式
在一般模式当中,输入『 : / ?』3个中的任何一个按钮,就可以将光标移动到最底下那 一行。
基本语法:
命令 | 功能 |
---|---|
:w | 保存 |
:q | 退出 |
:! | 强制执行 |
/要查找的词 | n 查找下一个,N 往上查找 |
:noh | 取消高亮显示 |
:set nu | 显示行号 |
:set nonu | 关闭行号 |
:%s/old/new/g | 替换内容 /g 替换匹配到的所有内容 |
组合使用:
- :wq
- :q!
- :wq!
3. 网络配置
显示所有网络接口的配置信息:
- windows:ipconfig
- Linux:ifconfig
安装的最小系统可以使用 ip addr 查看
如果安装的Linux不能联网,需要查看windows对应的服务是否开启:
- VMware DHCP Service
- VMware NAT Service
测试主机之间网络连通性:
- ping 目的主机(测试当前服务器是否可以连接目的主机)
1 | [root@hadoop100 ~]# ping www.baidu.com |
修改IP地址:
由于动态分配ip地址在连接前还需要查询ip,所以为了方便我们可以直接修改为静态IP地址
1 | [root@hadoop100 ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 |
1 | TYPE="Ethernet" #网络类型(通常是 Ethemet) |
修改完后使用命令 service network restart 重启网络即可生效
【service 服务名 操作】是CentOS6的指令,network是CentOS6的网络服务名,CentOS7版本进行了兼容。
【systemctl 操作 服务名】CentOS7中指令,NetworkManager是CentOS7的网络服务名
NetworkManager虽然也会运行,但CentOS7中默认使用的还是network
修改主机名称:
hostname:查看当前服务器的主机名称
1 | [root@hadoop100 ~]# hostname |
如果感觉此主机名不合适,我们可以进行修改。通过编辑/etc/hostname 文件
1 | [root@hadoop100 ~]# vi /etc/hostname |
修改完成后重启生效。
不重启也能直接修改:
1 | [root@hadoop100 ~]# hostnamectl #查看主机名相关信息 |
修改映射文件:
为了方便连接,可以修改Linux和Windows的hosts文件
Linux:
1 | [root@hadoop100 ~]# vim /etc/hosts |
例:
1 | 192.168.2.100 hadoop100 |
远程登陆
方式一:
Windows和Linux都支持基于SSH协议的远程登陆方式
1 | C:\Users\16958>ssh root@hadoop100 |
此方式虽然简单,但是功能比较有限
文件上传下载:scp指令
方式二:
使用远程登录工具(基本都是基于SSH协议)
Xshell:强大的安全终端模拟软件,支持SSH1,SSH2以及Microsoft Windows平台的TELNET协议。
Linux需要启动SSHD服务,该服务会监听22号端口
远程上传下载文件需要使用配套工具:Xftp5,一个基于ftp协议的SFTP、FTP文件传输软件
4. 系统管理
计算机中,一个正在执行的程序或命令,被叫做“进程”(process)。 启动之后一直存在、常驻内存的进程,一般被称作“服务”(service)。
系统运行级别
CentOS6:
CentOS7:
运行级别简化为:
- multi-user.target 等价于原运行级别 3(多用户有网,无图形界面)
- graphical.target 等价于原运行级别 5(多用户有网,有图形界面)
进入系统管理的图形化界面:
1 | [root@hadoop100 ~]# setup |
- 上下左右键移动选择
- tab键切换选择到确定还是退出或者其他的界面
- 空格键在系统服务界面可以开启关闭服务(有*表示开启,无*表示关闭)
- enter键确认你的选择是退出还是其他选项
CentOS6
基本语法:service 服务名 start | stop | restart | status
chkconfig 设置后台服务的自启配置:
基本语法:
1 | chkconfig (功能描述:查看所有服务器自启配置) |
CentOS7(重点掌握)
systemctl 设置后台服务的自启配置:
基本语法:
指令 | 作用 |
---|---|
systemctl start 服务名 | 开启服务 |
systemctl stop 服务名 | 关闭服务 |
systemctl status 服务名 | 显示状态 |
systemctl restart 服务名 | 重启服务 |
systemctl enable 服务名 | 开机启动服务 |
systemctl disable 服务名 | 禁止开机启动 |
systemctl list-units | 查看系统中所有正在运行的服务 |
systemctl list-unit-files | 查看系统中所有服务的开机启动状态 |
systemctl list-dependencies 服务名 | 查看系统中服务的依赖关系 |
systemctl mask 服务名 | 冻结服务 |
systemctl unmask 服务名 | 解冻服务 |
systemctl set-default multi-user.target | 开机时不启动图形界面 |
systemctl set-default graphical.target | 开机时启动图形界面 |
状态 | 含义 |
---|---|
active(running) | 表示程序正在执行 |
atcive(exited) | 执行一次就正常退出的服务,不在系统中执行任何程序 |
active(waiting) | 正在执行中,处于阻塞状态,需要等待其他程序执行完才能执行 |
inactive (dead) | 未启动状态 |
vendor preset后面的表示服务默认的启动状态
vendor preset前面的表示服务当前的启动状态,有以下几种情况:
启动状态 | 含义 |
---|---|
inactive | 服务关闭 |
disable | 服务开机不启动 |
enabled | 服务开机启动 |
static | 服务开机启动项被管理 |
failed | 服务配置错误 |
修改防火墙:
CentOS6及以前的版本防火墙服务的名称为 iptables
CentOS7改名为 firewalld
1 | [root@hadoop100 ~]# systemctl stop firewalld #临时关闭防火墙 |
关机重启命令
Linux 大多用在服务器上,很少遇到关机的操作。
命令 | 功能 |
---|---|
sync | 将数据由内存同步到硬盘中 |
halt | 停机但不断电 |
poweroff | 断电关机 |
reboot | 重启 |
1 | shutdown [选项] 时间 |
选项 | 功能 |
---|---|
-H | 相当于–halt,停机 |
、-h、-P | 断电关机,等同于poweroff |
-r | 重启 |
-c | 取消操作 |
now | 立刻 |
shutdown默认是一分钟后执行操作,可以在选项后添加时间决定什么时间关机或多少分钟后关机
5. 常用基本命令
Shell 可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面。我们可以通过终端控制台来输入命令,由 shell 进行解释并最终交给内核执行。
帮助文档命令
- man
语法:
1 | man [命令或配置文件] (功能描述:获得帮助信息) |
帮助文档显示说明:
信息 | 功能 |
---|---|
NAME | 命令的名称和单行描述 |
SYNOPSIS | 怎样使用命令 |
DESCRIPTION | 命令功能的深入讨论 |
EXAMPLES | 怎样使用命令的例子 |
SEE ALSO | 相关主题(通常是手册页) |
一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着 shell 一起加载,常驻系统内存中。这部分命令被称为“内置(built-in)命令”;相应的其它命令 被称为“外部命令”。
- help
man命令查找内置命令会直接解释shell,可以使用 help 获取shell内置命令的帮助信息:
1 | help 命令(功能描述:获得 shell 内置命令的帮助信息) |
判断是否是内置命令:
1 | [root@hadoop100 ~]# type cd |
常用快捷键
常用快捷键 | 功能 |
---|---|
ctrl + c | 停止进程 |
ctrl+shift+c | 复制 |
ctrl+shift+v | 粘贴 |
ctrl+l | 清屏,等同于 clear;彻底清屏是:reset |
tab 键 | 提示(更重要的是可以防止敲错) |
上下键 | 查找执行过的命令 |
文件目录命令
- pwd:print working directory;打印工作目录
显示当前工作目录的绝对路径:
1 | [root@hadoop100 ~]# pwd |
- ls:list;列出目录内容
1 | ls [选项] [目录或文件] |
常用选项 | 功能 |
---|---|
-a | 显示所有文件,连同隐藏档( 开头为 . 的文件) 一起列出 |
-l | 长数据串列出,包含文件的属性与权限等等数据;等价于“ll” |
每行列出的信息依次是: 文件类型与权限;链接数;文件属主;文件属组;文件大小(用byte表示);建立或最近修改的时间;文件名
- cd:Change Directory;切换路径
1 | cd [参数] |
参数 | 功能 |
---|---|
cd 绝对路径 | 切换路径 |
cd 相对路径 | 相对路径 |
cd ~或者 cd | 回到家目录 |
cd - | 回到上一次所在目录 |
cd .. | 回到当前目录的上一级目录 |
cd -P | 跳转到实际物理路径,而非快捷方式路径 |
- mkdir:Make directory;创建新目录
1 | mkdir [选项] 要创建的目录 |
选项 | 功能 |
---|---|
-p | 一次创建多层目录 |
1 | [root@hadoop100 ~]# mkdir a c #创建a和c目录 |
- rmdir:Remove directory;删除空目录
1 | [root@hadoop100 ~]# rmdir c #创建c目录 |
- touch:创建空文件
1 | [root@hadoop100 ~]# touch a #不带后缀名默认为文本文件 |
vim其实也可以创建文件,退出时需要保存
- cp:复制文件或目录
1 | cp [选项] source dest (功能描述:复制source文件到dest) |
选项 | 功能 |
---|---|
-r | 递归复制整个文件夹 |
cp 是 cp -i 的别名
强制覆盖不提示的方法:\cp
- rm:删除文件或目录
1 | rm [选项] deleteFile (功能描述:递归删除目录中所有内容) |
选项 | 功能 |
---|---|
-r | 递归删除目录中所有内容 |
-f | 强制执行删除操作,而不提示用于进行确认 |
-v | 显示指令的详细执行过程 |
1 | [root@hadoop100 ~]# rm -rf /* #删除根目录下所有文件(梗) |
- mv:移动文件与目录
1 | mv oldNameFile newNameFile (功能描述:重命名) |
- cat:查看文件内容
查看文件内容,从第一行开始显示。一般用于查看简短文本
1 | cat [选项] 要查看的文件 |
选项 | 功能描述 |
---|---|
-n | 显示所有行的行号,包括空行。 |
1 | [root@hadoop100 ~]# cat -n hello #查看文件内容并显示行号 |
- more:文件内容分屏查看器
more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键
1 | more 要查看的文件 |
操作 | 功能说明 |
---|---|
空白键 (space) | 向下翻一页; |
Enter | 向下翻『一行』; |
q | 立刻离开 more ,不再显示该文件内容 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
pageDown 和 pageUp 也有效
- less:分屏显示文件内容
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
1 | less 要查看的文件 |
操作 | 功能说明 |
---|---|
空白键 | 向下翻动一页; |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页; |
/字串 | 向下搜寻『字串』的功能;n:向下查找;N:向上查找; |
?字串 | 向上搜寻『字串』的功能;n:向上查找;N:向下查找; |
q | 离开 less 这个程序; |
用SecureCRT时[pagedown]和[pageup]可能会出现无法识别的问题。
- echo:输出内容到控制台
1 | echo [选项] [输出内容] |
-e:支持反斜线控制的字符转换
控制字符 | 作用 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是 Tab 键 |
- head:显示文件头部内
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前 10 行内容。
1 | head 文件 (功能描述:查看文件头10行内容) |
- tail:输出文件尾部内容
tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
1 | tail 文件 (功能描述:查看文件尾部10行内容) |
使用 tail -f 指令时,可以显示追加的数据,如果复写会报错
注意:使用vim修改的文件不能继续追踪(vim修改后,文件的索引号会变)
ctrl+s:暂停;ctrl+q:继续;ctrl+c:退出
- >:输出重定向和 >>:追加
1 | ls -l > 文件 (功能描述:列表的内容写入文件中(覆盖写)) |
Linux中 < 作为输入重定向
17. ln:软链接
软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放 了链接其他文件的路径。
1 | ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接) |
注意:删除软链接使用 rm -rf 软链接名,而不是 rm -rf 软链接名/
如果使用 rm -rf 软链接名/ 删除,会把软链接对应的真实目录下内容删掉
拓展:
硬链接:ln [原文件] [硬链接名]
创建的硬链接名与源文件为同一个inode(文件的索引号),所以源文件删除对硬链接没有影响;不能链接目录使用较少。
软链接:b -> a -> inode;硬链接:a -> idode;b -> idode;
软链接类似快捷键;硬链接类似复制
- history:查看已经执行过历史命令
1 | [root@hadoop100 ~]# history |
时间日期命令
- date
1 | date [OPTION]... [+FORMAT] |
参数 | 功能 |
---|---|
<+日期时间格式> | 指定显示时使用的日期时间格式 |
1 | [root@hadoop100 ~]# date (功能描述:显示当前时间) |
选项 | 功能 |
---|---|
-d<时间字符串> | 显示指定的“时间字符串”表示的时间,而非当前时间 |
-s<日期时间> | 设置系统日期时间 |
1 | date -d '1 days ago' (功能描述:显示前一天时间) |
1 | date -s 字符串时间 |
- cal:查看日历
1 | cal [选项] (功能描述:不加选项,显示本月日历) |
用户管理命令
- useradd:添加新用
1 | useradd 用户名 (功能描述:添加新用户) |
1 | [root@hadoop100 ~]# useradd John |
- passwd:设置用户密码
1 | passwd 用户名 (功能描述:设置用户密码) |
当密码过于简单或不满8位,会有提示,再次输入相同密码即可
- id:查看用户是否存在
1 | id 用户名 |
- 查看创建了哪些用户
1 | cat /etc/passwd |
当然也可以使用less查看,Linux系统中有很多系统用户(伪用户)
- su:swith user;切换用户
1 | su 用户名称 (功能描述:切换用户,只能获得用户的执行权限,不能获得环境变量) |
用户跳转是会话的嵌套,可以使用exit回到上一级用户
who am i:显示会话最外层用户名
whoami:显示当前会话用户名
- sudo:设置普通用户具有 root 权
使用sudo指令必修修改sudoers配置文件
1 | [root@hadoop100 ~]# vim /etc/sudoers |
1 | ## Allow root to run any commands anywhere |
或者配置成采用 sudo 命令时,不需要输入密码:
1 | ## Allow root to run any commands anywhere |
修改完毕后登录 John 帐号,可以用命令 sudo 获得 root 权限进行操作
1 | [John@hadoop100 root]# sudo ls |
- userdel:删除用户
1 | userdel 用户名 (功能描述:删除用户但保存用户主目录) |
-r 删除用户的同时,删除与用户相关的所有文件。
- usermod:修改用户
1 | usermod -g 用户组 用户名 |
-g 修改用户的初始登录组,给定的组必须存在。默认组 id 是 1。
用户组管理命令
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同 Linux 系统对用户组的规定有所不同。
Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group文件的更新。
- groupadd:新增组
1 | groupadd 组名 |
- groupdel:删除
1 | groupdel 组名 |
- groupmod:修改组
1 | groupmod -n 新组名 老组名 |
-n<新组名> 指定工作组的新组名
- 查看有哪些组
1 | cat /etc/group |
wheel:管理员组(一个用户可以有多个组)
1 | ## Allows people in group wheel to run all commands |
文件权限命令
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属 的用户和组。
首位0表示类型:
- - 代表文件
- d 代表目录
- l 链接文档(link file)
- c 代表二进制设备(鼠标等)
- b 代表块设备(硬盘等)
第1-3位确定属主(该文件的所有者)拥有该文件的权限。—User
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,—Group
第7-9位确定其他用户拥有该文件的权限 —Other
rwx 作用文件和目录:
文件:
- [ r ]代表可读(read): 可以读取,查看
- [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
- [ x ]代表可执行(execute):可以被系统执行
目录:
- [ r ]代表可读(read): 可以读取,ls查看目录内容
- [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
- [ x ]代表可执行(execute):可以进入该目录
每行列出的信息依次是: 文件类型与权限;链接数;文件属主;文件属组;文件大小(用byte表示);建立或最近修改的时间;文件名
如果查看到是文件:链接数指的是硬链接个数。
如果查看的是文件夹:链接数指的是子文件夹个数。
Linux系统默认使用的是UGO(User、Group、Other)权限控制策略,是一种粗粒度的权限管理策略。
- chmod:改变权限
方式一:
1 | chmod [{ugoa}{+-=}{rwx}] 文件或目录 |
u:所有者;g:所有组;o:其他人;a:所有人(u、g、o 的总和)
+:添加权限;-:移除权限
示例:
1 | [root@hadoop100 ~]# chmod a=rwx hello |
方式二:
1 | chmod [mode=421] [文件或目录] |
r=4 w=2 x=1;以二进制设定权限
示例:
1 | [root@hadoop100 ~]# chmod 644 hello #即 rw-r--r--(110100100) |
- chown:改变所有者
1 | chown [选项] [最终用户] (功能描述:改变文件或者目录的所有者) |
-R:递归操作
1 | #递归改变文件所有者和所有组 |
- chgrp:改变所属组
1 | chgrp [最终用户组] [文件或目录] (功能描述:改变文件或者目录的所属组) |
搜索查找命令
- find:查找文件或者目录
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。
1 | find [搜索范围] [选项] |
常用选项 | 功能 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件 |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小> | 按照指定的文件大小查找文件,单位为: b —— 块(512 字节);c —— 字节;w —— 字(2 字节);k —— 千字节;M —— 兆字节;G —— 吉字节 |
1 | #查找当前目录下以txt结尾的文件 |
- locate:快速定位文件路径
locate 指令利用事先建立在系统中含有所有文件名称及路径的 locate 数据库实现快速定位文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻
1 | updatedb #更新数据库 |
- 查询命令所在的路径
1 | which [命令] |
- grep:过滤查找及”|”管道符
1 | grep 选项 查找内容 源文件 |
-n:显示匹配行及行号。
-i:忽略大小写。
-m:只显示查询结果的第一行。
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
1 | #查找cfg后缀的文件并列出 |
拓展:wc:统计数据
1 | [root@hadoop100 ~]# ls | wc |
统计的三个数据分别是行数,数据个数(空格间断),字节大小
压缩解压命令
- gzip/gunzip:压缩/解压
1 | gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件) |
只能压缩文件不能压缩目录;不保留原来的文件;同时多个文件会产生多个压缩包
- zip/unzip:压缩/解压缩
1 | zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令) |
zip 选项:-r;压缩目录
unzip 选项:-d<目录>;指定解压后文件的存放目录
zip 压缩命令在windows/linux都通用,可以压缩目录且保留源文件。
- tar:打包
1 | tar [选项] XXX.tar.gz 将要打包进去的内容 (功能描述:打包目录,压缩后的文件格式为.tar.gz) |
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
-C | 解压到指定目录 |
1 | #压缩打包文件 |
解压缩的目的目录必须存在才能解压成功
磁盘查看和分区命令
安装tree工具;用于查看嵌套的文件目录
1 | [root@hadoop100 ~]# yum install tree |
- du:查看文件和目录占用的磁盘空间
du:disk usage;磁盘占用情况
1 | du 目录/文件 (功能描述:显示目录下每个子目录的磁盘使用情况) |
选项 | 功能 |
---|---|
-h | 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; |
-a | 不仅查看子目录大小,还要包括文件 |
-c | 显示所有的文件和子目录大小后,显示总和 |
-s | 只显示总和 |
–max-depth=n | 指定统计子目录的深度为第 n 层 |
1 | [root@hadoop100 ~]# du -sh #查看目录占用的磁盘空间大小 |
- df:查看磁盘空间使用情况
df:disk free;空余磁盘
其中tmpfs为分配的内存;/dev/shm:shared memory,共享内存;devtmpfs在Linux内核一开始启动时创建dev目录,来管理所有设备
拓展:
free:查看内存使用情况
- lsblk:查看设备挂载情况
选项:-f;查看详细的设备挂载情况,显示文件系统信息
sr0 是安装系统时的使用的光驱镜像文件
- mount/umount:挂载/卸载
1 | mount [-t vfstype] [-o options] device dir (功能描述:挂载设备) |
参数 | 功能 |
---|---|
-t vfstype | 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有: 光盘或光盘镜像:iso9660 DOS fat16 文件系统:msdos Windows 9x fat32 文件系统:vfat Windows NT ntfs 文件系统:ntfs Mount Windows 文件网络共享:smbfs UNIX(LINUX) 文件网络共享:nfs |
-o options | 主要用来描述设备或档案的挂接方式。常用的参数有: loop:用来把一个文件当成硬盘分区挂接上系统 ro:采用只读方式挂接设备 rw:采用读写方式挂接设备 iocharset:指定访问文件系统所用字符集 |
device | 要挂接(mount)的设备 |
dir | 设备在系统上的挂接点(mount point) |
在VMware虚拟机的设置中打开光盘驱动器的连接
可以看到自动挂载的挂载点;我们可以将它卸载后进行手动挂载
设置开机自动挂载:
1 | vim /etc/fstab |
由左到右分别是:设备的uuid或设备名;挂载点;文件系统的类型;dump选项(是否定期备份);系统检查的优先级(fsck:文件系统的检查,1最高)
- fdisk:分区
1 | fdisk -l (功能描述:显示所有硬盘的分区列表) |
该命令必须在 root 用户下才能使用
使用fdisk命令分区后,还需要对新加硬盘进行格式化(lsblk-f命令可以看到新加硬盘没有uuid和挂载点)分配uuid
格式化命令:
1 | mkfs -t xfs [设备名称] |
mkfs:创建文件系统;-t:指定当前文件系统类型
使用mount命令将新加硬盘挂载在需要使用的目录
进程管理命令
- ps:查看当前系统进程状态
ps:process status 进程状态
选项 | 功能 |
---|---|
a | 列出带有终端的所有用户的进程 |
x | 列出当前用户的所有进程,包括没有终端的进程 |
u | 面向用户友好的显示风格 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
前三种是BSD风格;后三种是标准的UNIX风格
常用语法:
1 | ps aux |
1 | ps -ef |
想查看进程的 CPU 占用率和内存占用率,可以使用 aux;想查看进程的父进程 ID 可以使用 -ef;
- kill:终止进程
1 | kill [选项] 进程号 (功能描述:通过进程号杀死进程) |
选项:-9;表示强迫进程立即停止
- pstree:查看进程树
1 | pstree [选项] |
选项 | 功能 |
---|---|
-p | 显示进程的 PID |
-u | 显示进程的所属用户 |
- top:实时监控系统进程状态
1 | top [选项] |
选项 | 功能 |
---|---|
-d 秒数 | 指定 top 命令每隔几秒更新。默认是 3 秒 |
-i | 使 top 不显示任何闲置或者僵死进程。 |
-p | 通过指定监控进程 ID 来仅仅监控某个进程的状 |
操作 | 功能 |
---|---|
P | 以 CPU 使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以 PID 排序 |
q | 退出 top |
1 | 第一行信息为任务队列信息:系统当前时间; |
在top界面按 u 可以查看指定用户进程;按 k 可以kill指定进程
- netstat:显示网络状态和端口占用信息
1 | netstat -anp | grep 进程号 (功能描述:查看该进程网络信息) |
选项 | 功能 |
---|---|
-a | 显示所有正在监听(listen)和未监听的套接字(socket) |
-n | 拒绝显示别名,能显示数字的全部转化成数字 |
-l | 仅列出在监听的服务状态 |
-p | 表示显示哪个进程在调用 |
1 | [root@hadoop100 ~]# netstat -anp | less |
Proto:网络协议;
Recv-Q:用户程序接收但还未拷贝出来的字节数;
Send-Q:已发送但远程主机还未确认收到的字节数;
Local Address:本地地址;(0.0.0.0表示本本地的所有地址)
Foreign Address:远程地址;(Socket形式:[ip:端口号])
State:网络连接状态;
PID/Program name:进程id/进程名字
系统定时任务
系统定时任务的命令需要启用守护进程crond:
1 | systemctl status crond |
- crontab:定时任务设置
1 | crontab [选项] |
选项 | 功能 |
---|---|
-e | 编辑 crontab 定时任务 |
-l | 查询 crontab 任务 |
-r | 删除当前用户所有的 crontab 任务 |
1 | [root@hadoop100 ~]# crontab -e |
进入crontab编辑界面,会打开vim编辑工作;
编写格式:* * * * * 命令
项目 | 含义 | 范围 |
---|---|---|
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7 ( 0 和 7 都 代 表 星 期 日) |
特殊符号:
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个“*”就代表一小时中每分钟 都执行一次的意思。 |
, | 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表 在每天的 8 点 0 分,12 点 0 分,16 点 0 |
- | 代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在 周一到周六的凌晨 5 点 0 分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代 表每隔 10 分钟就执行一遍命令 |
1 | [root@hadoop100 ~]# crontab -e |
6. 软件包管理
RPM
RPM(RedHat Package Manager),RedHat软件包管理工具,类似windows里面的setup.exe,是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。
RPM包的名称格式:Apache-1.3.23-11.i386.rpm
- “apache” 软件名称
- “1.3.23-11”软件的版本号,主版本和此版本
- “i386”是软件所运行的硬件平台,Intel 32位处理器的统称
- “rpm”文件扩展名,代表RPM包
- RPM:查询命令
1 | rpm -qa (功能描述:查询所安装的所有 rpm 软件包) |
由于软件包比较多,一般都会采取过滤。rpm -qa | grep 软件包
- RPM:卸载命令
1 | rpm -e 软件包 (卸载软件包) |
卸载软件时不检查依赖可能会导致那些使用该软件包的软件在此之后不能正常工作。谨慎使用
- RPM:安装命令
1 | rpm -ivh RPM包全名 |
选项 | 功能 |
---|---|
-i | install,安装 |
-v | –verbose,显示详细信息 |
-h | –hash,进度条 |
–nodeps | 安装前不检查依赖 |
YUM
YUM(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装
YUM类似于Java开发中的maven工具,可以从镜像网站下载应用程序并安装
1 | yum [选项] [参数] |
选项:-y;对所有提问都回答“yes”
参数 | 功能 |
---|---|
install | 安装 rpm 软件包 |
update | 更新 rpm 软件包 |
check-update | 检查是否有可用的更新 rpm 软件包 |
remove | 删除指定的 rpm 软件包 |
list | 显示软件包信息 |
clean | 清理 yum 过期的缓存 |
deplist | 显示 yum 软件包的所有依赖关系 |
search | 查找命令所在的包 |
修改网络 YUM 源:
其实yum会根据所在地自动选择镜像网站
1 | #1.安装 wget, wget 用来从指定的 URL 下载文件 |