Linux基本操作指令与shell的入门

1、Linux的共享文件夹

​ 共享文件夹默认在mnt->hgfs文件夹下

2、Linux的目录结构

​ Linux下一切皆文件

​ / 根目录,只有一个根目录,不像windows有c盘d盘等等

​ /bin 存放最经常使用的命令,例如拷贝删除等等

​ /sbin 存放的是系统管理员使用的系统管理程序

​ /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录是以用户的账户命名的

​ /root 该目录为系统管理员,也称作超级权限者的用户主目录

​ /lib 系统开机所需要的的最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库

​ /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件

​ /etc 所有的系统管理所需要的配置文件和子目录 my.conf

​ /usr 用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录

​ /boot 存放的是启动Linux时用到的一些核心文件,包括一些连接文件以及镜像文件

​ /proc 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息

​ /srv 该目录存放一些服务启动之后需要提取的数据

​ /sys 该目录下安装了2.6内核中新出现的一个文件系统sysfs

​ /tmp 该目录用于存放临时文件

​ /dev 管理设备

​ /media目录 Linux会自动识别一些设备,例如dvd,u盘等,当识别后就会挂载到这个目录下

​ /mnt 系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将外部的存储挂载到/mnt/上,然后进入该目录就可以查看里面的内容了

​ /opt 这是给主机额外安装软件所摆放的目录

​ /usr/local 这是另一个给主机安装软件所安装的目录,一般是通过编译源码方式安装的程序

​ /var 这个目录中存放着在不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件

​ /selinux 是一种安全子系统,它能控制程序只能访问特定文件

3、i和vim编辑器

​ vim就是一个文本编辑器,vim是vi的增强版

1、vim和vi的三种编辑模式

​ 正常模式:在正常模式下,我们可以使用快捷键,输入:或者/可以进入命令行模式

​ 插入模式:在插入模式下,可以输入内容,需要i,l,o,O,a,A,r,R等任何一个字母后才会进入编辑模式,一般来说按i即可

​ 按下esc进入正常模式

​ 命令行模式:在此模式下,可以完成读取,存盘,替换,离开vim,显示行号等动作

​ 可以写入:wq(保存并退出) :q(退出) :q!(强制退出,当你修改了,但是不想保存可以使用)

2、vim和vi的快捷键

​ 1、拷贝当前行 yy,拷贝当前行向下的5行 5yy ,并按p粘贴

​ 2、删除当前行 dd,删除当前行向下的5行 5dd

​ 3、在文件中查找某个单词【命令行下/关键字 ,回车查找,输入n就是查找下一个】

​ 4、设置文件的行号,取消文件的行号【命令行下 :set nu 和 :set nonu】

​ 5、编辑/etc/profile 文件,使用快捷键到底文档的最末行【G】和最首行【gg】

​ 6、在一个文件中输入“hello”,然后又撤销这个动作 u

​ 7、编辑/etc/profile 文件,并将光标移动到20行 shift+g

4、开机、重启、用户登录注销

​ shutdown

​ shutdown -h now:表示立即关机

​ shutdown -h 1:表示1分钟后关机

​ shutdown -r now :表示立即重启

​ halt

​ 就是直接使用,效果等价于关机

​ reboot

​ 就是重启系统

​ sync

​ 把内存的数据同步到磁盘上

5、用户管理

创建用户的时候,会自动在/home/下创建一个与用户名同名的目录

​ 1、添加用户

​ 基本语法: useradd [选项] 用户名

​ 指定目录添加用户语法 useradd -d 指定目录 用户名

​ 指定组添加用户语法 useradd -g 用户组 用户名

​ 2、给用户指定密码

​ 基本语法:passwd 用户名

​ 强制使用密码:在输入一次

​ 3、删除用户

​ 1、删除但是保留家目录

​ userdel 用户名

​ 2、删除但是不保留

​ userdel -r 用户名

​ 4、查询用户信息

​ 基本语法:id 用户名

​ 如果用户不存在,返回“无此用户”

​ 5、切换用户

​ 基本语法:su - 用户名

​ 6、查看当前用户

​ 基本语法:who am i/whoami

6、用户组

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

​ 1、增加组

​ 基本语法:groupadd 组名

​ 2、删除组

​ 基本语法:groupdel 组名

​ 3、修改用户的组

​ 基本语法:

​ usermod -g 用户组 用户名

​ usermod -d 目录名 用户名 (改变该用户登录的初始目录)

