1. Linux目录结构
- Linux的文件系统时采用层级式的树状结构目录,在此结构中最上层的时根目录"/",然后在次目录下再创建其他的目录。
- 在Linux的世界中,一切都是文件
Linux中有两个特殊的目录,一个用户所在的工作目录,也叫做当前目录,可以使用一个.(或者./)来表示;另一个是当前目录的上一级目录,也叫做父目录,可以使用两个点..(或者../)来表示。如果一个目录或者文件夹以.开始,表示这个目录或者文件是一个隐藏目录或者文件夹,即以默认的方式查找时,不显示改目录或文件夹。
2. vi和vim的操作
- 正常模式
以vim打开一个文档就直接进入了一般模式了,在这个模式中,可以使用上下左右按键来移动光标,可以使用删除字符或者删除整行来处理档案内容,也可以使用复制粘贴来处理。
插入模式
按下i,I,o,O,a,A,r,R等任何一个字母之后才会进入到编辑模式,一般来说按i即可。
命令行模式
输入esc,再输入:,在这个模式中,可以提供相关的指令,完成读取,存盘替换,离开vim,显示行号等的动作是在这个模式中完成的。
3. 用户登录和注销
- 登陆时尽量少用root账号登录,因为它是系统管理员,最大的权限,避免操作失误,可以利用普通用户登录,登陆以后再用"su - 用户名"命令来切换成系统管理员身份。
- 在提示符下输入logout即可注销账户
- logout注销指令在图形运行级别无效,在运行级别3下有效
4. Linux用户管理
Linux是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。添加用户的基本语法:useradd 用户名。
假如添加用户milan,默认该用户的家目录在/home/milan下。当创建用户成功之后,会自动的创建和用户名同名的家目录,也可以通过useradd -d指定目录,新的用户名,给新创建的用户指定家目录。
指定/修改密码:基本语法:passwd 用户名
删除用户:基本语法:userdel 用户名
eg:删除用milan但是要保留家目录:userdel milan(一般都会保留家目录)
删除用户以及用户主目录,比如tom,userdel -r tom
查询用户信息指令:
基本语法:id 用户名
切换用户
可以使用 su - 切换用户名来切换用户,从权限高的用户切换到权限低的用户,不需要输入密码,反之则需要。当需要返回到原来的用户时,使用exit/logout指令。
用户组
系统可以对有共性/权限的多个用户进行统一的管理
新增组:groupadd 组名
删除组:groupdel 组名
增加用户时直接加上组:useradd -g 用户组 用户名
用户和组相关文件
/etc/passwd文件:用户的配置文件,记录用户的各种信息。每行的含义:用户名:口令:用户标识:注释性描述:主目录:登录Shell
/etc/shadow文件:口令的配置文件,每行的意义:登录名:加密口令:最后一次修改时间:最小的时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件:组的配置文件,记录Linux包含的组的信息,每行含义:组名:口令:表示符号:组内用户列表
5. 指定用户级别
运行级别说明:
0:关机
1:单用户[找回丢失密码]
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用的运行级别是3和5,也可以指定默认的运行级别
找回root密码:
6. 文件目录指令
pwd指令:显示当前工作目录的绝对路径
ls指令:常用选项:-a:显示当前目录所有的文件和目录,包括隐藏的;-l:以列表的方式显示信息
cd指令:cd~ 回到自己的家目录,如果是root,cd~就回到,cd ..回到当前目录的上一级目录
date指令:显示当前日期
date:显示当前日期
date + %Y:显示当前年份
date + %m:显示当前月份
date + %d:显示当前是哪一天
7. 查找指令
find指令从指定目录向下递归的白能力各个子目录,将满足条件的文件活目录显示在终端
基本语法: find [搜索范围] [选项]
选项说明:1. -name<查询方式>:按照指定的文件名查找模式查找文件查询方式>
-user<用户名>:查找属于指定用户名所有文件用户名>
-size<文件大小>:查找指定文件大小的文件文件大小>
find / -size +200M(查找整个Linux系统下大于200M的文件)
locate指令:可以快速定位文件路径,利用事先建立的系统中的所有文件名称及路径的locate数据库实现快速定位文件路径,locate指令无需遍历整个文件夹,查询速度较快,为了保证查询结果的准确度,管理员必须定期更新locate时刻。
语法:locate 搜索文件
grep指令和管道符号:
grep过滤查找,管道符,"|",表示将前一个命令的处理结果输出传递给后面的命令处理结果输出传递给后面的命令处理。
grep [选项] 查找内容 源文件
常用选项:-n:显示匹配行及行号,-i:忽略字母大小写
8. 压缩和解压
gzip/gunzip
gzip用于压缩文件,压缩为.gz文件格式
gunzip文件.gz,解压缩文件
zip/unzip指令
zip [选项] xxx.zip 将要压缩的内容(压缩文件和目录的命令)
unzip [选项] xxx.zip(解压缩文件)
常用的选项:
-r:递归压缩,即压缩目录
-d <目录>:指定解压后文件的存放目录目录>
tar指令:打包指令,最后打包的文件是.tar.gz的文件
tar [选项] xxx.tar.gz(打包目录)
选项说明:-c:产生.tar打包文件
-v:显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩
-x:解包.tar文件
tar -zcvf pc.tar.gz /root/pig.txt /root/cat.txt
tar -zxvf pc.tar.gz
9. Linux组管理
在Linux中的每个用户必须属于一个组,不能独立于组外,在Linux中每个文件有所有者、所在组、其他组的概念
查看文件所有者:ls -ahl
修改文件所有者:chown 用户名 文件名
组的创建:groupadd 组名
修改文件所在的组:chgrp 组名 文件名
改变用户所在组:usermod -g 组名 用户名
改变用户登录的初始目录(用户需要有进入到新目录的权限):usermod -d 目录名 用户名
10. Linux权限
使用ll指令如下:
0-9位说明:
- 第0位确定文件类型(d,-,l,c,b),l是链接相当于windows的快捷方式,d是目录相当于Windows的文件夹,c是字符设备文件相当于鼠标键盘,b是块设备比如硬盘。
- 第1-3位确定所有者(该文件的所有者)拥有该文件的权限---user
- 第4-6位确定所属组(同用户组的)拥有该文件的权限 ---group
- 第7-9位确定其他用户拥有该文件的权限 ---other
rwx权限:
- 作用到文件
- r表示可读:可以读取,查看
- w表示可写:可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才可以删除
- x表示可执行文件
- 作用到目录:
- r代表可读:可以读取,ls查看目录内容
- w代表可写:可以修改,对目录内创建+删除+重命名目录
- x代表可执行:可以进入该目录
更改权限:
通过chmod指令,可以修改文件或者目录的权限。
方式1:+,-,=变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
- chmod u=rwx,g=rx,o=x 文件/目录名
- chmod o+w 文件/目录名
- chmod a-x 文件/目录名
方法2:通过数字变更权限
r=4 w=2,x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件木伦明
修改文件所有者:chown
chown newowner 文件/目录 (改变所有者)
chown newowner:newgroup 文件/目录(改变所有者和所在组)
-R 如果是目录,则使其下所有子文件或目录递归无效
修改文件/目录所在组:
chgrp newgroup 文件/目录(改变所在组)
10. Linux crond任务调度
crontab 进行定时任务的调度
任务调度是指系统在某个时间执行的特定命令或程序。
任务调度的分类:(1)系统工作:有些重要的工作必须周而复始的执行,如病毒扫描等;(2)个体用户工作:个别用户可能希望执行某些程序,比如对MySQL的备份。
基本语法:crontab [选项]
常用选项:-e:编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
cront相关指令:
crontab -r:终止任务调度
crontab -l:列出当前有哪些任务调度
service crond restart [重启任务调度
Linux写脚本的步骤:
at定时任务:
- at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
- 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
- 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
- ps -ef | grep atd:查看是否有atd指令在启动执行
at命令格式:(向队列中添加一个指令)
at [选项] [时间]
ctrl+D 结束执行at命令的输入
11. Linux磁盘分区,挂载
- Linux无论有几个分区,分给哪一个目录来使用,归根结底就只有一个目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
- Linux采用了一种叫做“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得。
查看所有的设备的挂载情况:lsblk 或者 lsblk -f
Linux增加一块硬盘:如何在Linux系统上添加新的磁盘 | 《Linux就该这么学》 (linuxprobe.com)
查询系统整体磁盘使用情况:df -h
du -h:(查询指定目录的磁盘占用情况,默认为当前目录)
-s:指定目录占用大小汇总
-h:带计量单位
--max-depth=1 子目录深度
-c:列出明细的同时,增加汇总值
磁盘情况工作实用指令:
统计/opt文件夹下文件的个数
ls -l /opt | grep "^-" wc -l
统计/opt文件夹下目录的个数
ls -s /opt | grep "^d" | wc -l
统计/opt文件夹下文件的个数,包含子文件夹里的
ls -lR /opt | grep "^-" | wc -l
统计/opt文件夹下目录的个数,包括子文件夹里的
ls -lR /opt | grep "^d" | wc -l
以树状显示目录结构
tree /opt/
12. Linux网络
Linux网络环境配置:(指定ip)
直接修改配置文件来指定IP,并可以连接到外网,编辑vim /etc/sysconfig/network-scripts/ifcfg-ens33
重启网络服务或者重启系统生效:service network restart
设置主机名:为了记忆方便,可以给Linux系统设置主机名,也可以根据需要修改主机名。指令Hostname:查看主机名,修改文件在/etc/hostname 指定。修改后,重启生效。
设置hosts映射:(1)Windows下,在C:(2)Linux下:在/etc/hosts文件指定
13. 进程管理
Linux中每个执行的程序都称为一个进程,每一个进程都分配一个ID号,每个进程都可能以两种方式存在,前台和后台,前台进程就是用户目前的屏幕上可以进行的操作;后台就是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。一般系统的服务都是以后台进程的方式进行,而且通常会常驻在系统中,直到关机才结束。
ps命令是用来查看目前系统中,有哪些正在执行,以及他们执行的情况,可以不加任何参数。
显示的情况如下:
ps -aux | grep sshd:显示当前是否有sshd服务
终止进程
kill [选项] 进程号 (通过进程号杀死,终止进程)
killall 进程名称 (通过进程名杀死进程,也支持通配符,在系统因为负载过大而变得很慢时候很有用)
常用选项:-9:表示强迫进程立即停止
查看进程树:
pstree [选项]
-p :显示进程的PID
-u : 显示进程的所属用户
chkconfig指令:
通过chkconfig指令可以给服务的各个运行级别设置自启动/自关闭
chkconfig指令管理的服务在/etc/init.d查看
在centos7之后,很多服务使用systemctl管理
systemctl管理指令:
动态监控进程:
top与ps指令很相似,他们都是用来显示正在执行的进程,top和ps最大的不同之处子在于top执行一段时间可以更新正在运行的进程。基本语法:top [选项]
监控网络状态:netstat
基本语法:netstat [选项]
选项说明:-an 按一定顺序排列输出,-p 显示哪个进程在调用
14. rpm与yum
rpm用于互联网下载包的打包及安装工具,它包含在某些Linux的分发版中,它生成具有.RPM扩展名的文件,RPM是RedHat Package Manager的缩写,类似windows的setup.exe,这一文件格式是通用的。
安装rpm包:
基本语法:rpm -ivh RPM包全路径名称
参数说明:i安装,v提示,h进度条
16. shell编程
shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动、挂起、停止甚至是编写一些程序。
脚本的格式要求:脚本以#!/bin/bash开头,脚本需要有可执行的权限。
脚本的常用执行方式:1.(输入脚本的绝对路径或相对路径)2.不用赋予脚本+x权限,直接执行即可(sh hello.sh)
shell变量介绍:
Linux shell中的变量分为系统变量和用户自定义变量,系统变量有$HOME这些,显示当前shell中的所有的变量的指令为set。
shell变量的定义:
基本语法:1.定义变量:变量名=值,2.撤销变量:unset 变量,3.声明静态变量:readonly变量(不能用unset)
shell定义变量的规则:
1.变量名称可以由字母,数字和下划线组成,但是不能以数字开头
2.等号两侧不能有空格
3.变量名称一般习惯为大写,变量等号两侧不能加空格
4.A='date'反引号,运行里面的命令,并把结果返回给变量A,A=$(date)等价于反引号
设置环境变量:
基本语法:1. export 变量名=变量值(将shell变量输出为环境变量)2.source 配置文件(让修改后的配置信息立即生效)3.echo $变量名(查询环境变量的值)
位置参数变量:
当我们执行一个shell脚本的时候,如果希望获取到命令行的参数信息,就可以使用到位置参数变量,比如:./myshell.sh 100 200就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息。
基本语法:
- $n(n为数字,0代表命令本身,1-9代表第一个到第九个参数,10及以上的参数需要用花括号包含起来。
- $*(代表命令行中的所有的参数,把所有的参数当作一个整体)
- $@(也代表命令行中的所有的参数,不过把每个参数区分对待)
- $#(代表命令行中所有的参数的个数)
read读取控制台输入:
基本语法:read(选项)(参数)
选项:-p:指定读取值时的提示符
-t:指定读取值时等待的时间(秒),没有输入则不等待
参数:变量,指定读取值的变量
Linux的系统函数
17. 日志管理
日志文件是重要的系统信息文件,其中记录了很多的重要的系统事件,包括用户的登录信息,系统的启动信息,系统的安全信息等。
日志对于安全来说也很重要,记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者收到攻击时攻击者留下的痕迹。
日志管理服务
查看内存日志:
18. 备份与恢复
Linux的备份和恢复有两种方式:
- 把需要的文件或者分区利用TAR打包就行,下次需要恢复的时候,再解压覆盖即可
- 使用dump和restore命令