CentOS7学习笔记

一. VM下安装CentOS

在Vmware中安装CentOS。

VM三种网络连接模式

桥接模式

虚拟系统可以和外部系统通讯,但是容易造成IP冲突。

NAT模式

网络地址转换模式,虚拟系统可以和外部系统通讯,而且不造成IP冲突。

仅主机模式

独立的系统,不和外部发生联系。

VM常用操作

拍摄快照和克隆。

安装vmtools

安装vmtools,能让我们在windows下更好的管理虚拟机。

安装步骤:
    进入CentOS。
    点击vm菜单的->install vmware tools。
    centos会出现一个vm安装包,xx.tar.gz。
    拷贝到/opt。
    使用解压命令tar,得到一个安装文件。
    cd/opt [进入到opt目录]。
    tar -zxvf xx.tar.gz。
    进入vm解压的目录,/opt目录下cd vmware...
    安装 ./vmware-install.pl
    全部使用默认设置即可,就可以安装成功。
    注意:安装vmtools,需要有gcc。

设置共享文件夹

步骤:
	菜单 -> vm -> setting -> 选项 -> 共享文件

共享文件夹在CentOS的/mnt/hgfs/下。

二. CentOS文件系统

在Linux世界里,一切皆文件。

linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是跟目录“/”,然后在此目录下再创建其他的目录。

深刻理解linux树状文件目录是非常重要的。

具体目录结构

/bin [常用] (/usr/bin、/usr/local/bin) 是Binary的缩写,这个目录存放着最经常使用的命令。
/sbin [常用] (/usr/sbin、/usr/local/sbin) s就是super user的意思,这里存放的是系统管理员使用的系统管理程序。
/home [常用] 存放普通用户的主目录,在Linux中每个用户都有自己的目录,一般该目录名是以用户的账号命名。
/root [常用] 该目录为系统管理员,也称作超级权限者的主目录。
/lib [常用] 系统开机所需要的最基本的动态连接共享库。其作用类似于Windows里的DLL文件。几乎所有应用程序都需要用到这些共享库。
/lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/etc [常用] 所有系统管理所需要的配置文件和子目录。
/usr [常用] 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program file文件。
/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是一种安全子系统,它能控制程序只能访问特定的文件,有三种工作模式,可以自行设置。

三. 远程连接

使用xshell与xftp工具。

四. Vi与Vim

三种模式

正常模式

以vim打开一个文档就直接进入了一般模式(这是默认的模式)。在这个模式中,你可以使用[上下左右]按键来移动光标,你可以使用[删除字符]或[整行删除]来处理文档内容,可以使用[复制、粘贴]来处理你的文件数据。

插入模式

按下i、I、o、O、a、A、r、R等任何一个字母之后才会进入编辑模式,一般来说按i即可。

命令行模式

在这个模式中,可以提供你相关的指令,完成读取、存盘、替换、离开vim、显示行号等动作则是在此模式中达成的。

模式转换

在这里插入图片描述

vim/vi命令

拷贝当前行 yy,拷贝当前行向下的5行 5yy ,并粘贴 p。
删除当前行 dd,删除当前行向下的5行 5dd。
在文件中查找某个单词。命令行/关键字,回车查找,输入n就是查找下一个。
设置文件的行号,set nu;取消文件的行号,set nonu。
在一般模式下,使用快捷键G到该文档的最末尾行,gg到最首行。
在一般模式下使用快捷键u,撤销修改。
在一般模式下,输入行号,在输入shift+g,快速跳转到改=该行号。
更多操作可以查看更多文档。

vim/vi键盘图

在这里插入图片描述

五. 关机&重启

基本介绍

shutdown -h now 	立刻进行关机。
shutdown -h 1 		给所有用户发送通知,在一分钟后进行关机。
shutdown -r now 	立即重启计算机。
shutdown = shutdown -h 1
halt 				关机。
reboot				重启计算机。
sync 				把内存和数据同步到磁盘。

注意细节

  1. 不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘。
  2. 目前的shutdown/reboot/halt等命令均已经在关机前执行了sync。

六. 用户管理

用户登录&注销

