Linux知识点

Linux基础篇

1.桥接模式:虚拟系统可以和外部系统相互通讯,但是容易造成ip冲突,只能使用与物理机同一个网段

2.nat模式:NAT模式与外界通话需要经过物理机(的NAT转换),不会多占一个局域网IP,可以与外部系统相互通讯,不会造成ip冲突,但是外部设备也无法访问虚拟设备

3.主机模式:不和外部通讯

4.Linux会把所有硬件映射成文件的形式存储在dev文件夹中

在Linux系统中,一切皆为文件

5.常用目录

	/bin   /usr/bin   /usr/local/bin
	是binary的缩写,存放着常用指令,比如ls,yum
	 
	/sbin    /usr/sbin   /usr/local/sbin
	s是super,这里存放的是系统管理员使用的程序或命令
	 
	/home
	存放普通用户的文件夹
	 
	/root
	系统管理员root用户的主目录
	 
	/lib
	系统开机所需要的动态共享库,类似Windows系统的dll文件,几乎所有应用程序都要使用这些共享库
	 
	/lost+found 
	这个目录一般是空的,当系统非法关机以后就会存放一些文件
	 
	/etc
	所有系统管理需要的配置文件和子目录,比如安装MySQL数据库的my.conf
	 
	/usr
	这是一个非常重要的目录,用户安装的程序默认安装在这里,就像windows目录下的program files目录
	 
	/boot(不能动)
	Linux启动的核心目录,不要动,动了就启动不了
	 
	/proc(不能动)
	是一个虚拟目录,是系统内存的映射,访问这个目录可以看到系统信息
	 
	/srv(不能动)
	service的缩写,存放一些服务启动以后需要提取的数据
	 
	/sys(不能动)
	存放的文件夹系统,sysfs
	 
	/tmp
	临时文件的存放目录
	 
	/dev
	类似windows的设备管理器,把所有硬件用文件的形式存储在这里
	 
	/media
	Linux自动识别的设备,比如U盘,光驱,识别后Linux会把识别到的设备挂载到这个目录
	 
	/mnt
	系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录查看里边的内容
	 
	/opt
	给主机额外安装软件所存放的目录,比如Oracle数据库,默认为空
	 
	/usr/local
	软件安装完以后,存放的目录,以源码安装的方式安装的程序一般存放在这了
	 
	/var
	不断扩充的的目录,习惯将经常被修改的目录放在这个目录,包括日志文件
	 
	/selinux
	类似Linux的杀毒软件

6.vim的用法

7.关机开机以及登录注销指令

shutdown -h now立刻进行关机
shutdown1分钟后会关机(等同下面)
shutdown -h 11分钟后会关机
shutdown -r now现在重新启动计算机
halt关机,作用和上面一样
reboot现在重新启动计算机
sync将内存数据同步到磁盘

在执行关机之前一定要先运行一次sync,防止翻车

注销账号:logout,在图形界面下无法使用logout

8.用户操作

通过useradd命令来创建用户,会在/home文件夹下生成一个同名的家目录

useradd -d 可以指定目录

user -d /home/test king

在/home 文件夹下创建一个test目录,test目录属于用户king

passwd 用户名

一定要加用户名,否则是给当前登录的账户设置密码

userdel 用户名

代表删除某个用户,但是并不删除他的家目录

userdel -r 用户名

代表删除某个用户的同时,删除用户的家目录
一定要谨慎
报错**userdel: user xxx is currently used by process xxx**
代表该用户占用了进程,需要先su到目标账户,输入exit退出用户后,再删除
从账号权限高的用户切换到用户权限低的用户不需要输入密码,反之则需要输入密码
退出到原来账号可以用exit/logout命令

查看目前使用的用户可以使用who am i命令

9.用户组

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

groupadd 组名

用groupadd命令来添加组别

groupdel 组名

用groupdel命令来删除组

useradd -g 组名 用户名

未指定组名会自动创建一个与用户名相同的组名

usermod -g 组名 用户名

usermod 命令可以将某个用户切换到别的组中

10.用户和组相关文件

etc/passwd 文件

用户(user)的配置文件,记录用户的各种信息

每行的含义:用户名:口令(X或空白,加密的):用户标识号(uid):组标识号(gid):注释行描述:主目录(用户家目录):登录shell

etc/shadow文件

口令的配置文件

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

/etc/group 文件

组group的配置文件,记录Linux包含的组的信息

每行含义:组名:口令:组标识号:组内用户列表

passwd 用户名

给某个用户指定密码

11.常用命令

运行级别

	0 关机
	1单用户(用于找回密码)
	2多用户状态没有网络服务(一般不用)
	3多用户状态有网络服务(用的最多,不带图形界面)
	4系统未使用保留给用户(不用)
	5图形界面
	6系统重启
	常用运行级别3和5

可以用init命令来切换运行级别

systemctl get-default利用查看当前运行级别