7、用户和组相关的文件

​ 1、/etc/passwd文件:用户的配置文件,记录用户的各种信息

​ 每行的含义:

​ 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

​ 2、/etc/shadow文件:口令配置文件

​ 每行的含义:

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

​ 3、/etc/group文件:组的配置文件,记录Linux包含的组的信息

​ 每行的含义:

​ 组名:口令:组标识号:组内用户列表

8、Linux实用指令

1、指定运行级别

​ 1)、0:关机

​ 2)、1:单用户(找回丢失密码)

​ 3)、2:多用户无网络服务

​ 4)、3:多用户有网络服务

​ 5)、4:保留

​ 6)、5:图形界面

​ 7)、6:重启

​ 运行级别配置文件:/etc/inittab

2、切换到指定运行级别的指令

​ init [0 1 2 3 4 5 6]

3、帮助指令

​ 当我们对某个指令不熟悉的时候,就可以使用Linux提供的帮助指令来了解这个指令的使用

​ 1、man [命令或者配置文件] ( 获得帮助信息)

​ 2、help 命令 (获得shell内置命令的帮助信息)

4、文件目录类指令

​ 1、pwd指令 (功能描述:显示当前工作目录的绝对路径)

​ 基本语法:pwd

​ 2、ls指令

​ 基本语法:ls 选项 目录或者是文件

​ 常用选项:

​ -a:显示当前目录所有的文件和目录,包括隐藏的

​ -l:以列表的方式显示信息

​ 3、cd指令

​ 基本语法:cd 【参数】

​ 常用参数:

​ 绝对路径和相对路径

​ cd~或者cd 回到自己的家目录

​ cd… 回到当前目录的上一级

​ 4、mkdir指令(功能:创建目录)

​ 基本语法:mkdir 【选项】 要创建的目录

​ 常用选项:

​ -p:创建多级目录

​ 5、rmdir指令(功能:删除目录)

​ 基本语法:rmdir【选项】 要删除的空目录

​ 常用选项:

​ -p:删除多级目录

​ 使用细节:如果删除的是非空目录,使用rm -rf 要删除的目录

​ 6、touch指令(功能:创建空文件)

​ 基本语法:touch 文件名称

​ 使用细节:一次可以创建多个文件 touch ok1.txt ok2.txt

​ 7、cp指令(功能:拷贝文件到指定目录)

​ 基本语法:cp【选项】 source dest

​ source:源,就是你要拷贝的文件

​ dest:你要拷贝到哪里去

​ 常用选项:

​ -r:递归复制整个文件夹

​ 使用细节:当要复制的目录下已经有目标文件后,可以使用\cp -r source dest 来

​ 8、rm指令(功能:移除文件或者目录)

​ 基本语法:rm【选项】 要删除的文件或者目录

​ 常用选项:

​ -r:递归删除整个文件夹

​ -f:强制删除不提示

​ 使用细节:强制删除不提示的方法,带上-f参数即可

​ 9、mv指令(功能:移动文件或者目录或者重命名)

​ 基本语法:

​ mv oldNameFile newNameFile(功能描述:重命名)

​ mv 要移动的文件 要移动到的位置(功能描述:移动文件)

​ 10、cat指令(功能:查看文件内容)

​ 基本语法:cat【选项】 要查看的文件

​ 常用选项:

​ -n:显示行号

​ 使用细节:只能cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令|more,使用后可以进行分页查看

​ 例子:查看/etc/profile,指令为cat -n /etc/profile | more

​ 11、more指令(功能:以全屏幕的方式按页显示文本文件的内容)

​ 基本语法:more 要查看的文件

​ 使用细节:想要一行一行的往下看按enter,要一页一页的看按空格键,使用ctrl+b查看上一页,使用ctrl+f下一页

​ 12、less指令(功能:分屏查看文件内容)

​ 基本语法:less 要查看的文件

​ 使用细节:跟more的区别就是,more会直接加载整个文件,less是一页一页的加载,这样运行起来比较快

​ 13、>指令和>>指令(功能描述:>输出重定向和>>追加)

​ 基本语法:

​ 1、ls -l>文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))

​ 2、ls -al >> 文件 (功能描述:列表的内容追加到文件a.txt的末尾)

​ 3、cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)

​ 4、echo “内容” >> 文件 (功能描述:直接把双引号内的内容,追加到文件中去)

