Linux–CentOS
基础篇
Linux介绍
- Linux是一款操作系统,免费、开源、安全、高效、稳定,处理高并发强
- 发行版:Redhat、CentOS、Ubuntu等
VMware设置–网络适配器
- 桥连接模式:Linux可以和其他系统通信,但可能造成IP冲突
- NAT模式(推荐):网络地址转换方式:Linux可以访问外网,不会造成IP冲突
- 主机模式:Linux是一个独立的主机,不能访问外网
文件系统目录结构
Linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录。Linux以文件的形式管理设备。(在Linux的系统里,一切皆文件)
具体的目录结构
-
/bin (/usr/bin、/usr/local/bin): 是Binary的缩写,这个目录存放着最常使用的命令
-
/sbin (/usr/sbin、/usr/local/sbin): s指Super User,这里存放的是系统管理员使用的系统管理程序
-
/home : 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账户命名的
-
/root : 该目录为系统管理员,也称作超级权限者的用户主目录
-
/etc : 所有的系统管理所需要的配置文件和子目录
-
/usr (Unix System Resource) : 用户的很多应用程序和文件都放在这个目录下,类似于Windows下的Program Files目录
-
/usr/local : 安装软件所在的目录,一般是通过编译源码的方式安装程序
-
/boot : 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
-
/porc (慎动): 该目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
-
/srv (慎动): service缩写,该目录存放一些服务启动之后需要提取的数据
-
/sys (慎动): 这是Linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs
-
/tmp : 该目录用于存放一些临时文件
-
/dev : 类似Windows的设备管理器,把所有的硬件用文件的形式储存
-
/media : Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下
-
/mnt : 该目录是为了让用户临时挂载别的文件系统的,可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容(共享文件夹)
-
/opt : 存放软件安装包的目录
-
/var : 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件
-
/selinux : (Security-Enhanced Linux)是一种安全子系统(类似360),它能控制程序只访问特定文件
-
/lib : 系统开机所需要的最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
-
/lost & /found : 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
实操篇
远程控制Linux系统(登录、上传下载文件)
- 软件准备:Xshell(远程登录到Linux的软件)、Xftp(上传和下载文件或软件)
- 配置:在Linux下输入命令
ifconfig
获取IP地址,在Xshell中建立连接(端口号为22)
Vi&Vim的使用
1. Vi和Vim的三种常见模式
-
正常模式/一般模式
在正常模式下,可以使用快捷键。可以使用[上下左右]按键来移动光标,使用[删除字符]或[删除整行]来处理档案内容,使用[复制粘贴]来处理文件数据
-
插入模式
在插入模式下,可以编辑输入内容
按下
i,I,o,O,a,A,r,R
等任何一个字母后可进入编辑模式,一般来说按i(insert)
即可 -
命令行模式
在命令行模式下,可以提供相关指令,完成读取、存盘、替换、离开vim、显示行号等操作
2. Vi和Vim模式的相互切换
3. Vi和Vim快捷键
- 拷贝当前行:
yy
;拷贝当前行向下的n行:nyy
;粘贴:p
- 删除当前行:
dd
;删除当前行向下的n行:ndd
- 在文件中查找某个单词:命令行下
/+关键字
,回车查找,输入n
可查找下一个 - 设置文件的行号:命令行下
:set nu
;取消文件的行号:命令行下:set nonu
- 跳到文档最末行:正常模式下输入
G
;跳到文档最首行:正常模式下输入gg
- 撤销操作:正常模式下输入
u
- 光标移到指定行:可先显示行号(命令行模式下
:set nu
),输入行号,按下快捷键(shift+g) - 官方文档:
vimtutor
Linux关机重启,用户登录注销
关机&重启
shutdown
shutdown -h now
:立即关机
shutdown -h 1
:1分钟后关机
shutdown -r now
:立即重启
halt
直接使用,效果等价于关机
reboot
直接使用,重启系统
sync
将内存的数据同步到磁盘
用户登录注销
- 介绍
- 登录时尽量少用root账号登录,因为root是系统管理员,有最大的权限,为避免操作失误,可以用普通用户登录,登录后再用
su - 用户名
命令来切换成系统管理员身份 - 在提示符下输入
logout
即可注销用户 - 注意:
logout
注销指令在图形运行级别无效,在运行级别3下有效
用户管理
用户的创建、删除、指定密码、查询
- 家目录
/home/
目录下有各个创建的用户对应的家目录,当用户登录时,会自动进入到自己的家目录
- 介绍
- Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
- Linux的用户需要至少属于一个组
-
语法
useradd 用户名
:创建用户,当创建用户成功后,会自动创建和用户同名的家目录useradd -d 指定目录 用户名
:创建新用户,并指定用户的家目录passwd 用户名
:给用户指定密码userdel 用户名
:删除用户,但保留家目录userdel -r 用户名
:删除用户以及用户家目录(不推荐)id 用户名
:查询用户信息
切换用户
-
介绍
在操作Linux中,如果当前用户的权限不够,可以通过指令,切换到高权限用户,例如root
-
语法
su - 用户名
-
注意
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
- 当需要返回到原来用户时,使用
exit
指令
用户组的管理
-
用户组
类似于角色,系统可以对有共性的多个用户进行统一的管理
-
语法
groupadd 组名
:增加组groupdel 组名
:删除组useradd -g 用户组 用户名
:增加用户时指定归属组usermod -g 用户组 用户名
:修改用户的归属组usermod -d 目录名 用户名
:改变用户登录的初始目录
用户和组的配置文件
-
/etc/passwd
文件用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
-
/etc/shadow
文件口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
-
/etc/group
文件组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
实用指令
运行级别和找回root密码
- 运行级别
- 0:关机(系统停机状态,系统默认运行级别不能设为0,否则不能正常启动)
- 1:单用户工作状态(root权限,用于系统维护,可找回丢失密码,禁止远程登录)
- 2:多用户状态无网络服务(没有NFS)
- 3:多用户状态有网络服务(登录后进入控制台命令模式)
- 4:系统未使用,保留给用户
- 5:图形界面(X11控制台,登录后进入图像GUI模式)
- 6:系统重启(系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动)
开机的一般流程:
开机 => BIOS => /boot => init进程 => 运行级别 => 运行级对应的服务
- 注意
- 常用运行级别是3和5,要修改默认的运行级别可以改文件:
/etc/inittab
中的id:5:initdefault:
这一行中的数字 id:5:initdefault:
:指开机时进入第五运行级别(即图形界面)- 指令:
init 数字012356(没有4)
- 面试题:若root密码丢失,如何找回root密码(不同版本方法不同)
centOS 6:
-
进入单用户模式:开机 -> 在引导时按回车键 -> 看到一个界面输入e -> 看到一个新的界面,选中第二行(编辑内核),再输入e -> 在这行输入空格+1(单用户模式)后按回车键 -> 输入b,进入单用户模式
-
在单用户模式下,使用
passwd
指令修改root密码
centOS 7:
-
重启系统,在开机过程中,快速按下键盘上的方向键上和下。目的是告知引导程序,我们需要在引导页面选择不同的操作,以便让引导程序暂停。按键盘 e 键,进入编辑模式,找到 linux16 的那一行。将光标一直移动到
LANG=en_US.UTF-8
后面,空格,再追加init=/bin/sh
。注意,需要写在UTF-8
后,保持再同一行,并注意空格。 -
按下Ctrl+x进行引导启动,进入单用户模式后,挂载根目录
mount -o remount, rw /
,更改密码passwd root
,更新系统信息touch ./autorelabel
,重启系统exec /sbin/reboot
帮助指令
-
man
指令man [命令或配置文件]
:获得帮助信息 -
help
指令help 命令
:获得shell内置命令的帮助信息 -
info
指令类似
man
,和man
不同的是,info
命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一个小章节
文件目录类
-
pwd
指令pwd
:显示当前工作目录的绝对路径 -
ls
指令ls [选项] [目录或文件]
:列出目录的内容常用选项:
-a
:显示当前目录所有的文件和目录
-l
:以列表的方式显示信息
-R
:递归显示整个目录 -
cd
指令cd [参数]
:切换到指定目录(绝对路径、相对路径)常用参数:
cd ~
或cd
:回到家目录
cd ..
:回到当前目录的上一级目录 -
mkdir
指令mkdir [选项] 要创建的目录
:创建目录常用选项:
-p
:创建多级目录 -
rmdir
指令rmdir [选项] 要删除的空目录
:删除空目录注意:
rmdir
删除的是空目录,若目录下有内容则无法删除 若要删除非空目录,则使用指令
rm -rf 要删除的目录
-
touch
指令touch 文件名称(可创建多个文件)
:创建空文件 -
cp
指令cp [选项] 文件或目录 目录
:拷贝文件或目录到指定目录常用选项:
-r
:递归复制整个文件夹注意:
强制覆盖不提示:
cp
改为\cp
-
rm
指令rm [选项] 要删除的文件或目录
:移除文件或目录常用选项:
-r
:递归删除整个文件夹
-f
:强制删除不提示 -
mv
指令mv 旧名 新名
:重命名文件mv 文件或目录 目录
:移动文件或目录 -
cat
指令cat [选项] 要查看的文件
:查看文件内容,以只读方式打开常用选项:
-n
:显示行号注意:
cat
只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令| more
-
more
指令more
指令是一个基于Vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,并且内置了若干快捷键more 要查看的文件
:查看文件内容快捷键:
操作 功能说明 空格键(space)
向下翻一页 回车键(Enter)
向下翻一行 q
立刻离开more,不再显示该文件内容 Ctrl+F
向下滚动一屏 Ctrl+B
返回上一屏 =
输出当前的行号 :f
输出文件名和当前的行号 -
less
指令less
指令用来分屏查看文件内容,它的功能与more
类似,但比more
指令更强大,支持各种显示终端。less
指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示的需要来加载内容,对于显示大型文件具有较高的效率less [要查看的文件]
:查看文件内容快捷键:
操作 功能说明 空格键(space)
向下翻一页 回车键(Enter)
向下翻一行 [page down]
向下翻一页 [page up]
向上翻一页 /字串
向下搜寻[字串], n
:向下查找,N
:向上查找?字串
向上搜寻[字串], n
:向上查找,N
:向下查找q
离开less这个程序 -
>
指令和>>
指令>
:输出重定向(会将原来的文件的内容覆盖)>>
:追加(不会覆盖原来的文件,而是追加到文件的尾部)语法:
ls -l > 文件
:列表的内容覆盖写入文件中,文件不存在则创建文件ls -al >> 文件
:列表的内容追加到文件的末尾cat 文件1 > 文件2
:将文件1的内容覆盖写入到文件2echo "内容" >> 文件
:将内容写入文件 -
echo
指令echo [选项] [输出内容]
:输出内容到控制台 -
head
指令:用于显示文件开头部分内容,默认情况下显示文件的前10行内容head 文件
:查看文件前10行内容head -n 行数k 文件
:查看文件前k行内容 -
tail
指令:用于输出文件尾部的内容,默认情况下显示文件后10行的内容tail 文件
:查看文件后10行内容tail -n 行数k 文件
:查看文件后k行内容tail -f 文件
:实时跟踪文档的所有更新 -
ln
指令:软链接也叫符号链接,类似于Windows中的快捷方式,主要存放了链接其他文件的路径ln -s [原文件或目录] [软链接名]
:给原文件或目录创建一个软链接注意:
使用
pwd
指令查看目录时,仍然看到的是软链接所在的目录 删除软链接:
rm -rf 软链接名
,注意软链接后不能带斜杠/
,会把链接的内容删掉 -
history
指令history
:查看已经执行过的历史指令history 数字k
:查看最近使用的k条指令!数字
:执行对应的指令
时间日期类
-
date
指令:显示当前日期date
:显示当前时间date +%Y
:显示当前年份date +%m
:显示当前月份date +%d
:显示当前是哪一天date "+%Y-%m-%d %H:%M:%S"
:显示年月日时分秒(中间格式可以自己改)date -s 时间(字符串形式)
:设置日期hwclock -s
:改回去原来的时间 -
cal
指令cal
:显示本月日历cal 年份
:显示全年日历
搜索查找类
-
find
指令find [搜索范围] [选项]
:从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端选项:
选项 功能 -name 文件名(可用通配符)
按照指定的文件名查找模式查找文件 -user 用户名
查找属于指定用户名的所有文件 -size (+/-)文件大小(单位可根据实际情况调整)
按照指定的文件大小查找文件(+/-表示大于/小于) -
locate
指令locate 搜索文件
:快速定位文件路径。补充:
locate
指令利用事先建立的系统中所有文件名称及路径的locate
数据库实现快速定位给定的文件。locate
指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate
时刻注意:
由于
locate
指令基于数据库进行查询,所以第一次运行时,必须用**updatedb
**指令创建locate
数据库 -
grep
指令和管道符号|
grep
过滤查找,管道符|
表示将前一个命令的处理结果输出传递给后面的命令处理,例子:cat hello.txt | grep hello
:通过管道符|
,将hello.txt的内容输出给grep hello
指令,查找hello.txt文件中的hello字符串grep [选项] 查找内容 源文件
选项:
-n
:显示匹配行及行号
-i
:忽略字母大小写
压缩、解压类
-
gzip
/gunzip
指令gzip 文件(可选多个文件)
:压缩文件,只能将文件压缩为***.gz
**文件(压缩后原文件不保留)gunzip 文件.gz
:解压缩文件命令 -
zip
/unzip
指令zip [选项] 文件名.zip 压缩的内容(文件或目录)
:压缩文件和目录的命令unzip [选项] 文件.zip
:解压缩文件zip
常用选项:
-r
:递归压缩,即压缩目录unzip
常用选项:
-d 目录
:指定解压后文件的存放目录 -
tar
指令tar
指令是打包指令,最后打包的文件是*.tar.gz
文件tar [选项] 文件名.tar.gz 打包的内容
:打包目录,压缩后的文件格式:*.tar.gz
选项:
选项 功能 -c
产生 .tar
打包文件-v
显示详细信息 -f
指定压缩后的文件名 -z
打包同时压缩 -x
解包 .tar
文件-C 目录
解压到指定目录 打包压缩:
-zcvf
解压:
-zxcf
组管理和权限管理
组管理
-
组的介绍
在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者、所在组、其他组的概念
-
文件/目录的所有者、所在组
文件/目录的所有者、所在组默认是创建者及创建者所在的组
ls -ahl
:查看文件的所有者、所在组 -
其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
权限管理
-
权限介绍
ls -l
显示的内容中,按从左到右的顺序: 第0位确定文件类型(
d,-,l,c,b
) 第1-3位确定所有者(该文件的所有者)拥有该文件的权限(
r,w,x
) ——User
第4-6位确定所属组(同用户组)拥有该文件的权限(
r,w,x
) ——Group
第7-9位确定其他用户拥有该文件的权限(
r,w,x
) ——Other
数字:对于文件来说,表示硬链接数;对于目录来说,表示子目录数
用户名
组名
数字:表示文件大小(单位是字节
Byte
),如果是目录,则显示4096(字节)
最后修改日期
文件名
-
文件类型(
d,-,l,c,b
)-
表示普通文件d
表示目录l
表示软链接c
表示字符设备文件,如键盘、鼠标b
表示块文件,如硬盘 -
rwx
权限-
rwx
作用到文件r(read)
:可以读取,查看w(write)
:可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写(w
)权限,才能删除该文件x(execute)
:可以被执行 -
rwx
作用到目录r(read)
:可以读取,ls
查看目录内容w(write)
:可以修改,目录内创建、删除、重命名文件x(execute)
:可以进入该目录
-
-
修改权限
-
修改权限——
chmod
通过
chmod
指令,可以修改文件或者目录的权限用户:
u
:所有者;g
:所有组;o
:其他用户;a
:所有用户
-
通过
+、-、=
修改权限chmod u=权限,g=权限,o=权限 文件/目录
chmod 用户+权限 文件/目录
chmod 用户-权限 文件/目录
-
通过数字修改权限
r=4, w=2, x=1; rwx=4+2+1=7
如:
chmod u=rwx,g=rx,o=x 文件目录名
相当于chmod 751 文件目录名
-
-
修改文件所有者——
chown
chown 新用户名 文件
:修改文件所有者chown 新用户名:新组名 文件
:修改文件的所有者和所在组参数:
-R
:如果是目录,则使其下所有子文件或目录递归生效 -
修改文件所在组——
chgrp
chgrp 新组名 文件
:修改文件所在的组参数:
-R
:递归其下所有子文件或目录
练习
建立两个组(神仙immortal
、妖怪monster
)
建立四个用户(唐僧ts
、悟空wk
、八戒bj
、沙僧ss
)
设置密码(123)
把悟空、八戒放在妖怪组,唐僧、沙僧放在神仙组
用悟空建立一个文件monkey.txt
,内容是i am monkey
给八戒rw
的权限
八戒修改monkey.txt
,加入一句话i am pig
唐僧、沙僧对该文件没有权限
把沙僧放入妖怪组
沙僧修改monkey.txt
,加入一句话我是沙僧,我是妖怪
任务调度
-
介绍
任务调度:是指在某个时间执行特定的命令或程序
任务调度分类:
- 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等
- 个别用户工作:个别用户可能希望执行某些程序,比如对
MySQL
数据库的备份
-
语法
crontab [选项]
service crond restart
:重启任务调度常用选项:
选项 功能 -e
编辑 crontab
定时任务-l
查询 crontab
任务-r
删除当前用户的所有 crontab
任务 -
例子
设置任务调度文件:
/etc/crontab
设置个人任务调度,执行
crontab -e
命令输入任务
*/1 * * * * date > date.txt
(每小时的每分钟执行命令)到调度文件参数说明:
项目 含义 范围 第一个 *
一小时当中的第几分钟 0-59 第二个 *
一天当中的第几小时 0-23 第三个 *
一个月当中的第几天 1-31 第四个 *
一年当中的第几月 1-12 第五个 *
一周当中的星期几 0-7(0和7都代表星期日) 特殊符号:
特殊符号 含义 *
代表任何时间。比如第一个 *
代表一个小时中每分钟都执行一次命令,
代表不连续的时间。比如 0 8,12,16 * * *
代表每天的8点,12点,16点都执行一次命令-
代表连续的时间范围。比如 0 5 * * 1-6
代表周一到周六的5点执行命令*/n
代表每隔多久执行一次。比如 */10 * * * *
代表每隔10分钟执行一次命令注意:星期几和几号最好不要同时出现,容易产生混乱
磁盘分区
- 分区的方式
mbr
分区:- 最多支持四个主分区
- 系统只能安装在主分区
- 拓展分区要占一个主分区
MBR
最大只支持2TB,但拥有最好的兼容性
gtp
分区:- 支持无限多个主分区(但操作系统可能限制,比如Windows下最多128个分区)
- 最大支持18EB的大容量(
1EB=1024PB, 1PB=1024TB
) - Windows7 64位以后支持
gtp
- Linux分区
-
原理介绍
- 对Linux来说无论有几个分区,分给哪个目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分
- Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,并且将一个分区和一个目录联系起来,这时要载入的一个分区使它的存储空间在一个目录下获得
-
硬盘说明
- Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
- 对于IDE硬盘,驱动器标识符为“hdx”。“hd”表面分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“”代表分区,前四个分区用数字1到4表示,它们是主分区或拓展分区,从5开始表示逻辑分区。例如,hda3表示第一个IDE硬盘上的第三个主分区或拓展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或拓展分区
- 对于SCSI硬盘,则标识为“sdx~”。SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样
-
查看当前系统的分区情况
指令:(老师不离开)
lsblk -f
:查看系统的分区和挂载的情况lsblk
:可查看分区的大小
- 添加新硬盘(centOS 7)
-
虚拟机添加硬盘
添加后Linux需重启
重启后
lsblk -f
查看系统分区情况
-
分区
fdisk /dev/sdb
:
依次输入
n
,p
:
之后回车默认:
分配完成后,输入
w
保存:
分区完成:
-
格式化
mkfs.xfs -f /dev/sdb1
:
格式化完成:
-
临时挂载
mkdir /home/newdisk1
:在home
目录下创建一个文件夹newdisk1
挂载到
newdisk1
目录下,mount -t xfs /dev/sdb1 /home/newdisk1
,完成后查看分区情况:
-
永久挂载
修改系统挂载硬盘的文件:
vim /etc/fstab
添加配置
/dev/sdb1 /home/newdisk1 xfs defaults 0 0
最后重启
sync
,reboot
-
磁盘查询
df [选项]
:查询系统整体磁盘使用情况du [选项] 目录
:查询指定目录的磁盘占用情况,默认为当前目录选项:
选项 | 功能 |
---|---|
-h | 带计量单位 |
-s | 指定目录占用大小汇总 |
-a | 含文件 |
--max-depth=k | 子目录深度k |
-c | 列出明细的同时,增加汇总值 |
ls [选项] 目录 | grep "^-" | wc -l
:统计某个目录下文件的个数
ls [选项] 目录 | grep "^d" | wc -l
:统计某个目录下目录的个数
选项:参考ls
指令的选项
进程管理
进程介绍
- 在Linux中,每个执行的程序(代码)都称为一个进程。每个进程都分配一个ID号
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器
- 每个进程都可能以两种方式存在:前台和后台,前台进程就是用户屏幕上可以进行操作的,后台进程则是实际在操作
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束
查询进程
-
显示系统执行的教程
ps [选项]
:查看进程
选项 | 功能 |
---|---|
-a | 显示当前终端的所有教程信息 |
-u | 以用户的格式显示教程信息 |
-x | 显示后台进程运行的参数 |
-e | 显示所有进程 |
-f | 全格式 |
常用:
ps -aux
:查看系统进程
ps -aux |more
:以more方式打开
ps -aux | grep xxx
:过滤出所需内容
指令说明:(System V展示风格)
指令 | 说明 |
---|---|
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
:以全格式显示当前所有进程
ps -ef | grep xxx
:过滤出所需内容
指令说明:(BSD风格)
指令 | 说明 |
---|---|
UID | 用户ID |
PID | 进程ID |
PPID | 父进程ID |
C | CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高 |
STIME | 进程启动的时间 |
TTY | 完整的终端名称 |
TIME | CPU时间 |
CMD | 启动进程所用的命令和参数 |
终止进程
-
介绍
若某个进程执行一半需要停止时,或者已消耗了很大的系统资源时,此时可以考虑停止进程
-
语法
kill [选项] 进程号
:通过进程号结束进程killall 进程名称
:通过进程名称结束进程(支持通配符),在系统因负载过大而变得很慢时有用常用选项:
-9
:表示强迫进程立即停止 -
查看进程树
pstree [选项]
常用选项:
-p
:显示进程的PID
-u
:显示进程的所属用户
服务管理
-
介绍
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,sshd防火墙等),因此称为守护进程
-
指令
service 服务名 [start/stop/restart/reload/status]
注意:
在centOS 7.0后,不再使用
service
,而是systemctl
-
查看服务
setup 回车
ls -l /etc/init.d/
-
chkconfig
指令:可以给每个服务的各个运行级别设置自启动/关闭chkconfig --list | grep xxx
:过滤出所需服务chkconfig 服务名 --list
:查看服务chkconfig --level 运行级别k 服务名 on/off
:设置某个服务在不同运行级别下的自启动/关闭(需要重启才能生效)
监控服务
- 动态监控进程
-
介绍
top
与ps
指令类似,都用来显示正在执行的进程。top
与ps
最大的不同之处,在于top
在执行一段时间后可以更新正在运行的进程 -
语法
top [选项]
选项:
选项 功能 -d 秒数
指定 top
指令每隔几秒更新,默认是3秒-i
使 top
不显示任何闲置或者僵死进程-p
通过指定监控进程ID来仅仅监控某个进程的状态 交互操作:
操作 功能 P
以CPU使用率排序(默认) M
以内存使用率排序 N
以PID排序 u
提示输入用户,可查询指定用户的进程 k
提示输入PID,可杀死指定进程 q
退出 top
- 监控网络状态
-
netstat
指令netstat [选项]
:查看系统网络情况选项:
选项 说明 -an
按一定顺序排列输出 -p
显示哪个进程在调用
RPM包与YUM包管理
RPM包
-
介绍
rpm包是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有
.rpm
的拓展名。rpm全称是RedHat Package Manager
(RedHat软件包管理工具),类似Windows
的setup.exe
-
rpm包的管理
-
查询rpm包
rpm -qa
:查询所安装的所有rpm软件包rpm -qa | more
:以more方式打开rpm -qa | grep 软件包名
:过滤出所需的软件包rpm -q 软件包名
:查询软件包是否安装rpm -qi 软件包名
:查询软件包信息rpm -ql 软件包名
:查询软件包中你的文件rpm -qf 文件全路径名
:查询文件所属的软件包 -
卸载rpm包
rpm -e 软件包名
可带上
--nodeps
强制删除(不推荐) -
安装rpm包
rpm -ivh rpm包全路径名称
参数说明:
i
:install
安装
v
:verbose
提示
h
:hash
进度条
-
YUM包
-
介绍
YUM是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
-
yum包的管理
-
查询yum包
yum list
:查询所有yum包yum list | grep 软件包名
:过滤出所需软件包 -
安装yum包
yum install 软件包名
:安装指定软件包 -
卸载yum包
yum remove 软件包名
:卸载软件包
-
Linux–Ubuntu
root用户设置
-
介绍
安装Ubuntu成功后,都是普通用户权限,没有最高root权限,需要使用root权限的时候,需要在命令前面加上
sudo
如果没有给root设置初始密码,则无法通过
su
命令切换到root用户,会抛出问题:su:Authentication failure
-
给root用户设置密码
sudo passwd
,输入当前用户密码后,设定root用户密码$代表一般用户,#代表root用户
APT软件管理
-
介绍
apt是Advanced Packaging Tool的简称,是一款安装包管理工具。在Ubuntu下,使用
apt
命令可以用于软件包的安装、删除、清理等,类似于Windows中的软件管理工具 -
软件操作的相关命令(
package
为具体包名)(在普通用户下需要加sudo
前缀)sudo apt-get update
:更新源sudo apt-get install package
:安装包sudo apt-get remove package
:删除包sudo apt-cache search package
:搜索软件包sudo apt-cache show package
:获取包的相关信息,如说明、大小、版本等sudo apt-get install package --reinstall
:重新安装包sudo apt-get -f install
:修复安装sudo apt-get remove package --purge
:删除包,包括配置文件等sudo apt-get build-dep package
:安装相关的编译环境sudo apt-get upgrade
:更新已安装的包sudo apt-get dist-upgrade
:升级系统sudo apt-cache depends package
:了解使用该包依赖哪些包sudo apt-cache rdepends package
:查看该包被哪些包依赖sudo apt-get source package
:下载该包的源代码 -
更新Ubuntu软件下载地址为清华镜像源
清华镜像源:https://mirrors.tuna.tsinghua.edu.cn/
-
cd /etc/apt/
:切换到/etc/apt/目录下 -
sudo cp sources.list sources.list.bak
:备份Ubuntu默认的源地址 -
echo '' > sources.list
:清空文件内容(需要先切换到root用户su - root
) -
替换文件内容,更新源服务器列表
-
sudo apt-get update
:更新源
-
使用SSH远程登录
-
介绍
SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所指定;SSH为建立在应用层和传输层基础上的安全协议
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。几乎所有UNIX平台——包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH
使用SSH服务,需要安装相应的服务器和客户端
和CentOS不一样,Ubuntu默认没有安装SSHD服务,因此默认不能进行远程登录
-
安装SSH和启用
sudo apt-get install openssh-server
:安装SSH服务端和客户端service sshd restart
:启动sshd服务,会监听22号端口 -
从Linux系统客户机远程登录Linux系统服务机
两台Linux都需要安装
openssh-server
CentOS:
yum install openssh-server
Ubuntu:
sudo apt-get install openssh-server
连接:
ssh 当前用户名@待连接Linux的ip地址
若出现访问错误,可查看是否有该文件:
~/.ssh/known_ssh
,尝试删除该文件解决问题退出:
exit
或logout
Linux–Shell编程
Shell简介
-
为什么要学习Shell编程
- Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理
- 对于JavaEE和Python程序员来说,工作的需要,可能需要编写一些Shell脚本进行程序或者服务器的维护,比如编写一个定时备份数据库的脚本
- 对于大数据程序员来说,需要编写Shell程序来管理集群
-
Shell是什么
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统程序,用户可以用Shell来启动、挂起、停止甚至编写一些程序
-
Shell脚本的执行方式
- 脚本格式要求
- 脚本要以
#!/bin/bash
开头 - 脚本需要有可执行权限
- 脚本要以
- 脚本的常用执行方式
- 输入脚本的绝对路径或相对路径(需要有可执行权限)
sh 脚本
,不需要赋给脚本可执行权限(不推荐)
- 脚本格式要求
Shell杂项
注释
单行注释:
#这是单行注释
多行注释:
:<<!
这
是
多
行
注
释
!
以后台方式运行
在shell脚本中,以后台方式执行其他shell脚本:在行尾添加&
Shell变量
变量
- 介绍
- Linux Shell中的变量分为,系统变量和用户自定义变量
- 系统变量:$HOME、$PWD、$SHELL、$USER等等,比如
echo $HOME
等等 - 显示当前shell中的所有变量:
set
- 定义
- 语法
- 定义变量:
变量=值
- 撤销变量:
unset 变量
- 声明静态变量:
readonly 变量
,注意:不能unset
- 定义变量:
- 规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头
- 等号两侧不能有空格
- 变量名称一般习惯为大写
- 将命令的返回值赋给变量
- eg:
A=`ls -la`
反引号,运行里面的命令,并把结果返回给变量A - eg:
A=$(ls -la)
等价于反引号
- eg:
- 语法
环境变量
export 变量名=变量值
:将shell变量输出为环境变量
source 配置文件
:让修改后的配置信息立即生效**(配置环境变量后需使其生效)**
echo $变量名
:查询环境变量的值
位置参数变量
-
介绍
当执行一个shell脚本时,如果希望获得命令行的参数信息,就可以使用位置参数变量
-
语法
$n
:n为数字,$0
代表命令本身,$1
-$9
代表第一到第九个参数,十以上的参数,需要用大括号包含,如${10}
$*
:这个变量代表命令行中的所有参数,$*
把所有的参数统一对待(当做一个整体)$@
:这个变量也代表命令行中的所有参数,不过$@
把每个参数区分对待$#
:这个变量代表命令行中的所有参数的个数
预定义变量
-
介绍
是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
-
语法
$$
:当前进程的进程号(PID)$!
:后台运行的最后一个进程的进程号(PID)$?
:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行有错误
Shell运算符
语法:
$((运算式))
或$[运算式]
(推荐)expr m +,- n
:加,减(注意expr运算符之间要有空格)expr m \*,/,% n
:乘,除,取余
Shell判断语句
语法:
[ condition ]
:非空返回true,可使用$?
验证(0为true,>1为false)(注意condition前后要有空格)
常用的判断条件:
-
两个整数/字符串比较
=
:字符串比较-lt
:小于-le
:小于等于-eq
:等于-gt
:大于-ge
:大于等于-ne
:不等于 -
按照文件权限进行判断
-r
:有读的权限-w
:有写的权限-x
:有执行的权限 -
按照文件类型进行判断
-f
:文件存在并且是一个常规的文件,即不是隐藏文件-e
:文件存在-d
:文件存在并且是一个目录
Shell流程控制
if
- 语法
if [ condition ];then
程序
fi
# 推荐
if [ condition ]
then
程序
elif [ condition ]
then
程序
fi
注意中括号与条件判断式之间必须有空格
case
- 语法
case $变量名 in
"值1")
程序1
;;
"值2")
程序2
;;
...省略其他分支...
*)
程序(default执行)
;;
esac
for
- 语法
for 变量 in 值1 值2 值3...
do
程序
done
for ((初始值;循环控制条件;变量变化))
do
程序
done
- 举例
while
- 语法
while [ condition ]
do
程序
done
Shell读取控制台输入
-
语法:
read (选项) 参数
选项:
-p
:指定读取值时的提示符
-t
:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待参数:
变量:指定读取值的变量名
-
例子
Shell函数
系统函数
-
basename
basename
命令会删掉所有的前缀,包括最后一个"/"字符,返回完整路径最后/的部分,常用于获取文件名basename [pathname] [suffix]
basename [string] [suffix]
选项:
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉
-
dirname
返回完整路径最后的/的前面的部分,常用于返回路径部分
dirname 文件绝对路径
:从给定的包含绝对路径的文件名中除去文件名(非目录的部分),然后返回剩下的路径(目录的部分)
自定义函数
- 函数定义:[]为可选项
[ function ] funname[()]
{
Action;
[return int;]
}
-
函数调用
funname [值]
-
举例
输入两个参数,求和