基本介绍

  1. 登录时尽量少用root账号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用“su - 用户名”命令来切换成系统管理员身份。

  2. 在提示符下输入logout即可注销用户。

注意细节

  1. logout注销指令在图形运行级别无效,在 运行级别3 下有效。

添加用户

语法

useradd 用户名;
useradd -d 指定家目录 用户名;
pwd -> 查看当前路径。

细节说明

当用户创建成功以后,会自动创建和用户同名的家目录。

删除用户

userdel 用户名	->	删除用户,但是保留家目录。
userdel -r 用户名	->	删除用户以及用户主目录。

修改密码

passwd 用户名	-> 如果不加用户名修改当前用户。

查询用户信息

基本语法

id 用户名

细节说明

当用户不存在时,返回无此用户。

切换用户

在linux中,如果当前用户的权限不够,可以通过su指令,切换到高权限用户。

基本语法

su - 用户名

细节说明

  1. 从高权限的用户切换到低权限用户,不需要输入密码,反之需要。

  2. 当需要返回到原来用户时,使用exit/logout指令。

查看当前用户

who am i
whoami

用户组

类似于角色,系统可以对有共性(权限)的多个用户进行统一管理。

新增组

groupadd 组名

删除组

groupdel 组名

增加用户时直接加上组

useradd -g 用户组 用户名

如果增加用户时没有选择组,则自动创建一个与用户同名的组,并将用户添加进入组中。

修改用户的组

usermod -g 用户组 用户名

用户和组相关的文件

/etc/passwd 文件
用户的配置文件,记录用户的各种信息。
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

/etc/shadow 文件
口令配置文件。
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group 文件
组(group)的配置文件,记录linux包含的组的信息。
每行含义:组名:口令:组标识号:组内用户列表

七. 运行级别

基本介绍

0:关机。
1:单用户。
2:多用户状态没有网络服务。
3:多用户状态有网络服务。
4:系统未使用保留给用户。
5:图形界面。
6:系统重启。

常用的运行级别是3和5,也可以指定默认运行级别。

切换运行级别

init [0 1 2 3 4 5 6]

指定运行级别

CentOS7以前,/etc/inittab文件中指定。

CentOS7以后进行了简化

multi-user.target:analogous to runlevel 3
graphical.target:analogous to runlevel 5

To view current default target,run:

systemctl get-default

To set a default target,run:

systemctl set-default TARGET.target

面试

如何找回root用户密码?

1.首先启动系统,进入开机界面,在界面中按“e”进入编辑界面。
2.进入编辑界面,使用键盘上的上下键把光标往下移,找到以“linux16”开头内容所在行数,在最后面输入:init=/bin/sh。
3.接着,输入完成后,直接按快捷键:Ctrl + x进入单用户模式。
4.接着,在光标闪烁的位置中输入:mount -o remount,rw/(注意:各个但单词间有空格),完成后按键盘的回车键。
5.在新的一行最后面输入:passwd,完成后按键盘的回车键。输入密码,然后再次确认密码即可,密码修改成功后,会显示passwd的样式,说明密码修改成功。
6.接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与/后面有一个空格),完成后按键盘的回车键。
7.继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exec与/后面有一个空格),完成后按键盘的回车键,等待系统自动修改密码,完成后系统会自动重启,新的密码生效了。

八. 帮助指令

man获得帮助信息

基本语法

man [命令或配置文件] -> 获得帮助信息。

在linux下,隐藏文件是以.开头,选项可以组合使用。例如:ls -al, ls -al /root。

help指令

基本语法

help 命令 -> 获得shell内置命令的帮助信息。

九. 文件指令

文件查询

pwd -> 显示当前工作目录的绝对路径。
ls [选项] [目录或者文件] -> 显示当前目录下的文件。
	-a:显示当前目录所有的文件和目录,包括隐藏的。
	-l:以列表的方式显示信息
cd -> 切换到指定的目录。
	cd ~:回到自己的家目录。
	cd..:回到当前目录的上一级目录。

文件创建

mkdir [选项] 要创建的目录 -> 创建目录。
		-p 创建多级目录