利用systemctl set-default切换默认运行级别

12.帮助命令

man获取帮助信息

基本语法:man [命令或配置文件] (功能:获取帮助信息)

例如man ls

linux隐藏文件以 . 开头,如果文件起名为 . 开头会变成隐藏文件

选项可以组合使用,如 ls -la

help获得shell命令的帮助信息

基本用法:help 命令,如help cd

13.文件指令

	pwd指令
	基本语法:pwd  (显示当前工作文件夹的绝对路径)
	 
	ls指令
	基本语法:ls [选项] [目录或是文件]
	常用选项
	-a 显示当前目录所有文件和目录。包括隐藏文件
	-i 以列表的形式显示信息
	-h 将单位转化为适合人看的
	 
	cd指令
	基本语法:cd [参数] (功能描述:切换到指定目录)
	cd~  或者cd   回到自己的家目录
	cd.. 回到当前目录的上一级目录
	 
	mkdir指令
	mkdir用于创建目录
	基本语法:mkdir[选项]要创建的目录
	常用选项
	-p创建多级目录
	例如:mkdir -p /home/cat/tiger
	 
	rmdir指令
	rmdir指令删除空目录
	基本语法:
	rmdir [选项] 要删除的空目录
	使用细节:
	rmdir删除的是空目录,如果目录下有内容时无法删除
	如果要删除非空目录需要使用rm -rf(小心谨慎,慎用)
	 
	touch指令
	touch指创建一个空文件
	基本语法:
	touch 文件名称
	 
	cp指令
	cp指令拷贝文件到指定目录
	基本语法
	cp [选项] 文件名 要拷贝的位置
	常用选项
	-r:递归复制整个文件夹
	实例:
	cp hello.txt bbb/
	cp -r bbb/ /opt/
	使用细节:
	强制覆盖不提示的方法:\cp
	\cp -r bbb/ /opt/
	 
	rm指令
	移除文件或目录
	基本语法
	rm [选项] 要删除的文件或目录
	常用选项
	-r :递归删除整个文件夹
	-f :强制删除不提示
	rm hello.txt
	rm -rf ddd
	 
	mv指令
	mv指令移动文件与目录或重命名
	基本语法
	mv 旧名字 新名字
	mv /旧目录/ /新目录/
	mv /home/hello1.txt /home/ddd (移动文件)
	mv hello.txt hello1.txt(重命名)
	 
	cat指令
	cat查看文件内容,但是无法修改
	基本语法:
	cat [选项] 要查看的文件
	常用选项:
	-n:显示行号
	使用细节
	cat只能浏览文件,不能修改文件,为了浏览方便一般带上管道命令|more(把前面得到的结果,交给下一个命令进行处理)
	cat -n/etc/profile | more[进行交互]
	 
	more指令
	more指令是一个基于vi编辑器的文本过滤器,它以全屏幕的方式按页显示文本内容,more命令中内置的若干快捷键,详见操作说明
	基本语法:
	more 要查看的文件
操作功能说明
空格键(space)代表向下翻一页
enter代表向下翻一行
q代表立刻离开more,不再显示该文件内容
CTRL+F向下滚动一屏
CTRL+B返回上一屏
=输出当前页行号
:f输出文件名和当前行的行号

操作说明,如上图

	less指令
	less指令用来分屏查看文件内容,他的功能与more类似,但是比more指令更强大,支持各种显示终端,less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大文件时具有更高的效率
	基本语法
	less 要查看的文件
	 
操作功能说明
空白键向下翻动一页
pagedown向下翻动一页
pageup向上翻动一页
/字串向下搜寻[字串]的功能;n:向下查找;N:向上查找
?字串向上搜寻[字串]的功能;n:向上查找;N:向下查找
q离开less这个程序

操作说明

	echo指令
	echo输入内容到控制台
	基本语法
	echo [选项] [输出内容]
	实例:
	使用echo指令输出环境变量,比如输出$PATH
	echo $PATH
	使用echo输出hello,world
	echo hello,world
	 
	head指令
	head用于显示文件开头部分的内容,默认情况下head指令显示文件的前十行内容
	基本语法
	head 文件名 (查看某个文件的前十行内容)
	head -n 5 文件名 (查看某个文件的前五行内容)
	 
	tail指令
	tail用于显示文件尾部内容,默认情况下tail显示文件后十行
	基本语法
	tail 文件名 (查看文件后十行内容)
	tail -n 5 文件名 (查看文件后五行内容)
	tail -f 文件 (实时追踪该文档的所有更新)
	实例
	实时监控mydate.txt,看看文件有变化时,是否能看到,实时追加日期
	 
	 
	 
	>指令和>>指令
	>为输出重定向(echo hello输出到终端,用>重定向后可输入到文件中,如txt,log文件,>为覆盖)
	>>为追加(为追加)
	基本语法
	ls -l > 文件名 (列表的内容覆盖进文件里)
	ls -la >> 文件名(列表的内容追加进文件的末尾)
	cat 文件1>文件2 (将文件1的内容覆盖到文件2)
	echo"内容">>文件 (echo打印的内容追加进文件末尾)
	 
	ln指令
	软连接,也叫符号链接,类似windows里的快捷方式,主要存放了链接其他文件的路径
	基本语法
	ln -s [原文件或目录] [软链接名] (给原文件创建一个软连接)
	在home文件夹下创建一个root的软连接
	ln -s /root /home/myroot
	删除软连接
	rm /home/myroot
	在软连接目录中使用pwd,看到的是myroot的路径,不是root的
	 
	history指令
	查看曾经执行过的命令,也可以执行历史命令
	基本语法
	history(查看已执行过历史命令)
	查看最近10个命令
	history 10
	执行编号5的指令
	!5