​ 14、echo(功能描述:输出内容到控制台)

​ 基本语法:echo 【选项】【输出内容】

​ 15、head(功能描述:用于显示文件的开头部分内容,默认显示文件的前十行)

​ 基本语法:

​ head 文件 (功能描述:查看文件的前10行内容)

​ head -n 5 文件(功能描述:查看头5行,5可以是任意行数)

​ 16、tail(功能描述:tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容)

​ 基本语法:

​ tail 文件 (功能描述:查看文件的后10行内容)

​ tail -n 5 文件(功能描述:查看后5行,5可以是任意行数)

​ tail -f 文件(功能描述:实时追踪该文档的所有更新)

​ 17、In (功能描述:给原文件创建一个软链接)

​ 基本语法:

​ In -s 【原文件或目录】【软链接名】

​ 细节说明:当我们使用pwd查看目录时,仍然看到的是软链接所在的目录

​ 18、history(功能描述:查看已经执行过的历史命令,也可以执行历史指令)

​ 基本语法:

​ history 【原文件或目录】【软链接名】

​ history 数字(显示最近执行的改数字条的指令)

​ 执行历史用的指定编号的指令 : !要执行的编号

​ 例如执行编号为178的指令,!178

​ 19、In (功能描述:给原文件创建一个软链接)

​ 基本语法:

​ In -s 【原文件或目录】【软链接名】

​ 细节说明:当我们使用pwd查看目录时,仍然看到的是软链接所在的目录

5、时间日期类指令

​ 1、date(功能描述:显示当前日期)

​ 基本语法:

​ date (显示当前时间)

​ date +%Y (显示当前年份)

​ date +%m (显示当前月份)

​ date +%d (显示当前是哪一天)

​ date “+%Y-%m-%d %H:%M:%S ” (显示年与日时分秒)

​ 2、date(功能描述:使用date设置日期)

​ 基本语法:

​ date -s 字符串时间

​ 例子:设置成2018-10-10 11:22:22

​ date -s “2018-10-10 11:22:22”

​ 3、cal指令(功能描述:不加选项,显示本月日历)

​ 基本语法:

​ cal 【选项】

6、搜索查找类

​ 1、find(功能描述:从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端)

​ 基本语法:

​ find 【搜索范围】 【选项】

​ 选项说明:

​ 1、-name<>:按照指定的文件名查找模式查找文件

​ 2、-user<用户名>:查找属于指定用户名所有文件

​ 3、-size<文件大小>:按照指定的文件大小查找文件

​ +n 大于 -n小于 =n等于

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

​ 基本语法:

​ locate 搜索文件

​ 使用细节:使用前需要使用updatedb创建更新locate数据库

​ 3、grep(功能描述:过滤查找

​ 管道符:“|”,表示将前一个命令的处理结果输出传递给后面的命令处理)

​ 管道符相当于把两个指令联结到一起使用

​ 基本语法:

​ grep【选项】 查找文件 源文件

​ 常用选项:

​ -n :显示匹配行及行号

​ -i :忽略字母大小写

​ 使用例子:cat hello.txt | grep -ni yes

​ 查询出hello文件中yes的行号,不区分大小写

7、解压缩和压缩类指令

​ 1、gzip/gunzip(功能描述:gzip用于压缩文件,gunzip用于解压缩)

​ 基本语法:

​ gzip 文件 (压缩文件,只能将文件压缩为*.gz文件)

​ gunzip 文件.gz (解压缩文件命令)

​ 使用细节:使用gzip压缩某个文件后,原文件会被替代

​ 2、zip/unzip(功能描述:zip用于压缩文件,unzip用于解压缩)

​ 基本语法:

​ zip 【选项】XXX.zip 将要压缩的内容 (压缩文件和目录的命令)

​ unzip 【选项】XXX.zip (解压缩文件命令)

​ zip常用选项:

​ -r:递归压缩,即压缩目录

​ unzip常用选项:

​ -d<目录>:指定解压后文件的存放目录

​ 使用细节:使用gzip压缩某个文件后,原文件会被替代

​ 3、tar(功能描述:用于打包文件,打包后后缀为.tar.gz文件)

​ 基本语法:

​ tar 【选项】 XXX.tar.gz 打包的内容

​ tar 【选项】 XXX.tar.gz -C 需要解压到的目录 (解压到指定目录)

​ 指定解压目录时,这个指定目录必须存在,否则必须先创建