touch 文件名称 -> 创建一个非空文件。

文件删除

rmdir [选项] 要删除的空目录。 -> 只能删除空目录,有内容时无法删除。
rm [选项] 要删除的目录。 -> 删除非空目录。
	-r:递归删除整个文件。
	-f:强制删除不提示。

文件复制

cp [选项] source dest
	-r:递归复制整个文件夹。
\cp -> 强制覆盖不提示。

文件移动

mv oldNameFile newNameFile -> 重命名
mv sourceFolder targetFolder -> 移动文件或者文件名。 

文件查看

cat [选项] 要查看的文件
	-n 显示行号。

使用细节

cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more。

cat -n 文件 | more [进行交互]

more指令

more指令是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键(交互指令)。

在这里插入图片描述

less指令

less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载的内容,对于显示大型文件具有较高的效率。

在这里插入图片描述

echo指令

echo输出内容到控制台。

案例

使用echo输出环境变量:
	echo $PATH $HOSTNAME
使用echo输出字符串:
	echo ""

head指令

head用于显示文件的开头部分内容,默认情况下head指令显示文件前10行内容。

基本语法

head 文件
head -n 5 文件 -> 查看文件前5行。

tail指令

tail用于输出文件中尾部的内容,默认情况下tail指令显示文件最后10行内容。

基本语法

tail 文件 -> 查看文件尾10行内容。
tail -n 5 文件 -> 查看文件尾5行的内容,5可以是任意数。
tail -f -> 实时跟踪文档所有的更新。

>指令与>>指令

>输出重定向>>追加

基本语法

[输出内容] > 文件 -> 覆盖写。
[输出内容] >> 文件 -> 追加写。

ln指令

软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其它文件的路径。

基本语法

ln -s [源文件或目录] [软链接名] -> 给源文件创建一个软链接。

细节说明

当我们使用pwd指令查看目录时,任然看到的是软链接所在的目录。

history指令

查看已经执行过历史命令,也可以执行历史命令。

基本语法

history -> 查看已经执行过的历史命令。
![编号] -> 执行编号对应的历史命令。

十. 时间日期指令

date指令

基本语法

date -> 显示当前时间。
date +%Y -> 显示当前年份。
date +%m -> 显示当前月份。
date +%d -> 显示当前是哪一天。
date "+%Y-%m-%d %H:%M:%S" -> 显示年月日时分秒。
date -s 字符串时间  -> 设置时间。

cal指令

基本语法

cal [选项] -> 不加选项,显示本月月历。
显示2021年历:cal 年份

十一. 搜索查找指令

find指令

find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。

基本语法

find [搜索范围] [选项]
				-name<文件名> :按照指定的文件名查找模式查找文件。
				-user<用户名> :查找属于指定用户名所有文件。
				-size<文件大小> :按照指定的文件大小查找文件。

locate指令

locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果准确度,管理员必须定期更新locate时刻。

基本语法

updatedb    -> 创建locate数据库
locate 搜索文件

特别说明

由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。

which指令

which指令,可以查看某个指令在哪个目录下,比如ls指令在哪个目录下。

which 指令名称

grep指令和管道符|

grep过滤查找,管道符|,表示将前一个命令的处理结果输出传递给后面的命令处理。

基本语法

grep [选项] 查找内容 源文件
	-n 显示匹配行以及行号。
	-i 忽略字母大小写。

应用实例

输出指令 | grep "查找字符"
grep -n "查找字符" 源文件

十二. 解压指令

gzip/gunzip指令

gzip用于压缩文件,gunzip用于解压文件。

基本语法

gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件。)
gunzip 文件.gz(功能描述:解压缩文件命令。)

zip/unzip指令

zip用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用。

基本语法

zip [选项] xxx.zip 将要压缩的内容 -> 压缩文件目录和命令。
	-r -> 递归压缩,即压缩目录。
unzip [选项] xxx.zip 
	-d -> 指定文件解压后存放的目录。

tar指令

tar指令是打包指令,最后打包后的文件是.tar.gz的文件。

基本语法