14.时间日期类指令

	date指令-显示当前日期
	基本语法
	date (显示当前时间)
	date+%y(显示当前年份)
	date+%m (显示当前月份)
	date+%d (显示当前是哪一天)
	date "+%Y-%m-%d %H:%M:%S" (显示年月日时分秒)
	 
	date指令-设置日期
	基本语法
	date -s 字符串时间
	实例
	设置系统时间,比如2021-11-11 11:22:22
	date -s "2021-11-11 11:22:22"
	 
	cal指令-查看日历的指令
	基本语法
	cal [选项] (不加选项,显示本月日历)
	实例
	显示2020年日历
	cal 2020 

14.查找指令

	find指令
	find指令将从指定目录向下递归的遍历各个子目录,将满足条件的文件或目录显示在终端
	基本语法
	find [搜索范围] [选项]
	选项说明
选项功能
name<查询方式>按照指定的文件名查找模式查找文件
user<用户名>查找属于指定用户的所有文件
size<文件大小>按照指定文件大小查找文件
	查找/home目录下的hello.txt文件
	find /home -name hello.txt
	查找/opt目录下的,用户名为root的文件
	find /opt -user root
	查找整个Linux下大于200mb的文件(+n 大于 -n小于 n等于)(单位 K M G)
	find / -size +200M
	 
	locate指令
	locate指令可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度快,为了保证查询结果准确度,管理员必须定期更新locate时刻
	特别说明
	由于locate指令基于数据库进行查询,所以第一次运行之前,必须使用updatedb创建locate数据库
	基本语法
	locate 文件名
	实例
	用locate查询hello.txt
	updatedb
	locate hello.txt
	 
	which指令
	可以查看某个指令在哪个目录下
	比如ls
	which ls 
	 
	grep指令和管道符号 |
	grep过滤查找,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
	基本语法
	grep [选项]查找内容 源文件
	常用选项
	-n 显示匹配行及行号
	-i 忽略字母大小写
	实例
	在hello.txt文件中,查找yes所在行,显示行号
	cat /home/hello.txt | grep "yes"
	grep -n "柳" /opt/杂文.txt |more

15.压缩和解压类

	gzip/gunzip指令
	gzip用于压缩文件,gunzip用于解压文件
	实例
	gzip压缩bbb文件夹下hello.txt文件
	gzip /home/bbb/hello.txt /home/bbb/hello2.txt
	解压hello2文件
	gunzip hello2.txt.gz
	 
	zip/unzip指令
	zip用于压缩目录,unzip用于解压目录,在项目打包发布时很有用
	基本语法
	zip [选项] 目录名.zip 压缩文件和目录的命令
	unzip [选项] 目录名.zip 解压缩文件
	 
	zip常用选项
	-r 递归压缩
	unzip常用选项
	-d<目录>:指定解压后文件存放目录
	实例
	将ddd下所有文件压缩成ddd.zip
	zip -r ddd.zip /home/ddd/ (将ddd目录和他包含的子文件夹都压缩)
	将ddd.zip解压到/opt/tmp文件夹中
	unzip -d /opt/tmp /home/ddd.zip
	 
	tar指令
	tar指令是打包指令,最后打包的文件是tar.gz文件
	基本语法
	tar [选项] XXX.tar.gz 打包的内容 (打包目录,格式为XXX.tar.gz )
	选项说明
	-c 产生.tar打包文件
	-v 显示详细信息
	-f 指定压缩后的文件名
	-z 打包同时压缩
	-x 解包.tar文件
	实例
	压缩多个文件,将/home/pig.txt 和 /home/cat.txt压缩成pc.tar.gz
	tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt 
	将/home 压缩成myhome.tar.gz文件
	tar -zcvf pc.tar.gz /home/
	将pc.tar.gz解压到当前目录,(先切换到opt)
	tar -zxvf pc.tar.gz
	将pc.tar.gz解压到opt/tmp文件夹
	tar -zxvf /home/pc.tar.gz -C /opt/tmp/