​ 选项说明:

​ -c 产生.tar打包文件

​ -v 显示详细信息

​ -f 指定压缩后的文件名

​ -z 打包同时压缩

​ -x 解压.tar文件

​ 打包常用:-zcvf 解压常用:-zxvf

9、Linux实操篇

01、文件/所有者/所在组

​ 1、ls -ahl(功能描述:查看文件所有者)

​ 2、chown 用户名 文件名(功能描述:改变文件的所有者)

​ 3、chgrp 组名 文件名(功能描述:改变文件的所在组)

02、权限介绍

​ 1、使用ls -l命令显示如下:

​ -rw-r–r--. 1 root root 103 9月 19 04:06 Hello.java

​ 第一个-代表普通文件,如果是d代表目录,1代表软链接,c代表字符设备【键盘,鼠标】

​ b代表块文件【硬盘】

​ rw-表示文件所有者权限,rw代表读写

​ 第一个r–代表文件所在组的用户的权限,只有读的权限

​ 第二个r–代表文件其他组的用户的权限,只有读的权限

​ 1代表硬链接,如果该条信息表示的不是文件是目录的话,代表该目录下子目录的个数

​ 103代表文件的大小,103个字节,如果是目录会显示4096

​ 时间为文件最后的修改时间

​ 2、rwx权限详解

​ rwx作用到文件

​ 1、r代表可读read,可以读取,查看

​ 2、w代表写write,可以修改,但是不代表可以删除文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除文件

​ 3、x代表可执行execute,可以被执行

​ rwx作用到目录

​ 1、r代表可读read,可以读取,ls查看目录内容

​ 2、w代表写write,可以修改,目录内创建+删除+重命名目录

​ 3、x代表可执行execute,可以进入该目录

03、权限管理

​ 1、chmod(功能描述:修改文件或者目录的权限)

​ 使用方法:

​ 1、使用:+,-,=变更权限

​ u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)

​ 1)、chmod u=rwx,g=rx,o=x 文件目录名

​ (给用户指定权限)

​ 2)、chmod o+w,o-r 文件目录名

​ (给其他的用户增加一个w写的权限,减去一个读的权限)

​ 3)、chmod a-x 文件目录名

​ 2、通过数字变更

​ 规则:r=4 w=2 x=1 rwx=4+2+1=7

​ chmod u=rwx,g=rx,o=x 文件目录名

​ 相当于 chmod 751 文件目录名

​ 2、修改文件所有者与所在组(升级版)

​ chown 新的文件所有者 文件

​ chown 新的文件所有者:新的文件所有组 文件

​ chgrp -R 要修改的组 要修改的文件

​ -R 如果是目录,则使其下所有子文件或者目录递归生效

04、任务调度说明

​ 1、crontab 进行定时任务的设置

​ 任务调度:指系统在某个时间执行的特定的命令或程序

​ 任务调度分类:

​ 1、系统工作:有些重要的工作必须周而复始的执行,如病毒扫描等

​ 2、个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份

​ 基本语法:

​ crontab 【选项】

​ 常用选项:

​ -e 编辑crontab定时任务

​ -l 查询crontab任务

​ -r 删除当前用户所有的crontab

​ 参数细节说明:

​ 项目 含义 范围

​ 第一个*号 一小时当中的第几分钟 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 * * * *"命令,代表每隔10分钟就执行一次命令

05、分区挂载

​ 分区的方式:

​ 1)mbr分区

​ 1、最多支持四个主分区

​ 2、系统只能安装在主分区

​ 3、扩展分区要占一个主分区

​ 4、MBR最大只支持2TB,但拥有最好的兼容性

​ 2)gtp分区

​ 1、支持无限多个主分区(但操作系统可能限制,比如windows下最多128分区)

​ 2、最大支持18EB的大容量(1EB=1024PB,1PB=1024TB)

​ 3、Windows7 64位以后支持gtp

​ Linux分区

​ 硬盘说明

​ 1、Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上都是SCSI

​ 2、对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里指IDE硬盘。“x“为盘号 (a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),”“代表分区,前四个分区用数字14表示,他们是主分区或扩展分区,从5开始就是逻辑分区

​ 3、对于SCSI硬盘标识为“sdx~”,SCSI硬盘使用“sd”表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样

​ 注意:使用命令 lsblk -f 查看硬盘

06、挂载经典案例

​ 需求:给Linux系统增加一个新的硬盘,并且挂载到/home/newdisk