tar [选项] xxx.tar.gz 打包内容 [-C 指定解压目录]
	-c 产生.tar打包文件。
	-v 显示详细信息。
	-f 指定压缩后的文件名。
	-z 打包同时压缩。
	-x 解压.tar文件。

十三. 组

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件所有者、所在组、其它组的概念。

所有者与所在组

查看文件的所有者

ls -ahl

修改文件所有者

chown 用户名 文件名

修改文件所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在组。

chgrp 组名 文件名

组的创建

groupadd 组名

其它组

除文件所有者和所在组的用户外,系统的其它用户都是文件的其它组。

改变用户所在组

usermod -g 新组名 用户名 -> 改变用户所在的组。
usermod -d 目录名 用户名 -> 改变用户的初始目录。
特别说明:用户需要有进入到新目录的权限。

十四. 权限

ls -l查询出来的结果前10个字符确定不同用户能对文件干什么。

第1位确定文件类型:d,-,l,c,b
	d是目录,相当于windows的文件夹。
	-是普通文件。
	l是链接,相当于windows的快捷方式。
	c是字符设备文件,鼠标,键盘。
	b是块设备,比如硬盘。
第2-4位确定所有者(该文件的所有者)拥有该文件的权限。
第5-7位确定所属组(同用户组的)拥有该文件的权限。
第8-10位确定其它用户拥有该文件的权限。

rwx作用到文件

[r]代表可读:可以查看读取。
[w]代表可写:可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限。
[x]代表可执行:可以被执行。

rwx作用到目录

[r]代表可读:可以读取,ls查看目录内容。
[w]代表可写:可以修改,对目录内创建+删除+重命名目录。
[x]代表可执行:可以进入该目录。

其它说明

-rw-r--r--. 1 fox  monster 4.0K Mar 18 16:21 ok.txt
1:文件:硬连接数。目录:子目录数。
fox:用户。
monster:文件所在组。
4.0K:文件大小。
Mar 18 16:21:最后修改日期。
ok.txt:文件名。

修改权限

通过chmod指令,可以修改文件或者目录的权限。

第一种方式

使用+、-、=变更权限。

u:所有者,g:所有组,o:其它人,a:所有人(u、g、o总和)。

使用实例:

chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名

第二种方式

通过数字变更权限。

r=4,w=2,x=1

使用实例:

chmod 751 文件目录名。

修改文件所有者

基本介绍

chown newowner 文件/目录 -> 改变所有者。
chown newowner:newgroup 文件/目录 -> 改变所有者和所在组。
chown -R newowner 目录 -> 改变所有者,使其下所有子文件或目录递归生效。

修改文件所在组

基本介绍

chgrp newgroup 文件/目录 -> 改变所在组。
chgrp -R newgroup 目录 -> 改变所在组,使其下所有子文件或目录递归生效。

权限管理应用实例

x:表示可以进入到该目录,比如cd。
r:表示可以ls,将目录的内容显示。
w:表示可以在该目录,删除或者创建文件。

十五. crond任务调度

crontab进行任务调度。

概述

任务调度

是指系统在某个时间执行的特定的命令或程序。

任务调度分类

系统工作

有些重要的工作必须周而复始的执行

个别用户工作

个别用户可能希望执行某些程序。

基本语法

crontab [选项]
		-e 编辑crontab定时任务。
		-l 查询crontab任务。
		-r 删除当前用户所有的crontab任务。
service crond restart -> 重启任务调度。

快速入门

*/1 * * * * ls -l /etc/ > /tmp/to.txt

参数细节说明

在这里插入图片描述

特殊符号

在这里插入图片描述

十六. at定时任务

at命令是一次性定时任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。

默认情况下,atd守护进程会每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。

at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了。

在使用at命令的时候,一定要保证atd进程启动,可以使用相关指令来查看。

ps -ef | grep atd

at命令格式

at [选项] [时间]
	-m:当指定的任务完成后,给用户发邮件,即使没有标准输出。
	-I:atq别名。
	-d:atrm别名。
	-v:显示任务将被执行的时间。
	-c:打印任务的内容到标准输出。
	-V:显示版本信息。
	-q<队列>:使用指定的队列。
	-f<文件>:从指定文件读入任务,而不是从标准输入读入。
	-t<时间参数>:以时间参数的形式提交要运行的任务。