15.Linux组

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

	1.所有者
	一般文件的创建者,谁创建了文件,谁就是文件的所有者
	查看文件所有者
	ls -ahl
	 
	修改文件所有者
	chown 用户名 文件名
	将apple.txt的所有者改为baize
	chown baize apple.txt
	 
	2.组的创建
	基本指令
	groupadd 组名
	应用实例
	创建一个组monster
	groupadd monster
	创建一个用户fox,把他放在monster中
	useradd -g monster fox
	 
	3,文件/目录所在组
	当某个用户创建了一个文件后,这个文件的所在组就是该用户的所在组
	查看文件/目录所在组
	ls -ll
	用fox创建一个文件,看看该文件的所在组
	-rw-r--r--. 1 fox monster 0 7月  16 16:55 1.txt
	 
	修改文件的所在组
	基本指令
	chgrp 组名 文件名
	实例
	用root创建一个文件,看看文件的所在组,再将文件修改到组fruit
	-rw-r--r--. 1 root  root   0 7月  16 16:58 orange.txt
	chgrp fruit orange.txt
	 
	4.其他组
	除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
	改变用户所在组
	在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限也可以改变某个用户的所在组
	改变用户所有组
	usermod -g 组名 用户名
	usermod -d 目录名 用户名 改变该用户的初始目录  特别说明:用户需要有进入新目录的权限
	实例
	将zwj从原来的组改到wudang组
	cat /etc/group //看目前系统拥有的所有组
	cat /etc/group |grep wudang //可以用grep过滤只查看wudang
	usermod -g wudang zwj

16.linux权限

	ls -l中显示的内容如下
	-rwxrw-r-- 1 root root 1213 feb 2 16:40 apple.txt
	0123456789
	1.第0位确定文件类型(d,-,l,c,b)
	l是链接,相当于windows的快捷方式
	d是目录,相当于Windows的文件夹
	c是字符设备文件,如鼠标键盘
	b是块设备,比如硬盘
	2.第1-3位确定所有者(该文件的所有者)拥有的文件权限--user
	3.第4-6位确定所有者所属组拥有该文件的权限--group
	4.第7-9位确定其他用户拥有该文件的权限==other
	 
	rwx作用到文件
	r表示可以读取(read),查看
	w表示可写(write)可以修改,但是不代表可以删除该文件,删除一个文件的前提是对该文件所在目录有读写权限,才能删除该文件
	x表示可以被执行(execute)
	 
	rwx作用到目录
	r表示可以读取(read),可以读取。ls查看文件内容
	w表示可写(write)可以修改,对目录内创建+删除+重命名目录
	x表示可以被执行(execute),可以进入该目录
	 
	ls -l中显示的内容如下:
	-rwxrw-r-- 1 root root 1213 feb 2 16:40 apple.txt
	1.第0位确定文件类型(d,-,l,c,b)
	2.其余字符每3个一组(rwx)读(r)写(w)执行(x)
	3.
	第一组rwx:文件拥有者的权限是读,写和执行
	第二组rw-:与文件拥有者同一组的用户的权限是读写,但是不能执行
	第三组r--:不与文件拥有者同组的其他用户的权限是读不能写和执行
	4.可用数字表示为:r=4,w=2,x=1.所以rwx=4+2+1=7
	 
	其他说明
	1 文件:硬连接数(如果是文件就1) 目录:子目录数
	root 用户
	root 组
	1213 文件大小(字节),如果是文件夹,显示4096字节
	feb 2 16:40 最后修改时间
	apple.txt 文件名
	 
	权限修改
	基本说明:
	通过chmod指令,可以修改文件或者目录的权限
	第一种方式:+ - =变更权限
	u:所有者 g:所有组 o:其他人 a:所有人(u,g,o的总和)
	1.chmod u=rwx g=rx o=x 文件/目录名
	2.chmod o+w 文件/目录名
	3.chmod a-x 文件/目录名
	实例
	给文件赋予所有者读写执行权限,给文件赋予所在组读写执行权限,给文件赋予其他组读写执行权限
	chmod u=rwx,g=rwx,o=rwx apple.txt 
	给文件所有者除去执行权限
	chmod u-x apple.txt
	给文件所有者加上执行权限
	chmod u+x apple.txt
	 
	通过数字变更权限
	r=4 w=2 x=1 rwx=7
	chmod u=rwx g=rx o=x 文件/目录名相当于chmod 751 文件名/目录名
	实例
	将文件权限改为rwxr-xr-x
	chmod 755 apple.txt
	 
	修改文件所有者
	chown 新拥有者 文件/目录 改变所有者
	chown 新拥有者:新所在组 文件/目录改变所有者和所在组
	-R递归改变子文件夹和目录
	实例
	请将abc.txt所有者改为baize
	chown baize abc.txt 
	将bbb下所有文件和目录都改为zwj wudang
	chown -R zwj:wudang /home/bbb
	 
	修改文件所在组
	chgrp 新的组 文件/目录 改变所在组
	请将abc文件所在组改为shaolin
	chgrp shaolin abc.txt 
	请将bbb文件夹下所有文件都改为shaolin
	chgrp -R shaolin bbb
	 
	 
	对目录rwx的讨论
	x:表示可以进入到该目录,比如cd
	r:表示可以ls,将目录的内容显示
	w:表示可以在该目录下,删除或创建文件
	 