​ 步骤:

​ 1、虚拟机添加硬盘

​ 在虚拟机=>设置=>硬盘=>添加=>重启

​ 2、分区

​ 使用命令 fdisk /dev/sdb

​ 3、格式化

​ mkfs -t ext4 /dev/sdb1

​ 4、挂载

​ 先创建一个目录(mkdir /home/newdisk)=>挂载(mount /dev/sdb1 /home/newdisk)

​ 5、设置可以自动挂载(当你重启系统后,仍然可以挂载上)

​ vim /ect/fstab 进入修改配置文件,添加上如下

​ /dev/sdb1 /home/newdisk ext4 defaults 0 0

​ 要挂载的磁盘 要挂载到的位置

07、磁盘查询实用指令

​ 1、查询系统磁盘整体使用情况

​ 基本语法:df -lh

​ 2、查询指定目录的磁盘占用情况,默认为当前目录

​ 基本语法:du -h /目录

​ 选项:-s 指定目录占用大小汇总

​ -h 带计量单位

​ -a 含文件

​ -c列出明细的同时增加汇总值

​ --max-depth=1 子目录深度

工作实用指令================

​ 3、统计文件的个数

​ 基本语法:ls -l /home | grep “^-” | wc -l

​ 4、统计目录的个数

​ 基本语法:ls -l /home | grep “^d” | wc -l

​ 5、统计文件的个数包括子文件夹下的文件

​ 基本语法:ls -lR /home | grep “^-” | wc -l

​ 6、统计文件下的目录的个数包括子文件夹下的目录

​ 基本语法:ls -lR /home | grep “^d” | wc -l

​ 7、以树状图显示目录结构

​ 基本语法:tree /你要展示的目录,默认为当前目录

08、Linux网络配置的原理

​ 1、查看和修改Linux的虚拟ip和网关

​ 查看修改IP地址:编辑=>虚拟网络编辑器

​ 查看修改网关:编辑=>虚拟网络编辑器=>NAT设置

​ 2、自动获取ip

​ 系统=>首选项=>网络连接=>自动连接

​ 注意:自动获取ip,每次的ip地址会不一样,不适合做服务器,仅供个人使用

​ 3、修改配置文件指定固定的ip

​ vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=dhcp
IPV6INIT=no
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
UUID="d9398296-a5c6-47a8-a701-2190dbb656d9"
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=00:0c:29:d0:c9:17
LAST_CONNECT=1539794815
DNS1=223.5.5.5
USERCTL=no
PEERDNS=yes

​ 修改后重启服务:service network restart

09、进程管理

​ 1、ps指令(显示系统执行的进程)

​ 语法格式:

​ ps -a:显示当前终端的所有进程信息

​ ps -u:以用户的格式显示进程信息

​ ps -x:显示后台进程运行的参数

​ 选项:

​ -e:显示所有进程

​ -f:全格式

​ 例子: ps -ef | more (分页查看进程的父进程)

​ 2、终止进程kill和killall

​ 基本语法:

​ kill 【选项】 进程号(功能描述:通过进程号杀死进程)

​ killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,在系统因负载过大而变得很慢的时候很有用)

​ 常用选项:

​ -9:表示强迫进程立即停止

​ 3、查看进程树 pstree

​ 基本语法:pstree 【选项】

​ 常用选项:

​ -p:显示进程的PID

​ -u:显示进程的所属用户

10、服务管理

​ 概念:服务本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如mysqld,sshd,防火墙等,因此我们又称为守护进程,是Linux中非常重要的知识点

​ 1、service管理指令:

​ service 服务名 start | stop | restart | status

​ 在CentOS7以后使用的指令为systemctl,不再是service

​ 例子:

​ 1)、查看防火墙的状态 service iptables status

​ 2)、关闭防火墙 service iptables stop

​ 3)、重启防火墙 service iptables restart

​ 注意:可以通过telnet指令检查linux的某个端口是否在监听,并且可以访问

​ telnet ip地址 端口

​ 2、查看服务名

​ 1)、使用setup->系统服务

​ 2)、到/etc/init.d 里面查看服务名称

​ 3、查看或者修改默认级别: vi /etc/inittab

​ 4、chkconfig(功能描述:可以给每个服务的各个运行级别设置自启动/关闭)

​ 基本语法:

​ 1、chkconfig --list | grep xxx(查看所有服务是否自启动)