at时间定义

at指定时间的方法

1.接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。
2.使用midnight(深夜)、noon(中午)、teatime(饮茶时间一般是下午四点)等比较模糊的词语来指定时间。
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来指定完成命令的时间。

Ctrl + D结束at命令输入,输入2次。

十七. Linux分区

linux来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,linux中每个分区都是用来组成整个文件系统的一部份。

linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

硬盘说明

linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘。

对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在的设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),"~”代表分区,前四个分区用数字1到4表示,它们是主分区或者扩展分区,从5开始就是逻辑分区。
对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用"sd"来表示分区所在设备类型的,其余则和IDE硬盘的表示方法一样。

查看分区

lsblk
lsblk -f

添加硬盘

虚拟机里添加一块新硬盘。
fdisk /dev/sdb -> 分区命令 
开始对/sdb分区
    m 显示命令列表
    p 显示磁盘分区 同fdisk -l
    n 新增分区
    d 删除分区
    w 写入并退出
    说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
格式化分区
	mkfs -t ext4 /dev/sdb2
挂载分区
	mkdir newdisk
	mount /dev/sdb2 /newdisk/
卸载分区
	umount /dev/sdb2 或 umount /newdisk
注意:
	命令行挂载重启以后会失效。
永久挂载
	通过修改/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 -l /opt | grep "^d" | wc -l
3. 统计/opt文件夹下文件的个数,包括子文件夹里的
	ls -lR /opt | grep "^-" | wc -l
4. 统计/opt文件夹下目录的个数,包括子文件夹里的
	ls -lR /opt | grep "^d" | wc -l
5. 以树状显示目录结构tree目录,注意,如果没有tree,则使用yum install tree安装

十八. 网络配置

查看网络ip和网关

ipconfig -> windows下
ifconfig -> linux下
ping 目的主机 -> 测试当前服务器是否可以连接目的主机。

配置ip地址

第一种方案

图形界面。

第二种方案

直接修改配置文件来指定ip,并可以连接到外网。

编辑 /etc/sysconfig/network-scripts/ifcfg-ens33文件。

ifcfg-ens33文件说明
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="c54e7807-4853-4402-9de9-cb6ef5cbc45c"
DEVICE="ens33"
ONBOOT="yes"
#IP地址
IPADDR=192.168.200.130
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2

重启网络服务或者重启系统生效。

设置主机名和host映射

设置主机名

为了方便记忆,可以给linux系统设置主机名,也可以根据需要修改主机名。

指令hostname:查看主机名。

修改文件在/etc/hostname指定。

修改后重启生效。

设置hosts映射
windows
在c:\Windows\System32\drivers\etc\hosts文件指定即可
linux
在/etc/hosts文件指定

十九. 进程(重点)

基本介绍

在linux中,每个执行的程序都称为一个进程。每一个进程都分配一个id号。

每个进程都可以以两种方式存在的,前台与后台。所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作的,但由于屏幕上无法看到进程,通常使用后台方式执行。

一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。

进程查询

PS指令

ps命令是用来查看目前系统中,有哪些正在执行,以及它们的执行情况。可以不加任何参数。

ps [选项]
	-a:显示当前终端的所有进程信息。
	-u:以用户的格式显示进程信息。
	-x:显示后台进程运行的参数
	
	-e:显示所有进程。
	-f:全格式。
	
使用方式:
	ps -aux | grep xxx -> 查看有没有我需要的指令。
显示结果:
	USER:用户名称。
	PID:进程号。
	%CPU:进程占用的cpu百分比。
	%MEM:进程占用物理内存的百分比。
	VSZ:进程占用虚拟内存的大小(单位:KB)。
	RSS:进程占用物理内存的大小(单位:KB)。
	TT:终端名称,缩写。
	STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等。
	STARTED:进程启动时间。
	TIME:cpu时间,即进程使用cpu的总时间。
	COMMAND:启动进程所用的命令和参数,如果过长会被截断显示。