17.crond任务调度

	crontab进行定时任务的设置
	概述
	任务调度:是指系统在某个时间执行的特定的命令或程序。
	任务调度分类:
	 
	系统工作:如有些重要工作必须周而复始地执行
	个别用户工作:个别用户可能希望执行某些程序,如对mysql数据库的备份
	基本语法:
	crontab[选项]
	常用选项
	-e	编辑crontab定时任务
	-l	查询crontab任务
	-r	删除当前用户所有的crontab任务
	 
	4.快速入门
	设置一个任务调度文件:/etc/crontab
	设置个人任务调度。执行:crontab -e 命令
	接着输入任务到调度文件: */ 1 * * * * ls-l /etc /> /tmp/to.txt.命令
	该命令意为:每小时的每分钟执行ls -l /etc/>/tmp/to.txt命令
	注意上诉快速入门中的*/1表示每分钟执行一次
	第一个“*”	一个小时当中的第几分钟	0~59,
	第二个“*”	一天当中的第几小时	0~23,为*代表每小时的每分钟都执行
	第三个“*”	一个月当中的第几天	1~31,
	第四个“*”	一年当中的第几月	1~12,
	第五个“*”	一周当中的星期几	0~7(0和7都代表星期日)
	 
	特殊符号说明
	*	代表任何时间。比如第一个“*”代表一小时中每分钟都执行一次的意思 
	 
	,	代表不连续时间。比如“0,8,12,16* * *命令”,代表在每天的8点0分,12点0分,16点0分都执行一次命令
	 
	-	代表连续的时间范围。比如“0 5 * * 1-6命令”,代表周一到周六的凌晨5点0分执行命令
	 
	*/n	代表每隔多久执行一次。比如“*/10 * * * * 命令” ,代表每个十分钟就执行一次命令
	 
	45 22 * * *	在22点45分执行命令
	0 17 * * 1	每周一的17点0分执行命令
	0 5 1,15 * *	每月1号和15号的早上五点执行命令
	40 4 * * 1-5	每周一到周五早上四点四十分执行命令
	*/10 4 * * *	每天早上四点,每隔十分钟hi i选哪个一次命令
	0 0 1,15 * 1	每月1号和15号,每周一的凌晨0点0分都会执行命令
	 
	案例
	每隔一分钟,就将当前的日期信息,追加到/tmp/mydate文件中
	*/1 * * * * date >>/tmp/mydate
	每隔一分钟,就将当前日期和日历都追加到/home/mycal文件中
	vim mysh.sh(创建一个shell脚本)
	date >> /home/mycal.txt
	cal >> /home/mycal.txt
	(在shell脚本中写入如上内容)
	chmod 777 mysh.sh
	(添加执行权限)
	crontab -e(打开定时任务编辑器)
	*/1 * * * * /home/mysh.sh
	(定时每分钟执行一次脚本)
	 