​ 2、chkconfig 服务名 --list(查看某个服务)

​ 3、chkconfig --level 5 服务名 on/off(修改某个服务在某个级别下是否自启动)

​ 使用细节:如果要在所有级别下都关闭/开启,就不需要写–level

11、监控服务

​ 1、动态监控进程

​ 基本语法: top【选项】

​ 简介:top与ps很相似,都用来显示正在执行的进程,top与ps最大的不同就是top在执行一段时间可以更新正在运行的进程

​ 选项说明:

​ -d 秒数 (指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令)

​ -i (使top不显示任何闲置或者僵死进程)

​ -p (通过指定监控进程ID来仅仅监控某个进程的状态)

​ 交互指令

​ P 以CPU使用率排序,默认就是此项

​ M 以内存的使用率排序

​ N 以PID排序

​ q 退出top

​ u 根据用户名搜索指定进程

​ 案例:监视特定的用户

​ 1、输入top指令,按回车键查看执行的进程

​ 2、输入“u”,回车,再输入用户名即可

​ 2、查看系统网络情况

​ 基本语法: netstat 【选项】

​ 选项说明:

​ -an 按一定顺序排列输出

​ -p 显示哪个进程在调用

12、RPM和YUM

RPM基本介绍与使用

​ RPM是 Red Hat Package Manager的缩写。Fedora 和 Red Hat Linux(当然还有CentOS)都用它管理软件安装包(package),它不单可以管理应用软件包,也可以用于管理内核包。

RPM通过数据管理所有安装和卸载的软件包信息,数据库数据被存放在 /var/lib/rpm/ 中。RPM主要提供以下几个功能

  • 安装功能。用户可以使用rmp包安装新的程序包。

  • 升级功能。用户可以使用rmp包更新已安装的程序包,并且保留用户配置信息(修改过的配置文件)

  • 查询功能。用户可以查询安装、卸载过的软件包信息。

  • 确认功能。用户可以用过rmp确认安装的软件是否被修改或损坏(缺失文件),并可以通过重新安装修复它,在修复过程中保留用户配置信息

    ​ 1、rpm包的简单查询指令

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

    ​ 查询软件属于哪个包: rpm -qf 文件全路径名

    ​ 基本选项:

    ​ -q:查询

    ​ -i:查询版本

    ​ -a:all

    ​ 案例:查询火狐

		ot@hadoop1 桌面]#  rpm -qa |grep firefox
		firefox-45.0.1-1.el6.centos.x86_64
		软件名    版本	  适用于centos6.x的64位系统

​ 2、rpm卸载

​ 基本语法: rpm -e RPM包的名称

​ 3、rpm安装

​ 基本语法:rpm -ivh RPM包全路径名称

​ 常用选项:

​ -i:相当于install安装

​ -v:相当于verbose提示

​ -h:相当于hash进度条

YUM基本介绍与使用

​ Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

​ 1、查询yum服务器是否有需要安装的软件

​ 基本语法:yum list | grep xx软件列表

​ 2、安装指定的yum包

​ 基本语法:yum install xxx

10、Shell编程

1、什么是Shell

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

2、Shell脚本的执行方式

​ 1、脚本格式要求

​ 1)、脚本以#!/bin/bash 开头

​ 2)、脚本需要有可执行权限

​ 2、编写第一个Shell脚本

​ 案例:编写一个Shell脚本,输出Hello World

vim myShell.sh

#!/bin/bash
echo "hello world!"

注意:写完后要给文件可执行权限

chmod 744 myShell.sh (更改文件权限)

./myShell.sh (执行)

3、Shell的变量

1、变量的介绍

			1)、Linux Shell中的变量分为系统变量和用户自定义变量

			2)、系统变量:$HOME$PWD$SHELL$USER等等
				比如:echo $HOME  等等
			3)、显示当前shell中所有变量:set
2、shell变量的定义
	基本语法:
		1、定义变量:变量=值
		2、撤销变量:unset 变量
		3、声明静态变量:readonly 变量,注意:不能unset
3、案例1:输出系统变量
	#!/bin/bash
	echo "PATH=$PATH"	
	echo "user=$USER"
   案例2:声明并且输出一个静态变量
	#!/bin/bash
	readonly A=100
	echo "A=$A"	
	注意:静态变量不能被unset
4、变量定义的规则
	1、变量名称可以由字母、数字和下划线组成,但是不能以数字开头
	2、等号两侧不能有空格
	3、变量名称一般习惯为大写