使用方式:
	ps -ef是以全格式显示当前所有进程。
		-e:显示所有进程。
		-f:全格式。
显示结果:
	UID:用户ID。
	PID:进程ID。
	PPID:父进程ID。
	C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算。执行优先级会越低;数值越小,表明进程是I/O密集型运算,执行优先级会提高。
	STIME:进程启动时间。
	TTY:完整的终端名称。
	TIME:CPU时间。
	CMD:启动进程所用的命令和参数。

pstree指令

查看进程树。

pstree [选项] 可以更加直观的来查看进程信息。
		-p:显示进程的PID。
		-u:显示进程的所属用户。

终止进程

若是某个进程执行一般需要停止时,或是已消了很多资源时,可以考虑停止该进程。使用kill命令来完成此项任务。

kill和killall

kill [选项] 进程号 -> 通过进程号杀死/终止进程。
killall 进程名称 -> 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用。
	-9:表示强迫进程立即停止。
/bin/systemctl start [服务名] -> 重启服务。

服务(service)管理

服务(service)本质就是进程,但是是在后台的,通常都会监听某个端口,等待其它程序请求,比如(mysql,sshd 防火墙等),因此我们又称为守护进程,是linux中非常重要的知识点。【原理图】

service指令

service 服务名 [start | stop | restart | reload | status]
CentOS7.0以后很多服务不再使用service,而是systemctl。

查看服务

service指令管理的服务在/etc/init.d/查看。
setup -> 看到系统的所有服务。

服务的运行级别

linux系统有7种运行级别:常用的级别是3和5。

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动。
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录。
运行级别2:多用户工作状态(没有NFS),不支持网络。
运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式,无界面。
运行级别4:系统未使用,保留。
运行级别5:X11控制台,登录后进入图形GUI模式。
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。

开机流程说明

开机 -> BIOS -> /boot -> systemmd进程1 -> 运行级别 -> 运行级对应的运行服务

chkconfig指令

通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭。

chkconfig指令管理的服务在/etc/init.d/中查看。

注意:CentOS7.0后,很多服务使用systemctl管理。

基本语法
chkconfig --list [| grep xxx]
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off

chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效。

systemctl管理指令

基本语法
systemctl [start | stop | restart | status] 服务名 (临时生效)

systemctl指令管理的服务在/usr/lib/systemd/system查看。

设置服务自启动
systemctl list-unit-files [| grep 服务名](查看服务开机启动状态,gerp可以进行过滤)
systemctl enable 服务名(设置服务开机启动,在运行状态3和5永久生效。服务名可以写一半。)
systemctl disable 服务名 (关闭服务开机启动,在运行状态3和5永久生效.服务名可以写一半。)
systemctl is-enable 服务名 (查询某个服务是否是自动启动.服务名可以写一半。)
细节讨论

关闭或者启用防火墙后,立即生效。[telnet测试某个端口即可]

这种关闭方式只是临时生效,当系统重启后,还是回归以前对服务的设置。

如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable|disable] 服务名.[演示]

打开或者关闭指定端口

在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。比如80、22、8080等。

firewall指令
firewall-cmd --permanent --add-port=端口号/协议 -> 打开端口。
firewall-cmd --permanent --remove-port=端口号/协议 -> 关闭端口。
firewall-cmd --reload -> 重新载入,才能生效。
firewall-cmd --query-port=端口号/协议 -> 查询端口是否生效。
应用案例
1.启用防火墙,测试111端口是否能telnet。
	不行
2.开放111端口。
	firewall-cmd --permanent --add-port=111/tcp;
	firewall-cmd --reload;
3.再次关闭111端口
	firewall-cmd --permanent --remove-port=111/tcp;
	firewall-cmd --reload;

动态进程监控

top与ps命令很相似。它们都用来显示当前正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。

基本语法

top [选项]
	-d -> 指定top命令每隔几秒更新,默认是3秒。
	-i -> 使top不显示任何闲置或者僵死进程。
	-p -> 通过指定监控进程ID来仅仅监控某个进程的状态。

交互操作

操作		功能
P		以CPU使用量排序,默认就是此项。
M		以内存的使用率排序。
N		以PID排序。
q		退出top。