18.at定时任务

	at命令是一次性定时计划任务,原理是at的守护进程atd以后台模式运行,检查作业队列来运行。默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
	at命令是一次性定时计划任务,执行完一个任务后不再执行此任务
	使用at命令,一定要保证atd进程的启动,可以使用相关指令来查看
	ps -ef | grep atd 指令:该指令可以查看atd进程是否启动
	ps -ef检测当前所有运行进程
	 
	at命令格式
	at[选项] [时间]
	ctrl+D 结束at命令的输入
	选项
	-m	当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
	-I	atq的别名
	-d	atrm的别名
	-v	显示任务将被执行的时间
	-c	打印任务的内容到标准输出
	-V	显示版本信息
	-q<队列>	使用指定的队列
	-f<文件>	从指定文件读入任务
	-t<时间参数>	以时间参数的形式提交到运行的任务
	 
	at[选项][时间]:选项参照上面的表格,时间的定义有如下的定义:
	1.接受当前的hh:mm(小时:分钟)式的时间指定。假如当前时间过去,会在第二天执行
	2.使用midnight(深夜),noon(中午),teatime(饮茶时间,一般下午4点)等比较模糊的时间指定
	3.采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。
	4.指定命令执行的具体时间,指定格式为 month day (月日)或 mm / dd / yy (月/日/年)或 dd.mm.yy(日月年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-01-01
	5.使用相对计时法。指定格式为: now + count time-units , now 就是当前时间, time-units 是时间单位,这里能够是 minutes (分钟)、 hours (小时)、 days (天)、 weeks (星期)。 count 是时间的数量,几天,几小时。例如: now +5 minutes
	6.直接使用 today (今天)、 tomorrow (明天)来指定完成命令的时间。
	 
	案例
	案例一:2天后的下午5点执行/bin/ls /home
	 at 5pm+2 days
	 /bin/ls /home
	案例二:atq命令查看系统中没有执行的工作任务
	atq
	案例三:明天17点钟,输出时间到指定文件内 比如 /root/date100.log
	 at 5pm tomorrow
	at> date >> /root/date100.log
	案例四:2分钟后,输出时间到指定文件内 比如/root/date200.log
	 at now + 2minutes 
	at> date >> /root/date100.log
	案例五:删除已经设置的任务,atrm编号
	atrm 1
	案例六:执行一个shell脚本
	at now + 2 minutes
	at > my.sh 

19.新建磁盘步骤

	1. 原理介绍
	Linux不论有几个分区,分给哪一个目录使用,它归根到底只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分
	Liunx采用一种“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得
	2.硬盘说明
	Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
	 
	IDE硬盘,驱动器标识符为“hdx ~ ”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘。“X”为盘号(a为基本盘,b为基础从属盘,c为辅助主盘,d为辅助从属盘)。“~ ”代表分区,前面四个分区用数字1到4标识,它们是主分区或拓展分区,从5开始就是逻辑分区。(不常用)
	SCSI硬盘,驱动器标识符为“sdx~ ”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘表示方法一样
	3.查看所有设备挂载情况
	指令:lsblk 或 lsblk -f
	 
	4.分区挂载步骤
	(1)新建硬盘并重启
	(2)分区
	分区命令 fdisk /dev/sdb
	开始对/sdb分区
	 
	m	显示命令列表
	p	显示磁盘分区 同 fdisk -l
	n	新增分区
	d	删除分区
	w	写入并退出

	(3)格式化代码
	没有格式化是不能使用的,格式化之后会默认分配一个UUID
	格式化命令:mkfs -t ext4 /dev/sdb1
	其中ext4是分区类型

	(4)挂载
	就是将一个分区和一个目录联系起来
	 
	挂载指令:mount 设备名称 挂载目录
	 
	但是前提,我们得先创建一个目录

此时查看挂载点

	注意
	如果想要卸载挂载点,不想要进行挂载可以使用如下指令
	 
	unmount /newdisk
	unmount /dev/sdb1
	用命令行挂载,重启后会失效
	 
	(5)永久挂载
	通过修改/etc/fstab实现挂载
	添加完成后 执行mount -a 即刻生效

20.磁盘管理

	1.磁盘情况查询
	df -h
	2.查询指定目录的占用情况
	du -h /目录:查询指定目录的磁盘占用情况,默认为当前目录
	du -s :指定目录占用大小汇总
	du -h:带计量单位
	du -a:把文件显示出来
	du -max-depth = 1 :子目录的深度
	du - c :列出明细的同时,增加汇总值
	注意可以连起来用
	3.工作常用命令
	统计opt文件夹下的文件个数
	ls -l /opt |grep "^-" | wc -l
	ls opt目录|正则表达式过滤文件|统计数据
	统计opt文件夹下的目录个数
	ls -l /opt |grep "^d" | wc -l
	ls opt目录|正则表达式过滤目录|统计数据
	统计opt文件夹下的文件个数,包括子目录
	ls -lR /opt |grep "^-" | wc -l
	ls opt目录,R代表递归显示
	统计opt文件夹下的目录个数,包括子目录
	ls -lR /opt |grep "^d" | wc -l
	以树状图显示目录结构
	yum install tree安装
	tree /opt

21.进程管理

	Linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)
	每个进程都可以以两种方式存在。前台与后台。
	前台进程就是用户目前的屏幕上可以进行操作的
	后台进程则是实际在操作,但由于屏幕上无法看到进程,通常在后台方式执行
	一般系统的服务器都是以后台进程的方式存在,而且都会常驻在系统中。直到关机结束。
	 
	ps命令
	ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数
	常见命令
	ps-a:显示当前终端的所有进程信息
	ps-u:以用户的格式显示进程信息
	ps-x:显示后台进程运行参数
	USER——PID——%CPU——%MEM——VSZ——RSS——TTY——STAT——START——TIME——COMMAND
	user 使用者
	pid 进程号
	%CPU cpu占用
	%MEM 物理内存占用百分比
	VSZ 虚拟内存占用情况
	RSS 物理内存占用情况
	TTY 终端机号
	STAT S-睡眠。s-表示进程是会话先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或被停止
	START 进程执行的开始时间
	TIME 此进程所消耗CPU时间
	COMMAND 正在执行的命令或进程名
	通过ps -aux |grep XXXX指令来查看某一个进程的执行情况
	 
	父子进程
	ps -ef:以全格式显示当前所有的进程
	e	显示所有进程
	f	全格式
	ps-ef|grep XXX显示某一个进程
	UID——PID——PPID——C——STIME——TTY——TIME——CMD
	UID:用户进程
	PPID:父进程PID
	C:CPU用于计算执行优先级的因子,数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
	STIME:进程启动时间
	TTY:完整的终端名称
	TIME:CPU时间
	CMD:启动进程所用的命令和参数
	 
	终止进程
	若某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务
	基本语法
	kill [选项] 进程号(通过进程号杀死进程)
	killall 进程名称(通过进程名杀死进程,也支持通配符,这里系统因负载过大而变得很慢时有用)
	如果使用killall,那么所有子进程也会被杀死
	常用选项
	-9 :表示强制进程必须立即结束
	案例
	结束一个远程登陆用户
	ps -aux | grep sshd
	root       1028  0.0  0.2 112900  4344 ?        Ss   09:26   0:00 /usr/sbin/sshd -D
	root       2546  5.3  0.3 161304  6168 ?        Ss   11:06   0:00 sshd: root@pts/2,pts/3
	root       2761  0.0  0.0 112828   968 pts/0    S+   11:07   0:00 grep --color=auto sshd
	root     119325  0.7  0.3 161424  6236 ?        Ss   10:58   0:03 sshd: root@pts/0,pts/1
	kill 2546
	 
	结束sshd,在适当的时候重启
	ps -aux | grep sshd
	root       1028  0.0  0.2 112900  4344 ?        Ss   09:26   0:00 /usr/sbin/sshd -D
	kill 1028
	(结束sshd)
	systemctl start sshd.service
	(启动sshd)
	 
	通过进程的名称关闭所有进程
	killall gedit(gedit是文本编辑器)
	 
	强制杀掉一个终端
	ps -aux |grep bash
	root      28543  0.0  0.1 116972  3372 pts/2    Ss+  11:25   0:00 bash
	kill -9 28543
	 
	查看进程树
	1. 基本语法
	pstree [选项]:可以更加直观的查看进程信息
	2.常用选项
	选项	说明
	-p	显示进程PID
	-u	显示进程的所属用户
	案例
	以树状形式显示进程的pid
	pstree -p
	 
	以树状的形式进程的用户id
	pstree -u