5、将命令的返回值赋给变量
	1、A=`ls-la` (反引号,运行里面的命令并且把结果赋值给变量A)
	2、A=$(ls-la) (等价于反引号)

4、设置环境变量

1、基本语法
	1、export  变量名=变量值(功能描述:将shell变量输出为环境变量)
	2、source  配置文件     (功能描述:让修改后的配置信息立即生效)
	3、echo $变量名		   (功能描述:查询环境变量的值)
2、快速入门
	案例1:在/etc/profile文件中定义TOMCAT_HOME环境变量
		TOMCAT_HOME=/opt/tomcat
		export TOMCAT_HOME
	案例2:在myShell.sh中引用这个环境变量
		echo "tomcat=$TOMCAT_HOME"

5、位置参数变量

1、介绍
	当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
	比如:./myshell.sh 100  200,这个就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息
2、基本语法
	$n	(功能描述:n为数字,$0代表命令本身,$1-9代表第一到第九个参数,十以上的参数需要用大括号包含,例如${10})
	$*	(功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
	$@	(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
	$#	(功能描述:这个变量代表命令行中所有参数的个数)
3、简单使用
	案例:编写一个shell脚本,在脚本中获取到命令行的各个参数信息
		 echo "$0 $1 $2"
          echo "$*"
          echo "$@"
          echo "参数个数=$#"
        输入:./myShell.sh 30 60
        输出结果为:
        ./myShell.sh 30 60
        30 60
        30 60
        参数个数=2

6、预定义变量

1、基本介绍
	就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
2、基本语法
	$$	(功能描述:当前进程的进程号(PID))
	$!	(功能描述:后台运行的最后一个进程的进程号(PID))
	$?	(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值不为0(具体是哪个数由命令自己来决定),则证明上一个命令执行不正确)
3、应用实例:在一个shell脚本中简单使用一下预定义变量
	echo "当前进程号=$$"
	echo "后台最后一个进程号=$!"
	echo "执行的值=$?"

7、运算符

1、基本语法
	1)、"$((运算式))"或者"$[运算式]"
	2)、expr m+n
		注意:expr运算符之间要有空格
	3)、expr \*,/,%	乘,除,取余
2、应用实例
	案例1:计算(2+3)X4的值
		1)、echo "RESULT1=$(((2+3)*4))"
		2)、echo "RESULT2=$[(2+3)*4]"
		3)、echo "RESULT3=`expr \( 2 + 3 \) \* 4`"
	案例2:请求出命令行的两个参数的和
		echo "RESULT=$[$1+$2]"

8、条件判断

1、基本语法
	[ condition ]	(注意condition前后要有空格)
	#非空返回true,可使用$?验证(0为true,>1为false)
2、常用判断条件
	1)、两个整数的比较
		=		字符串比较
		-lt		小于
		-eq		等于
		-gt		大于
		-ge		大于等于
		-ne		不等于
	2)、按照文件权限进行判断
		-r		有读的权限
		-w		有写的权限
		-x		有执行的权限
	3)、按照文件类型进行判断
		-f		文件存在并且是一个常规的文件
		-e		文件存在
		-d		文件存在并且是一个目录
3、应用实例
	案例1:ok是否等于ok
		if	[ "ok" = "ok" ]
		then 
			echo "equal"
		fi
	案例2:23是否大于等于22
		if [ 23 -ge 22]
		then 
			echo "大于等于"
		fi
	案例3:/root/install.log目录中的文件是否存在
		if [ -e /root/install.log ]
		then
			echo "存在"
		fi

9、流程控制

1、if判断
	基本语法:
		if [ 条件判断式 ];then
			程序
		fi
	或者
	if [ 条件判断式 ]
		then
			程序
		elif [ 条件判断式 ]
		then
			程序
	fi	
	注意事项:【条件判断式】中括号和条件判断式之间必须有空格
2、case语句
	基本语法:
		case $变量名 in
		"值1")
		如果变量的值等于值1,则执行程序1
		;;
		"值2")
		如果变量的值等于值2,则执行程序2
		;;
		...此处省略无数个分支..
		*)
		如果变量的值都不是以上的值,则执行此程序
		;;
		esac
	应用实例:当命令行参数为1时,输出“周一”,以此类推,其他情况输出“other”
		case $1 in
		"1")
		echo "周一"
		;;
		"2")
		echo "周二"
         ;;
         *)
         echo "other"
         ;;
         esac