应用实例

案例1.监视特定用户,比如我们监控tom用户。
	top:输入此命令,按回车键,查看执行进程。
	u:然后输入"u"回车,再输入用户名即可。
案例2.终止指定的进程,比如我们要结束tom登录。
	top:输入此命令,按回车键,查看执行进程。
	k:然后输入k回车,再输入要结束的进程ID。

查看系统网络情况netstat

基本语法

netstat [选项]
		-an -> 按一定的顺序排列输出。
		-p -> 显示哪个进程在调用。

检测主机连接命令ping

是一种网络测试工具,它主要是用来检测远程主机是否正常,或是两部主机间的网线或网卡故障。

ping 对方的ip地址

二十. rpm与yum包

rpm用于互联网下载包的打包及安装工具,它包含在某些linux分发版本中。它生成具有.RPM扩展名的文件。RPM是ReDHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。

Linux分发版本都有采用(suse,redhat,centos等),可以算是公认的行业标准了。

rpm包的简单查询指令

查询已安装的rpm列表:
	rpm -qa | grep xxx

rpm包名的基本格式

一个rpm包名: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包的其它查询指令

rpm -qa -> 查询所安装的所有rpm软件包。
rpm -qa | more
rpm -qa | grep X 

rpm -q 软件包名 -> 查询软件包是否安装。

rpm -qi 软件包名 -> 查询软件包信息。

rpm -ql 软件包名 -> 查询软件包中的文件。

rpm -qf 文件全路径名 查询文件所属的软件包 

rpm包的删除

基本语法

rpm -e rpm包的名称 //erase

细节讨论

1. 如果其它软件包依赖于您要卸载的软件包,卸载时会产生错误信息。
2. 如果我们就是要删除foo这个rpm包,可以增加参数--nodeps,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行。

rpm包的安装

基本语法

rpm -ivh rpm全路径名称

参数说明

i = install 安装
v = verbose 提示
h = hash 进度条

yum

Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

yum基本指令

查询yum服务器是否有需要安装的软件。
yum list | grep 软件
安装指定yum包
yum install 软件名 

二十一. javaEE环境搭建

安装JDK

1. mkdir/opt/jdk。
2. 通过xftp6上传到/opt/jdk下。
3. cd /opt/jdk。
4. 解压tar -zxvf jdk-8u281-linux-x64.tar.gz
5. mkdir /usr/local/java
6. mv /opt/jdk/jdk1.8.0_281 /usr/local/java
7. 配置环境变量的配置文件vim /etc/profile
8. export JAVA_HOME=/usr/local/java/jdk1.8.0_281
9. export PATH = $JAVA_HOME/bin:$PATH
10. source /etc/profile [让新的环境变量生效]
11. 测试是否安装成功。

安装Tomcat

1. 上传安装文件,并解压缩到/opt/tomcat。
2. 进入解压目录/bin,启动tomcat。./startup.sh。
3. 开放端口8080。

测试是否安装成功:
	在windows或者linux下访问http://linuxip:8080。

安装Idea

运行idea.sh。

安装MySQL5.7

1. 新建文件夹/opt/mysql,并cd进去。
2. 运行wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar。
ps:centos6.7自带的类mysql数据库是mariadb,会和mysql冲突,要先删除。
3. 运行tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar。
4. 运行rpm -qa | grep mari,查询mariadb相关包。
5. 运行rpm -e -nodeps mariadb-libs卸载。
6. 开始真正安装mysql,依次运行以下几条。
	rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
	rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm 
	rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
	rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
7. 运行systemctl start mysqld.service,启动mysql。
8. 然后开始设置root用户秘密。
	mysql自动给root用户设置随机密码,运行grep “password” /var/log/mysqld.log可以看到当前密码。
9. 运行mysql -u root -p,用root用户登录,输入上述密码,可进入mysql。
10. 谁知root密码,对于个人开发环境,如果要设比较简单的密码(生产服务环境要设比较复杂的密码),可以运行set 		global validate_password_policy=0;提示密码设置策略。(validate_password_policy默认为1).
11. set password for 'root'@'localhost'=password('root');
12. 运行flush privileges; 使密码生效。