22.服务管理

	1. 概述
	服务本质就是进程,但因为运行在后台,通常都会监听某个端口,等待其他程序的请求,比如(mysqld,sshd,防火墙等)。因此又称为守护进程
	 
	service管理指令
	service服务名[ start | stop | restart | reload | status ]
	在centos7.0之后,很多服务不再使用service。而是使用 systemctl
	仍被service指令管理的服务在 /etc/init.d 查看
	 
	演示使用service指令,查看,关闭,启动network服务
	1.service network stop
	2.service network status
	3.service network start
	 
	查看服务名
	方式一:使用 setup ,系统服务就可以查看到全部
	 
	带有 * 的服务,Linux启动时自行启动
	将光标移动到* 号前,输入空格即可取消自动启动的服务
	方式二:/etc/init.d 看到service指令管理的服务
	 
	服务运行级别(常用的是3和5)
	0	系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动(几乎不用)
	1	单用户工作状态,root权限,用于系统维护,禁止远程登陆(几乎不用)
	2	多用户状态(没有NFS),不支持网络(很少使用)
	3	完全的多用户状态(有NFS),无界面,登陆后进入控制台命令行模式
	4	系统未使用,保留
	5	X11控制台,登陆后进入图形GUI模式
	6	系统正常关闭并重启,默认运行级别不能为6否则不能正常启动
	 
	开机流程
	开机->bios->/boot->systemctl进程1->运行级别->运行级别对应的服务
	 
	查看当前运行级别
	 
	systemctl get-default
	 
	multi-user.target为运行级别3
	graphical.target为运行级别5
	 
	systemctl set-default multi-user.target 设置级别3
	systemctl set-default graphical.target 设置级别5
	 
	chkconfig指令
	通过chkconfig命令对该指令可以给服务的各个运行级别设置自启动/关闭
	chkconfig 指令管理的服务在 /etc/init.d查看
	注意Centos7之后,很多服务使用systemctl管理
	 
	chkcofig基本语法
	查看服务chkconfig --list | grep xxx(查看某一服务)
	chkconfig --list(查看全部服务)
	chkconfig --level 5 服务名 on/off(某一服务在某一运行级别的状态自动开启或关闭)

	案例:对network服务进行操作,把network在运行级别3关闭自启动
	chkconfig --level 3 network off
	使用细节:chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效
	 
	systemctl指令
	 
	基本语法:
	systemctl[start|stop|restart|status]服务名
	systemctl指令管理的服务在 /usr/lib/systemd/system 查看
	systemctl设置服务自启动状态
	systemctl list-unit-files | grep XXX查看服务开机启动状态,grep可以进行过滤
	systemctl enable xxx:设置服务开机启动
	systemctl disable xxx:关闭服务开机启动
	systemctl is-enabled xxx:查询某个服务是否是自启动的
	 
	案例:
	查询当前防火墙状态,关闭和重启防火墙
	systemctl status firewalld(查询防火墙运行状态)
	systemctl stop firewalld(关闭防火墙)
	systemctl start firewalld(开启防火墙)
	 
	讨论:
	关闭或启用防火墙,立即生效
	这种方式知识临时生效,当重启系统后,还是回归以前对服务的设置,即使用指令关闭一个服务,如果它是自启动,仍会启动
	如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable|disable] 服务名
	 
	firewall指令
	概述
	在真正的生产环境中,往往需要将防火墙打开,如果我们打开防火墙,外部请求数据包就不能跟服务器监听端口通讯,这时,需要打开指定的端口。
	打开端口:firewall-cmd --permanent --add-port=端口号/协议
	关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
	重新载入,才能生效:firewall-cmd --reload
	查询端口是否开放:firewall-cmd --query-port=端口/协议
	打开或关闭端口后,必须重新载入才能生效
	 
	启动防火墙,测试111端口是否能telnet,不行,开放端口
	firewall-cmd --permanent --add-port=111/tcp(先开放111端口)
	firewall-cmd --reload(重新载入)
	再次关闭111端口
	firewall-cmd --permanent --remove-port=111/tcp(关闭111端口)
	firewall-cmd --reload(重新载入)
	firewall-cmd --query-port=111/tcp(查询111端口情况)