3、for循环
	基本语法1:
		for 变量 in 值1 值2 值3...
		do
			程序
		done
	基本语法2:
		for ((初始值;循环控制条件;变量变化))
		do
			程序
		done
	应用实例:
		从1加到100并且输出值
		A=0
		for ((i=1;i<=100;i++))
		do
     		   A=$[$A+$i]
		done
		echo "$A"
4、while循环
	基本语法:
		while [ 条件判断式 ]
		do
			程序
		done
	应用实例:
		从命令行输入一个数n,统计从1+...+n的值是多少
		 j=0
          SUM=0
          while [ $j -le $1 ]
          do
                  SUM=$[$SUM+$j]
                  j=$[$j+1]
          done
          echo "sum= $SUM"

10、read读取控制台输入

基本语法:
	read(选项)(参数)  变量
常用选项:
	-p:指定读取值时提示符
	-t:指定读取值时等待的时间(秒),如果没有在指定时间内输入,就不再等待了
变量:指定读取值的变量名
应用实例:
	案例1:读取控制台输入一个num值
		read -p "请输入一个变量值" NUM1
		echo "你输入的值num1=$NUM1"
	案例2:读取控制台输入一个num值,在10秒内输入
		read -t 10 -p "请输入一个变量值" NUM2
		echo "你输入的值num2=$NUM2"

11、函数简介

函数介绍:函数在shell中分为系统函数跟自定义函数
系统函数:
1)、basename(功能描述:返回完整路径最后/的部分,常用于获取文件名)
	basename[pathname][suffix]
	basename[string][suffix]	(功能描述:basename命令会删除所有的前缀包括最后一个('/')字符,然后将字符串显示出来)
	注意:suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉
应用实例:请返回/home/aaa/test.txt的“test.txt”部分
	[root@hadoop1 shell]# basename /home/aaa/test.txt
	test.txt
    [root@hadoop1 shell]# basename /home/aaa/test.txt .txt
    test
2)、dirname(功能描述:返回完整路径最后/的前面的部分,常用于返回路径部分)
	dirname	文件绝对路径	(功能描述:从给定的包含绝对路径的文件名中取出文件名(非目录的部分),然后返回剩下的路径(目录的部分))
	应用实例:请返回/home/aaa/test.txt的/home/aaa
		[root@hadoop1 shell]# dirname /home/aaa/test.txt
		/home/aaa
自定义函数
	基本语法:
		[ function ]funname[()]
		{
     
          	Action;
          	[return int;]
		}
	调用直接写函数名:funname
	应用实例:计算输入两个参数的和
		function getSum[()]{
     
          	SUM=$[$n1+$n2]
          	echo "和是=$SUM"
		}
		read -p "请输入第一个数" n1
		read -p "请输入第二个数" n2
		#调用函数
		getSum $n1 $n2

12、综合案例

​ 要求:

​ 1、每天凌晨2:10备份数据库到/data/backup/db

​ 2、备份开始和备份结束能够给出相应的提示信息

​ 3、备份后文件要求以备份时间为文件名,并且打包成.tar.gz的形式,比如:2020-03-12_230202.tar.gz

​ 4、在备份的同时检查是否有10天前备份的数据库文件,如果有就删除

#!/bin/bash
#完成数据库的定时备份
#定义备份的路径
BACKUP=/data/backup/db
#获取当前时间
DATETIME=$(date +%Y_%m_%d_%H%M%S)
#可以输出变量进行简单的调试
#echo $DATETIME
#开始备份
echo "开始备份,路径是 $BACKUP/$DATETIME.tar.gz"
#主机
HOST=localhost
#用户名
DB_USER=root
#密码
DB_PWD=54ljc54088
#创建备份的路径
#先判断路径是否存在,不存在即创建
 [ ! -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
#备份数据库名
DATABASE=mytest
#执行mysql的备份数据库的指令
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
#打包备份文件
cd $BACKUP
tar -zcvf $DATETIME.tar.gz $DATETIME
#删除临时目录
rm -rf $BACKUP/$DATETIME
#删除10天前的备份文件
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {
     } \;
#提示一句话备份成功
echo "=====备份成功===="

​ 最后交给crontab管理

crontab -e

10 2 * * * /usr/sbin/mysql_db_backup.sh

你可能感兴趣的:(shell,linux)