二十二. Shell编程

Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。

对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些Shell脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。

对于大数据程序员来说,需要编写Shell程序来管理集群。

Shell是什么

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

在这里插入图片描述

Shell脚本执行方法

脚本格式要求

脚本以#!/bin/bash开头。

脚本需要有可执行权限。

脚本执行方式

方式一:
	输入脚本的绝对路径或者相对路径。
	前提:
		需要获得x权限。
方式二:
	sh 脚本
	提示:
		不用获得x权限,直接执行即可。

Shell变量介绍

Linux Shell中的变量分为,系统变量和用户定义变量。

系统变量:$HOME、$PWD、$SHELL、$USER等等。

显示当前shell中的变量set。

Shell变量的定义

基本语法

定义变量:变量名=值

撤销变量:unset 变量名

声明静态变量:readonly 变量。 ps:静态变量不能被unset。

Shell变量命名规则

变量名称可以由字母、数字、下划线组成。但是不能以数字开头。

等号两侧不能有空格。

变量名称一般习惯为大写,这是一个规范,我们遵守即可。

将命令的返回值赋给变量

A=命令反引号,运行里面的命令,并把结果返回给变量A。

A=$(date)等价于反引号。

设置环境变量

基本语法

export 变量名 = 变量值 -> 将shell便变量输出为环境变量/全局变量。
source 配置文件 -> 让修改后的配置信息立即生效。
echo $变量名 -> 查询环境变量的值。

Shell中的注释

# -> 单行注释。
:<<! 内容 ! -> 多行注释。

位置参数

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

基本语法

$n -> n为数字,$0代表命令行本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10}。
$* -> 这个变量代表命令行中所有参数,$*把所有参数看成一个整体。
$@ -> 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待。
$# -> 这个变量代表命令行中所有参数的个数。

预定义变量

就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用。

基本语法

$$ -> 当前进程的进程号(PID)。
$! -> 后台运行的最后一个进程的进程号(PID)。
$? -> 最后一次执行命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行。如果这个变量的值为非0(具体哪个数,由命令自己来决定)则证明上一个命令执行不正确。

运算符

学习在shell中进行各种运算操作。

基本语法

"$((运算式))"或"$[运算式]"或者expr m + n
注意expr运算符间要有空格,如果希望将expr的结果赋值给某个变量,使用``
\* -> 乘
/ -> 除
% -> 取余

条件判断

基本语法

[ condition ] 注意:condition前后要有空格。非空返回true,可使用$?验证。

判断语句

1. 字符串判断
	=
2. 两个整数的比较
	-lt 小于
	-le 小于等于
	-eq 等于
	-gt 大于
	-ge 大于等于
	-ne 不等于
3. 按照文件权限进行判断
	-r 有读的权限
	-w 有写的权限
	-x 有执行的权限
4. 按照文件类型进行判断
	-f 文件存在并且是一个常规文件。
	-e 文件存在。
	-d 文件存在并是一个目录。
	
实例
	if [ condition ]
	then 
		action
	fi

流程控制

单分支

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
注意:while和[有空格,条件判断式和[也有空格。

read语句

read读取控制台输入

基本语法

read (选项) (参数)
选项
	-p:指定读取值时的提示符。
	-t:指定读取时等待的时间(秒),如果没有在指定的时间内输入,就不用再等了。
参数
	变量:指定读取值的变量名。

函数

shell编程和其它编程语言一样,有系统函数,也可以自定义函数。

系统函数

basename基本语法

返回完整路径最后/的部分,常用于获取文件名。

basename [pathname] [suffix]
	basename命令会删掉所有前缀包括最后一个/字符,然后将字符串显示出来。
选项:
	suffix为后缀,如果suffix被指定了,basename会将pathname中的suffix去掉。
dirname基本语法

返回完整路径最后/的前面部分,常用于返回路径部分。

dirname 文件绝对路径
	从给定的包含绝对路径的文件中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)。

自定义函数

基本语法
function funname[()]{
	Action;
	[return int;]
}

调用直接写函数名:funname [值]

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值