23.动态监控进程

	top指令
	概述
	top指令与ps指令相似。均用来显示正在执行的进程。Top与ps指令最大的不同之处在于top执行一段时间可以更新正在执行的进程
	 
	基本语法
	top [选项]
	选项说明
	-d秒数	指定top命令每隔几秒更新。默认是3秒,例如 投top -d 5
	i	使top不显示任何闲置或者僵死进程
	p	通过指定监控进程ID来仅仅监控某个进程的状态

	交互操作说明
	P	以CPU使用率排序,默认就是此项
	M	以内存的使用率排序
	N	以PID排序
	q	退出top
	 
	实例
	监控特定用户,比如监控baize
	首先top -d 5
	然后按‘u’后输入baize
	 
	终止进程,比如结束jack登录
	首先top -d 5
	然后按'u'后输入jack
	接着按‘k’
	输入进程号54191结束进程
	 
	指定系统更新状态的时间(每隔十秒)
	top -d 10

24.监控网络状态

	基本语法
	netstat [选项]
	选项说明
	-an  按一定顺序排列输出
	-p   显示那个进程在调用
	 
	案例
	查看服务名为sshd的服务信息
	netstat -anp | grep sshd

25.红帽包管理

	rpm用于互联网下载包的打包以及安装工具,它包含在某些Linux分发版中。它生成具有.RPM拓展名的文件。RPM是Red Package Manager(RedHat软件包管理工具)的缩写。类似于window的setup.exe
	 
	rpm的简单查询指令
	查询已安装的rpm列表 :rpm -qa|grep xx
	例如:查询系统是否安装火狐浏览器
	rpm -qa|grep firefox

	查询返回的结果为一个rpm包名:firefox-78.6.0-1.el7.centos.x86_64
	 
	名称:firefox
	版本号:78.6.0-1
	适用操作系统:el7.centos.x86_64(表示centos 7.x的64位操作系统)
	如果是i686、i386表示32位操作系统,noarch表示通用
	 
	rpm -qa:查询所安装的所有rpm的软件包
	rpm -qa | more:结合more指令分页查询
	rpm -qa | grep X:管道过滤,查询是否有X的软件包
	rpm - q | 软件包名:查询软件包是否安装
	案例(rpm -qa|grep firefox)
	rpm -qi 软件包名:查询软件包信息
	案例(rpm -qi firefox)
	rpm -ql 软件包名:查询软件包中的文件
	案例(rpm -ql firefox)
	rpm -qf 文件全路径名:查询文件所属的软件包
	rpm -qf /etc/passwd
	rpm -qf /root/install.log
	 
	卸载rpm包
	rpm -e XXX
	 
	使用细节
	如果其他软件包依赖于想要卸载的软件包,卸载时则会产生错误信息
	如 rpm -e foo
	提示removing these packages would break dependencies:foo is needed by bar-1.0-1
	代表有其他软件依赖这个软件包,非常不建议删除
	如果想要强制删除 则使用指令:rpm -e --nodeps 软件名
	 
	安装rpm包
	rpm -ivh RPM包全路径名称
	i:install 安装
	v:verbose 提示
	h:hash 进度条
	 
	案例
	删除火狐
	rpm -e firefox
	安装火狐
	rpm -ivh /opt/firefox
	 
	 
	yum指令
	yum是一个shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
	 
	查询yum服务器是否有需要安装的软件
	yum list|grep xx 软件列表
	安装指定的yum包
	yum install xxx 下载安装
posted @ 2023-08-10 16:55  东凭渭水流  阅读(19)  评论(0编辑  收藏  举报