欢迎光临散文网 会员登陆 & 注册

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

2023-09-06 15:56 作者:清风流醉月  | 我要投稿

目录结构

/: 表示根目录,根目录下有一些固定到目录结构

/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]









【小白入门 通俗易懂】2021韩顺平 一周学会Linux的评论 (共 条)

分享到微博请遵守国家法律