【小白入门 通俗易懂】2021韩顺平 一周学会Linux

目录结构
/: 表示根目录,根目录下有一些固定到目录结构
/bin: 存放最常用的指令
/sbin: 存放系统管理员的使用的系统管理程序
/home: 存放普通用户的主目录
/root: 该目录为系统管理员,超级权限者的用户目录
/lib: 系统开机所需的最基本的动态链接基本库
/lost+found: 当系统非法关机后,这里就存放了一些文件
/etc: 系统管理所需要的配置文件和子目录
/usr: 用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
/boot: 存放linux启动的相关文件
/proc:这个目录是一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息
/srv service缩写,存放一些服务启动之后需要提取的数据
/sys 这是linux2.6内核的一个很大变化,该目录安装了2.6内核中新出现的一个文件系统sysfs
/tmp:存放临时文件
/dev:类似于windows的设备管理器,把所有硬件以文件形式存储
/media:linux系统会自动识别一些设备,例如U盘,光驱等,linux会把识别的设备挂载到这个目录下
/mnt:锡通提供该目录是为了临时挂在别的文件系统的,我们可以将外部储存挂载到/mnt/上
/opt:这个是给主机额外安装软件所存放的目录。
/usr/local:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序
/var:存放不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件
/selinux:SELinux是一种安全子系统,他能控制程序只访问特定的文件,有三种工作模式
liunx远程登录-Xshell
linux命令 ifconfig 可以查看liunx的ip地址
命令ping (ip) 可以测试本机和ip是否网络通畅
文件上传下载-xftp
vi和vim(据说是人类史上最好的文本编辑器)
命令:vim 文件名
进入正常模式:只能删除
输入i 进入插入模式,也就是编辑模式
输入esc退出,再输入:(冒号)或者/(斜杠)进入命令行模式,这个模式下可以提供相关指令,完成读取,存盘,替换,离开vim,显示动作
eg: :wq(保存退出) ,:q(退出),:q!(强制退出,不保存)
vim常用快捷键:
拷贝当前行yy;拷贝当前行向下n行,nyy;
粘贴:p;删除当前行:dd;
删除当前行向下n行,ndd;
定位到最行末G;定位到最行首gg;
撤销动作u;
定位到n行 n shift + g;
ps:(以上快捷键都是在正常模式下使用)
在文件中查找某个单词 /关键字,回车查找,输入n就是查找下一个;
设置文件的行号,取消文件的行号 :set nu 和
:set nonu;
关机&重启命令
shutdown -h now 立刻进行关机
shutdown -h 1 一分钟后关机
shutdown -r now 现在重新启动计算机
halt 关机,作用与上面一样
reboot 现在重新启动计算机
sync 把内存的数据同步到磁盘
ps(不管是重启系统还是关闭系统,首先要运行sync,把内存中的数据写入磁盘)
用户登录注销
登录时尽量用普通用户登录,登录后用“su - 用户名” 命令切换成系统管理员
在提示符下输入logout即可注销用户(ps:在图形运行级别下无效,在运行级别3下有效)
用户管理
添加用户:useradd 用户名
默认家目录在/home/用户名
useradd -d 指定目录 新的用户名
可以指定用户目录
修改密码:passwd 用户名
pwd 显示当前用户在哪一个目录下
删除用户: userdel 用户名(不删除家目录)
userdel -r 用户名(删除家目录)
查询用户指令:id 用户名
切换用户:su - 用户名
高权限切换到低权限用户不需要密码
返回原来用户使用exit/logout
查看当前用户信息:whoami/ who am i
ps: 显示登录到当前用户的信息
eg:root登录,su - king 切换到king,whoami显示root用户信息
用户组: 对有共性权限的多个用户进行统一管理
新增组:groupadd 组名
删除组:groupdel 组名
添加用户时直接加上组:useradd -g 用户组 用户名
ps:添加用户时不指定组,默认创建一个与用户名相同的组,并将其放入
修改用户的组:usermod -g 用户组 用户名
用户和组相关文件:
1./etc/passwd 文件
用户的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组表示号:注释性描述:主目录:登录Shell
ps:Shell是用来解释指令的,bash(中国一般用这个),tcsh.csh等
2./etc/shadow 文件
口令配置文件
每行含义:登录名:加密口令:最后一次修改
时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
3./etc/group 文件
组的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
运行级别:
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
切换运行级别:init 运行级别
查看当前默认运行级别:systemctl get-default
设置默认运行级别:
3:systemctl set-default multi-user.target
5: systemctl set-default graphical.target
帮助指令:
man获得帮助信息:man [命令或配置文件]
获得shell内置命令帮助信息:help 命令
文件目录类:
显示当前工作目录的绝对路径:pwd
ls指令:ls [选项] [目录或文件]
常用选项:
-a:显示当前目录的所有文件和目录,
包括隐藏的
-l: 以列表的方式显示信息
-h:以人习惯看的格式显示
-R:递归的查找子文件夹下的内容
cd指令:cd [参数] (切换到指定目录)
cd ~或者cd :回到自己的家目录
cd .. :回到当前目录的上一级
mkdir指令: mkdir [选项] 要创建的目录
常用选项:-p: 创建多级目录
rmdir指令:rmdir [选项] 要删除的空目录
rm -rf 要删除目录: 删除非空目录
touch指令:touch 文件名称(创建空文件)
cp指令:cp [选项] source dest
常用选项: -r:递归复制整个文件
强制覆盖不提示的方法:\cp
ps:会将source目录,拷贝到dest目录下层
dest/source
rm指令:rm [选项] 要删除的文件或目录
常用选项:
-r:递归删除整个文件
-f:强制删除不提示
ps:会从最后一层目录开始删除,a/b或a/b/
都是从b目录开始删,包括b
mv指令:
mv oldNameFile newNameFile(重命名)
mv /temp/movefile /targetFolder(移动文件)
ps:/targetFolder/movefile
cat指令:cat [选项] 要查看的文件
常用选项:-n:显示行号
ps:可以配合more使用
more指令:more 要查看的文件
more指令是一个基于VI编辑器的文本过滤器,他以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干个快捷键(交互指令)
交互指令:
空格键(space):代表向下一页翻
Enter:代表向下翻一行
q:代表立刻离开,不再显示该文件内容
Ctrl+F:向下滚动一屏
Ctrl+B:返回上一屏
=:输出当前行的行号
:f:输出文件名和当前行的行号
less指令:less 要查看的内容
交互指令:
空格:向下翻动一页
pagedown:向下翻动一页
pageup:向上翻动一页
/字串: 向下搜寻字串:n:向下查;N:向上
?字串: 向上搜寻字串:n:向上查;N:向下
q:离开less这个程序
echo指令:echo [选项] [输出内容](输出到控制台)
head指令:head 文件(显示文件头10行)
head -n 5 文件(显示前5行)
tail指令:tail 文件(显示文件尾10行)
tail -n 5 文件(显示文件尾5行)
tail -f 文件(实时该文件的所有更新)
ps:Ctrl+C 退出实时监控
> 指令 和 >>指令:>输出重定向和>>追加
ls -l > 文件(列表的内容写入文件找那个(覆盖))
ls -al >> 文件(列表的内容追加到文件末尾)
cat 文件1 > 文件2(文件1的内容覆盖到文件2)
echo "内容" >> 文件
ps:如果输出文件不存在,会自动创建
ln 指令:ln -s [原文件或目录] [软连接名]
history指令:history (查看已经执行过的历史命令)
history n (显示最近n条)
!n (执行编号为n的指令)
时间日期类:
date指令-显示当前日期
date (显示当前时间)
date +%Y(显示当前年份)
date +%m(显示当前月份)
date +%d (显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S"(显示年月日时分秒)
date指令-设置日期
date -s 字符串时间
cal指令:cal[选项](不加选项显示本月日历)
查找搜索类:
find指令:find [搜索范围] [选项]
常用选项:
-name <查询方式> (根据指定文件名查找)
-user <用户名> (查找属于指定用户的所有文件)
-size <文件大小> (按照指定的文件大小,+n表示大于,-n表示小于,n表示等于,单位有k,M,G)
locate指令:locate 搜索文件
ps:可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名及路径的locate数据库实现快速定位未定的文件,数据库需要定期更新。
由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
while指令:while 指令(查看某个指令在哪个目录下)
grep指令:grep [选项] 查找内容 源文件
常用选项:
-n: 显示匹配行及行号
-i :忽略字母大小写
-v:反向匹配,匹配不包含关键字的
ps:可以配合管道符“|”使用
压缩和解压类:
gzip/gunzip指令:
gzip 文件(压缩文件,压缩为.gz文件)
gunzip 文件.gz (解压文件)
zip/unzip指令
zip [选项] xxx.zip 将要压缩的内容(压缩文件和目录)
unzip [选项] xxx.zip (解压文件)
zip常用选项:-r:递归压缩,即压缩目录
unzip常用选项:
-d <目录> :指定解压后的文件存放目录
tar 指令:tar [选项] XX.tar.gz 打包的内容
最后打包后的文件是 .tar.gz的文件
常用选项:
-c: 产生.tar打包文件
-v: 显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩
-x:解包.tar文件
ps:压缩用-zcvf,解压用-zxvf,
-C <解压至目录> 指定解压到那个目录
linux组:
所有者:ls -l 可以查看文件所有者
第一个用户名是文件所有者,
第二个用户名是文件所在组
chown 用户名 文件名(修改文件所有者)
所在组:ls -l 可以查看文件所在组
ps:当用户创建了一个文件后,这个文件
所在组就是该用户所在组
修改文件所在组:chgrp 组名 文件名
修改用户所在组:
usermod -g 新组名 用户名
usermod -d 目录名 用户名(改变用户登
录的初始目录,用户需有进入新目录的权
限)
权限:
ls -l 中显示的内容中第一列说明:
0~9位说明:
第0位确定文件类型(d,-,l,c,b)
-是普通文件
l是链接,相当于windows的快捷方式
d是目录,相当于windows的文件夹
c是字符设备文件,如鼠标,键盘
b是块设备文件,如硬盘
1~3位确定所有者拥有文件的权限
4~6位确定所在组又有该文件的权限
7~9位确定其他用户拥有该文件的权限
rwx权限详解:
rwx作用在文件:
r代表可读:可以读取,查看
w代表可写:可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对改文件所在的目录有写权限,才能删除该文件
x代表可执行:可以被执行
rwx作用在目录:
r代表可读:可以读取,ls查看目录内容
w代表可写:可以修改,对目录内创建+删除+重命名目录
x代表可执行:可以进入该目录,执行目录内的文件必须可以进入该目录
ps:rwx可以用数字表示:r=4,w=2,x=1
ls显示内容其他列说明:
第二列:文件:硬链接数或目录:子目录数+文件数
第三列:用户
第四列:组
第五列:文件大小(无单位就是字节)
第五列:最后修改日期
第六列:文件名
修改权限:chmod指令,可以修改文件或者目
录权限
方式一:+、-、=变更权限
u:所有者 g:所有组 o:其他人 a:所有人
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名
方式二:通过数字变更权限
r=4 w=2 x=1
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名
修改文件所有者:
chown newowner 文件/目录 (改变所有者)
chown newowenr:newgroup 文件/目录
改变所有者和所有组
-R 如果是目录 则使其下的所有子文件或目录递归生效
修改文件所在组:
chgrp newgroup 文件/目录 (改变所在组)
-R 如果是目录 则使其下的所有子文件或目录递归生效
crond 任务调度:
crontab 进行定时任务的设置:crontab [选项]
常用选项:
-e:编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
service crond restart 重启任务调度
设置任务调度规则:
eg:*/1 * * * * ls -l /etc/ > /tmp/to.txt
表示每小时每分钟执行一次命令
占位符说明:
第一个‘*’,一小时当中的第几分钟,0-59
第二个‘*’,一天中的第几小时,0-23
第三个‘*’,一个月当中的第几天,1-31
第四个‘*’,一年中的第几月,1-12
第五个‘*’,一周当中的星期几,0-7(0=7)
特殊符号说明:
*代表任何时间,比如第一个*就代表每分钟都执行一次
,表示不连续的时间,“0 8,12 * * *”代表每天的8点0分,12点0分都执行一次命令
-代表连续的时间范围,比如0 5 * * 1-6代表在周一到周六的凌晨5点0分执行命令
*/n代表每隔多久执行一次,比如“*/10 * * * *”代表每隔十分钟就执行一次命令
at定时任务:
1.at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列的运行
2.默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业队列运行时间,如果时间与当前时间匹配,则运行此作业
3.使用at命令时,一定要保证atd进程的启动,可以使用相关指令来查看
ps -ef 可以查看当前所有运行的进程
at命令:at [选项] [时间]
Ctrl + D 结束at命令的输入
atq:可以查看系统中有没有执行的工作任务
atrm 编号:删除对应编号的工作任务
常用选项:
-m 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-I(大i) atq的别名
-d atrm的别名
-v 显示任务被执行的时间
-c 打印任务的内容到标准输出
-V显示版本信息
-q <队列> 使用指定的队列
-f <文件> 从指定的读入任务而不是从标准输入读入
-t <时间参数> 以时间参数的形式提交要运行的任务
at时间定义:
1.接收在当天hh:mm(小时:分钟)式的时间指定,加入时间已经过去,name就放在第二天执行
2.使用midnight(深夜),noon(中午),teatime(一般是下午4点)等比较模糊的词语来指定时间
3.采用12小时制,即在时间后面加上AM或PM来说明是上午还是下午
4.指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd:mm:yy,指定日期必须在指定时间的后面
5.使用相对计时法,指定格式为:now+count+time-units,now就是当前时间,time-units是时间单位,这里能够是minutes,hours,days,weeks,count是时间的数量,
几天,几小时。
6.直接使用today,tomorrow来指定完成命令的日期
Linux磁盘分区:
lsblk 或lsblk -f 查看所有设备的挂在情况
硬盘说明:
1.Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
2.对于IDE硬盘,驱动器标识符为“hd~”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1-4表示,它们是主分区或扩展分区,从5开始就是逻辑分区
3.对于SCSI硬盘则标识为“sd~”,SCSI,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样
增加磁盘实例:
1.在虚拟机菜单中,选择设置,然后设备列表中添加硬盘
2.分区命令 fdisk /dev/sdb
开始对/sdb分区
m 显示命令列表
p 显示磁盘分区 同 fdisk -l
n 新增分区
d 删除分区
w 写入并退出
q 不保存退出
3.格式化磁盘
mkfs -t ext4 /dev/sdb1
其中ext4是分区类型
4.挂载:将一个分区与一个目录联系起来
mount 设备名称 挂载目录
eg:mount /dev/sdb1 /newdisk
umount 设备名称 或 挂载目录
ps:用命令行挂载,重启后会失效
5.永久挂载
修改/etc/fstab实现挂载
添加完成后 执行mount -a 即刻生效
磁盘情况查询:
查询系统整体磁盘使用情况:df -h
查询指定目录的磁盘占用情况:du -h /目录
常见选项:
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
磁盘情况-工作使用指令
1.统计/opt目录下文件的数量
ls -l /opt | grep "^-" | wc -l
2.统计/opt文件夹下文件的个数,包括子文件夹里的
ls -lR /opt | grep "^-" | wc -l
3.以树状显示目录结构
tree 目录
ps:默认tree未安装,yum install tree
网络配置:
指定ip:
直接修改配置文件(/etc/sysconfig/network-scripts/ifcfg-ens33)来指定ip,并可以连接到外网
ifcfg-ens33文件说明:
DEVICE=eth0 #接口名(设备,网卡)
HWADDR=00:0c:2x:6x:0x:xx #MAC地址
TYPE=Ethernet #网络类型(通常是Ethenet)
UUID= #随机ID
#系统启动的时候网络接口是否有效(yes/no)
ONBOOT=yes
#IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
BOOTPROTO=static
#IP地址
IPADDR=192.168.200.130
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2
重启网络服务或者重启系统生效
service network restart、reboot
设置主机名和hosts映射:
hostname:查看主机名
进程管理:
1.在linux中,每个执行的程序都被称为一个进程,每一个进程都分配一个ID号(pid,进程号)
2.每一进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
3.一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,知道关机才结束
显示系统执行的进程:
ps命令是用来查看目前系统中,有哪些正在执行,以及他们执行的状况。可以不加任何参数
常用参数
-a:显示当前终端的所有进程信息
-u:以用户的格式显示进程信息
-x:显示后台进程运行的参数
-e:显示所有进程
-l:长格式显示更加详细的信息
-f:全格式,以全格式显示当前所有进程,可以查看进程的父进程
常用组合:
“ps aux”可以查看系统中所有的进程
“ps -le”可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级
“ps -ef”同le相似
“ps -l”只能看到当前 Shell 产生的进程
USER:用户名
PID:进程识别号
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大小(kb)
RSS:进程占用的物理内存大小
TTY:终端机号
TIME:此进程所消CPU时间
COMMAND:正在执行的命令或进程号
STAT:运行状态,S-休眠,s-该进程是会话的先导进程,N-进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
START:进程的启动时间
ps -ef:以全格式显示当前所有进程
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表示进程是CPU密集型运算,执行哟限户籍会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
终止进程:
kill [选项] 进程号(通过进程号杀死进程)
killall 进程名称(通过进程名杀死进程,也支持通配符,这里系统因负载过大而变得很慢是很有用)
常用选项:
-9:表示强迫进程立即停止
查看进程树:pstree [选项](可以更加直观的查看进程信息)
常用选项:
-p:显示进程
-u:显示进程的所属用户
服务管理:
服务本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,因此又称守护进程
service管理指令:
service 服务名 [start|stop|restart|reload
|reload|status]
ps:在CentOS7.0后,很多服务不在使用service,而是systemctl
service指令管理的服务在/etc/init.d查看
setup:选择系统服务,就可以看到全部服务
开机流程说明:
开机=》BIOS=》/boot=》systemd进程1=》运行级别=》运行级别对应的服务
chkconfig指令:
通过chkconfig可以给服务的各个运行级别设置自启动/关闭
chkconfig管理的服务在/etc/init.d查看
查看服务:
chkconfig --list [| grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off
systemctl管理指令:
systemctl [start|stop|restart|status] 服务名
systemctl管理的服务在/usr/lib/systemd/
system查看
systemctl设置服务的自启动状态:
systemctl list-unit-files [| grep 服务名]
(查看服务开机启动状态)
systemctl enable 服务名
(设置服务开机启动)
systemctl disable 服务名
(关闭服务开机启动)
systemctl is-enabled 服务名
(查询某个服务是否是自启动的)
ps:centOS7.0后,以上设置控制的是3,5级别下开机是否自启动
firewall指令:
打开端口:
firewall-cmd --permanent --add-port=端
口/协议
关闭端口:
firewall-cmd --permanent --remove-port=
端口/协议
重新载入,才能生效:
firewall-cmd --reload
查询端口是否开放:
firewall-cmd --query-port=端口/协议
查询开放端口:
firewall-cmd --list-all
动态监控进程:top [选项]
top和ps命令相似。他们都用来显示正在执行的进程。但是top在执行一段时间可以更新正在运行的进程
常用选项:
-d 秒数:指定top命令每隔几秒更新,默认是3秒
-i:使top不显示任何限制或者僵死进程
-p:通过指定监控进程ID来仅仅监控某个进程的状态
动态监控交互操作:
P:以CPU使用率排序,默认即使此项
M:以内存的使用率排序
N:以PID排序
q:退出top
u:监控指定用户
k:终止指定进程
监控网络状态:netstat [选项]
-an 按一定顺序排列输出
-p 显示哪个进程在调用
rpm包的管理:
查询已安装的rpm列表:rpm -qa | grep xx
rpm包名基本格式:
eg:firefox-60.2.2-1.el7.centos.x86_64
名称:firefox
版本号:60.2.2-1
适用操作系统:el7.centos.x86_64
表示centos7.x的64位系统
如果是i686,i386表示32位系统,noarch表示通用
查询软件包是否安装:rpm -q 软件包名
查询软件包信息:rpm -qi 软件包
查询软件包中的文件:rpm -ql 软件包
查询文件所属软件包:rpm -qf 文件全路径
卸载rpm包:rpm -e rpm包名
ps:如果删除的软件包被其他软件包所依赖,卸载是会产生错误信息,如果确定要卸载,增加参数--nodeps
安装rpm包:rpm -ivh rpm包全路径名称
参数说明:
i:install 安装
v: verbose 提示
h: hash 进度条
yum:
查询yum服务器是否有需要安装的软件:
yum list | grep xx
安装指定的yum包:
yum install xxx
安装JDK:

shell编程:
shell脚本执行方式:
格式要求:
脚本以#!/bin/bash开头
脚本需要有可执行权限
赋予脚本x权限,直接使用路径执行
使用 sh + 脚本执行
shell的变量:
Linux Shell中变量分为系统变量和用户自定义变量
系统变量:$HOME,$PWD等,
显示当前Shell中所有的变量:set
- shell变量的定义:
定义变量:变量=值
撤销变量:unset 变量
声明静态变量:readonly变量,不能unset
- 定义变量的规则:
变量名称可以由字母、数组、下划线组成,但是不能以数字开头。
等号两侧不能有空格
变量名称一般习惯大写
- 将命令的返回值赋给变量:
A=`date`反引号,运行命令,并把结果返回给变量A
A=$(date)等价于反引号
- 设置环境变量:
export 变量名=变量值(将shell变量输出为环境变量/全局变量)
source 配置文件(让修改后的配置文件立即生效)
echo $变量名(查询环境变量的值)
ps:shell脚本多行注释 :<<!换行 内容 换行!
- 位置参数变量:
$n(n为数字,$0代表命令本身,$1~$9代表第一个到第九个参数,十以上的参数需要用大括号包含,如${10})
$*(这个变量代表命令行中的所有参数,$*把所有的参数看成一个整体)
ps:(⊙o⊙)…好像也是分开的
$@(这个变量也代表命令行中的所有参数,不过$@把每个参数区分对待)
$#(这个变量代表命令行中所有参数的个数)
- 预定义变量
就是shell设计者事先定义好的变量,可以直接在shell脚本中使用
$$(当前进程的进程号(PID))
$!(后台运行的最后一个进程的进程(PID))
$?(最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确了)
ps:后台运行脚本:执行命令 &
运算符:
$((运算式))或$[运算式]或expr m + n
注意expr运算符间要有空格,如果希望将expr 的结果赋给某个变量,使用``(反引号)
expr m - n
expr \*,/,% 乘,除,取余
条件判断:
[ condition ] (condition前后要有空格)
非空返回true,可以使用$?验证(0位true,>1为false)
常用判断条件:
= 字符串比较
两个整数比较:
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
按照文件权限进行判断:
-r 有读的权限
-w 有写的权限
-x 有执行的权限
按照文件类型判断:
-f 文件存在并且是一个常规文件
-e 文件存在
-d 文件存在并且是一个目录
流程控制:
if语句:
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [ 条件判断式 ]
then
程序
fi
case语句:
case $变量名 in
"值1")
如果变量值等于值1,则执行程序1
;;
"值2")
如果变量值等于值2,则执行程序2
;;
... ...
*)
如果变量值都不是以上值,则执行此程序
;;
esac
for循环:
语法一:
for 变量 in 值1,值2,值3 ...
do
程序
done
语法二:
for((初始值;循环控制条件;变量变化))
do
程序
done
while循环:
while [ 条件判断式 ]
do
程序
done
read读取控制台输入:
read (选项) (参数)
选项:
-p:指定读取值时的提示符
-t:指定读取值时等待的时间(秒),
如果没有在指定时间内输入,就不再等待了
参数:
变量:指定读取值时的变量名
函数:
系统函数:
basename:
返回完整路径最后/的部分,常用于获取文件名
basename [pathname] [suffix]
dirname:
返回完整路径最后/的前面部分,常用于返回路径部分
dirname 文件绝对路径
自定义函数:
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名:function [值]
Ubuntu:


日志管理:
/var/log/目录就是系统日志文件的保存位置
系统常用日志:
boot.log 系统启动日志
cron 记录与系统定时任务相关的日志
lastlog 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,要使用lastlog命令查看
mailog 记录邮件信息的日志
message 记录系统最重要的日志,这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题,首先检查这个日志文件
secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统的登录,ssh的登录,su切换用户,sudo授权,甚至添加用户和修改密码都会记录在这个日志文件中
ulmp 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销而不断变化,只记录当前用户的信息。这个文件不能用vi查看,而要使用w,who,users等命令查看
日志服务管理:rsyslogd
/etc/rsyslog.conf 记录了rsyslogdg管理的日志文件
配置文件详解:
编辑文件格式为:*.* 存放日志文件
第一个*代表日志类型,第二个代表*代表日志级别


日志文件的格式包含4列:
1.时间产生的时间
2.产生事件的服务器的主机名
3.产生事件的服务名和程序名
4.事件的具体信息
日志轮替:
日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除


参数说明:


日志轮替机制原理:
日志轮替之所以可以在指定的时间备份文件,是依赖系统的定时任务。在/etc/cron.daily/目录,其中有一个logrotate文件,logrotate通过这个文件依赖定时任务执行的。

内存日志:
journalctl 可以查看内存日志,重启清空
journalctl 查看全部
journalctl -n 3 查看最新3条
journalctl --since 19:00 --until 19:10:10
查看起始时间到结束时间的日志,可加日期
journalctl -p err 报错日志
journalctl -o verbose 日志详细内容
journalctl _PID=1245 _COMM=sshd 查看包含这些参数的日志
linux启动流程:
1.首先Linux要通过自检,检查硬件设备有没有故障
2.如果有多块启动盘的话,与要在BIOS中选择自动磁盘
3.启动MBR中的BootLoader引导程序
4.加载内核文件
5.执行所有进程的父进程,老祖宗systemd
6.欢迎界面
在Linux的启动流程中,加载内核文件时关键文件:
kernel文件:vmlinuz-3.10.0-957.el7.x86_64
initrd文件:initramfs-3.10.0-957.el7.x86_64.img
数据备份与恢复:
安装dump和restore指令:
yum -y install dump
yum -y install restore
使用dump完成备份:
dump支持分卷备份和增量备份(所谓增量备份是指备份上一次备份后 修改/增加过的文件,也称差异备份)
dump [-cu] [-123456789] [-f <备份后文件名>] [-T <日期>] [目录和文件系统]
dump [-wW]
