目录
7.3.17 ln:软连接(符号连接),存放链接其他文件的路径
7.5.1 find:从指定目录向下递归遍历各子目录,将满足条件的文件或目录显示在终端
第1章 环境搭建
1.1 虚拟机的网络配置
1. 桥接模式:虚拟机与母机同网段,但IP不同,容易IP冲突
2. NAT模式:网络地址转换,虚拟机可以访问外网
3. 仅主机模式:虚拟机时独立的主机
1.2 虚拟机联网
1.3 vmtools工具
1.3.1 作用:
1. 可以直接粘贴命令在Windows和Linux之间
2. 可以设置Windows和Linux的共享文件夹
1.3.2 步骤
1. 进入Linux
2. 点击vm菜单的->install vmware tools
3. Linux出现一个vm安装包
4. 点击右键解压,得到一个安装文件
5. 进入该vm解压的目录,该文件在 /root/桌面/vmware-tools-distrib/ 下
6. 安装 ./vmware-install.pl
7. 全部使用默认设置
8. 需要reboot重启生效
1.3.3 共享文件夹
第2章 Linux的目录结构
1. /bin:指令目录
2. /sbin:系统管理员使用的系统管理指令
3. /home:普通用户的主目录
4. /root:
5. /lib:系统开机所需要最基本的动态链接库,类似于Windows的DLL文件
6. /lost+found:一般是空的,系统非法关机后才有文件
7. /etc:所有的系统管理所需要的配置文件和子目录
8. /usr:用户的应用程序和文件
9. /boot:启动Linux时使用的一些核心文件
10. /proc:虚拟目录,系统内存的映射,访问这个目录获取系统信息。别动
11. /srv:service缩写,服务启动后需要提取的数据。别动
12. /sys:别动
13. /tmp
14. /dev:所有的硬件
15. /media:设备
16. /mnt:让用户临时挂载别的文件系统
17. /opt:给主机额外安装软件所摆放的目录
18. /usr/local:额外安装的软件目录
19. /var:;存放不断扩展的东西,通常将不断变化的文件存放在此
20. /seLinux:安全子系统,能控制程序只访问特定文件
第3章 远程登录Linux系统
3.1 XShell
3.2 XFtp 5 上传下载
连接
连接后有乱码问题,之后刷新
以上两款软件的使用需要Linux开启sshd服务
第4章 开机、重启和用户登录注销
4.1 关机&重启
1. shutdown
1. shutdown -h now:立即关机
2. shutdown -h 1:1分钟后关机
3. shutdown -r now:立即重启
2. halt:直接使用,效果相当于关机
3. reboot:重启
3. sync:把内存的数据同步到磁盘。看不到效果
无论关机、重启,执行前先执行sync
4.2 用户登录和注销
1. 普通用户登录,用“su -用户名”命令切换成系统管理员身份
2. 在提示符下用logout注销用户。logout命令在图形级别下无效,远程登录才有效
第5章 vi和vim编辑器
所有的Linux系统都内建vi文本编辑器。
vim具有程序编程能力,可以视为vi的增强版,可以主动以字体颜色辨别语法的正确性,方便程序设计。
5.1 vi/vim的三种模式
1. 正常模式
正常模式下可以使用快捷键
2. 插入模式
按下i,进入插入模式
按下a,光标定位到当前行的下一行
3. 命令行模式
完成读取、存盘、替换、离开vim、显示行号等动作
:wq:保存退出
:q:退出,没有任何修改
:q!:强制不保存退出
5.2 快捷键
1. 拷贝当前行 yy, 拷贝当前行向下的5行 5yy,粘贴 p
2. 删除当前行 dd, 删除当前行下5行 5dd
3. 文档中查找某个单词:在一般模式中,输入“/关键字”回车后即可找到,用“n”查找下一个
4. 设置文件行号 “:set nu”, 取消文件行号“:set nonu”
5. 跳到文档末行“G”, 回到文件首行“gg”
6. 正常模式输入“u”撤销上步操作,可以一直撤销到本次文档打开的位置。撤销的内容为上次插入的全部的内容,而不只是一行
7. 光标快速移动到指定行:
第一步:显示行号
第二步:输入指定行
第三步:点击shift+g
第6章 用户管理
6.1 添加用户
语法:useradd [选项] 用户名
选项:
1. -d:指定该用户的家命令 -> useradd -d 指定目录 用户名 指定目录不能事先存在
2. -g:指定用户的组 -> useradd -g 组名 用户名
说明:用户创建后,如果没有指定组,自动创建与该用户同名的组
6.2 指定密码
语法:passwd 用户名
6.3 删除用户
语法:userdel [选项] 用户名
选项:
1. 无选项:该方式保留家目录 【推荐】
2. -r:同时删除家目录
6.4 查询用户信息
语法:id 用户名
6.5 切换用户
语法:su - 用户名
回到原用户:exit
6.6 查看当前用户
语法:whoani / who am i
6.7 增加组
语法:groupadd 组名
6.8 删除组
语法:groupdel 组名
6.9 修改用户组
语法:usermod -g 用户组 用户名
6.10 用户和组的相关文件
1. /etc/passwd
存放用户的各种信息
每行的含义:用户名:加密口令:用户id:组id:注释性描述:家目录:登录shell
2. /etc/shadow
存放用户的口令
每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
3. /etc/group
存放组的信息
每行含义:组名:口令:组id:组内用户列表
第7章 使用指令
7.1 指定运行级别
指定运行级别:init [012356]
面试题:如何找回丢失的root密码
答:进入到单用户模式,然后修改root密码。因为进入单用户模式,root不需要密码就可以登录。关于安全问题:该操作只能在机房打开实体机进行操作,所有可以默认身份没问题
具体操作:开机 -.> 在引导时敲回车键 -.> 看到一个界面输入e -.> 看到新界面,选中第二行(编辑内核)再输入e -.> 在这行输入1,敲回车 -.> 回到上个界面输入b -.> 进入单用户模式,使用passwd改密码
面试题:运行级别为0或6该怎么办
答:在开机时,进入到单用户模式,将级别改为其他
具体操作:开机 -.> 在引导时敲回车键 -.> 看到一个界面输入e -.> 看到新界面,选中第二行(编辑内核)再输入e -.> 在这行输入5或3,敲回车 -.> 回到上个界面输入b -.> 进入图形界面或多用户有网服务
7.2 帮助指令
1. man
语法:man [命令或配置文件]
2. help
语法:help 命令
7.3 文件目录类
7.3.1. pwd:显示当前工作目录的绝对路径
基本语法:pwd
7.3.2 ls:
基本语法:ls [选项] [目录或文件]
常用选项:1. -a:显示所有目录和文件,包括隐藏的
2. -l:以列表的方式显示
7.3.3 cd:
基本语法:cd [参数]
常用选项:1. cd ~ :回到家目录
2. cd .. :
7.3.4 mkdir:创建目录
基本语法:mkdir [选项] 要创建的目录
常用选项:1. -p:创建多级目录
7.3.5 rmdir:删除空目录
基本语法:rmdir [选项] 要删除的目录
7.3.6 touch:创建空文件
基本语法:touch 文件名
可以一次性创建多个文件
7.3.7 cp:拷贝文件到指定目录
基本语法:cp [选项] source dest
常用选项:1. -r:递归拷贝整个文件夹
2. \cp [选项] source dest:强制覆盖,不提示
7.3.8 rm:移除文件或目录
基本语法:rm [选项] 文件或目录
常用选项:1. -r:递归
2. -f:强制,不提示
7.3.9 mv:移动文件或重命名
基本语法:mv oldFileName newFileName mv oldFileAdd newFileAdd
7.3.10 cat:查看文件内容,只浏览不能修改
基本语法:cat [选项] 文件
常用选项:1. -n:显示行号
2. cat [选项] 文件 | more:分页显示
7.3.11 more:以全屏的方式按页显示内容
基本语法:more 文件
7.3.12 less:分屏查看内容,根据显示需要加载内容
基本语法:less 文件
7.3.13 > 输出重定向和 >> 追加
基本语法:ls -l > 文件:把ls -l的内容覆盖写入到文件中
ls -al >> 文件:把ls -al的内容追加到文件中
cat 文件1 > 文件2:把文件1的内容覆盖文件2
echo “内容” >> 文件:把内容追加到文件中
7.3.14 echo:输出内容到控制台
基本语法:echo [选项] [输入内容]
例子:1. 输入环境变量: echo $PATH
7.3.15 head:显示文件的开头内容,默认10行
基本语法:head [选项] 文件
常用选项:1. head -n 5 文件:显示文件的前5行
7.3.16 tail:显示文件末尾内容,默认10行
基本语法:tail [选项] 文件
常用选项:1. tail -n 5 文件:显示倒数5行
2. tail -f 文件:实时追踪该文档的所有更新
7.3.17 ln:软连接(符号连接),存放链接其他文件的路径
基本语法:ln -s [原文件或目录] [软连接名]
7.3.18 history:查看以执行过的命令
基本语法:history
常用选项:1. history 10:显示使用过的最后10个命令
2. !命令序号:再次执行该序号的命令,如!82
7.4 时间日期类
7.4.1 date:显示当前日期
基本语法:date
常用选项:1. date +%Y:当前年份
2. date +%m:当前月份
3. date +%d:当前日期
4. date “+%Y-%m-%d %H:%M:%S”:年月日 时分秒
5. date -s 字符串时间:设置系统时间
7.4.2 cal:查看日历
基本语法:cal [选项]
常用选项:1. cal 2020:显示2020年全年的日历
7.5. 搜索查找类
7.5.1 find:从指定目录向下递归遍历各子目录,将满足条件的文件或目录显示在终端
基本语法:find [搜索范围] [选项]
常用选项:1. -name 文件名:按照指定的文件名查找
2. -user 用户名:查找属于指定用户名的所有文件
3. -size 文件大小:按照指定文件大小查找
7.5.2 locate:快速定位文件路径
基本语法:locate 搜索文件
需要用uupdate指令创建locate数据库
7.5.3 grep指令和管道符号 |
grep:过滤查找
管道符号:将前一个命令的结果输出给后面的命令处理
基本语法:grep [选项] 查找内容 源文件
常用选项:1. -n:显示匹配行和行号
2. -i:忽略大小写
7.6 压缩和解压缩
7.6.1 gzip和gunzip
gzip压缩【原文件不保留】,gunzip解压
基本语法:gzip 文件名 gunzip 文件名.gz
7.6.2 zip和unzip
在项目打包发布中非常有用
基本语法:zip [选项] XXX.zip 要压缩的内容 unzip [选项] XXX.zip
选项:1. -r:压缩目录
2. -d:指定解压后的存放目录
7.6.3 tar
基本语法:tar [选项] XXX.tar.gz 打包的内容
选项:1. -c:产生.tar打包文件
2. -v:显示详细信息
3. -f:指定压缩后的文件名
4. -z:打包同时压缩
5. -x:解包.tar文件
指定解压到的目录,事先要存在
-C的作用是解压到指定目录
第8章 组管理和权限管理
8.1 组管理
8.1.1 文件/目录的所有者
创建用户:useradd 用户名
查看文件所有者:ls -ahl
修改文件所有者:chown 用户名 文件名
8.1.2 文件/目录的所有组
创建组:groupadd 组名
查看文件所有者:ls -ahl
修改文件所有组:chgrp 组名 文件名
8.1.3 其他组
改变用户所在组:
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户登录的初始目录
8.2 权限
8.2.1 文件权限
1. r:读取,查看
2. w:可以修改,但不代表可以删除文件。删除文件的前提是对该文件的所在目录有写权限
3. x:可以执行
8.2.2 目录权限
1. r:可以读取,ls查看目录内容
2. w:可以修改,目录内创建+删除+重命名目录
3. x:可以进入该目录
8.2.3 权限管理
1)通过chmod改变目录/文件的权限
第一种方法:+、-、=变更权限
u:所有者 g:所有组 o:其他组 a:全部用户
1. chmod u=rwx,g=rx,o=x 文件/mul名
2. chmod o+w 文件/目录名
3. chmod a-x 文件/目录名
第二中方式: r=4,w=2,x=1,rwx=4+2+1=7
2)通过chown修改文件所有者
chown newowner file:改变文件所有者
chown newowner:newgroup file:改变文件所有者和所有组
-R:如果是目录,使其所有子目录递归生效
3)通过chgrp修改文件所在组
chgrp newgroup file:修改文件所在组
第9章 定时任务调度 crontab
9.1 介绍
任务调度:系统再某个时间执行特定的命令或脚本
9.2 语法
crontab [选项]
选项:
1. -e:编辑crontab定时任务
2. -l:查询crontab任务
3. -r:删除当前用户所有的crontab任务
4. service crond restart:重启任务调度
9.3 快速入门
设置任务调度文件:/etc/crontab
设置个人任务调度,执行crontab -e命令
输入任务到调度文件,如:*/1 * * * * ls -l /etc/ > /tmp/to.txt,意思是每小时的每分钟执行ls -l /etc/ > /tmp/to.txt命令
上述五个占位符的含义:
第1个:一小时的第几分钟,范围:0-59
第2个:一天中的第几小时,范围:0-23
第3个:一个月中第几天,范围:0-31
第4个:一年中第几个月,范围:1-12
第5个:一周中的星期几,范围:0-7(0和7都是周日)
特殊符号的说明:
1. *:代表任何时间,
2. ,:代表不连续的时间,如“0 8,12,16 * * *”代表每天8点,12点,16点都执行一次命令
3. -:代表连续的时间范围,如“0 5 * * 1-6”代表周一到周五的凌晨5点执行命令
4. */n:代表每个多久执行一次,如“*/10 * * * *”代表每隔10分钟执行一次
第10章 磁盘分区、挂载
10.1 分区基础知识
分区方式:mbr分区、gtp分区
1. mbr分区:
1. 最多支持4个主分区
2. 系统只能安装在主分区
3. 扩展分区占一个主分区
4. mbr最大支持2TB,但有最好的兼容性
2. gtp分区
1. 支持无限个主分区(但操作系统可能有限制,Windows最大128分区)
2. 最大支持18EB的大容量(EB=1024PB,PB=1024TB)
3. Windows7 64位以后支持gtp
10.2 Linux分区
10.2.1 原理介绍
1. 对Linux而言,无论有几个分区,分给哪个目录使用,归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux每个分区都是用来组成文件系统的一部分
2. Linux采用了“载入”的处理方式,他的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录连续起来。这是要载入的一个分区将使他的存储空间再一个目录下获得
10.2.2 硬盘说明
1. Linux硬盘分IDE硬盘和SCSI硬盘,目前基本是SCSI硬盘
2. 对于IDE硬盘,驱动器识别符为“hdx~”。其中“hd”表明分区所在设备的类型,即指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1~4表示,他们是主分区或扩展分区,从5开始为逻辑分区
3. 对于SCSI硬盘,标识符为“sdx~”,SCSI硬盘用“sd”表示分区的类型,其余的于IDE硬盘一样
lsblk -f:查看系统的分区和挂载情况【快速记忆:老师不离开】
10.3 挂载
10.4 磁盘情况查询
10.4.1 系统整体磁盘使用情况
df -h
10.4.2 查询指定目录的磁盘占用情况
du [参数] 目录
默认为当前目录
其他参数:
1. -s:指定目录占用大小汇总
2. -h:带计量单位
3. -a:含文件
4. --max-depth=1:子目录深度
5. -c:列出明细的同时,增加汇总值
10.4.3 磁盘情况——工作使用指令
1. 统计/home文件的个数
ls -l /home | grrp "^-" | wc -l
2. 统计/home目录的个数
ls -l /home | grrp "^d" | wc -l
3. 统计/home文件的个数,包括子文件夹里的
ls -lR /home | grrp "^-" | wc -l
4. 统计/home目录的个数,包括子文件夹里的
ls -lR /home | grrp "^d" | wc -l
5. 以树状显示文件目录
先安装tree:yum install tree
使用命令:tree
第11章 日志管理、备份与恢复(不详细,待更新)
11.1. 简介
11.1.1 确定服务启动
1. ps aux | grep rsyslogd:查看服务是否启动
2. chkconfig --list | grep rsyslog:查看服务是否自启动
11.1.2 常见日志的作用
11.2 rsyslogd日志服务
11.2.1 日志文件格式
基本日志格式包含四列:
1. 时间产生的时间
2. 发生事件的服务器的主机名
3. 产生事件的服务名或程序名
4. 事件的具体信息
11.3 日志轮替
11.4 备份的数据
11.4.1 linux系统需要备份的数据:
1. /root
2. /home
3. /var/spool/mail
4. /etc
11.4.2 apache需要备份的数据:
1. 配置文件
2. 网页主目录
3. 日志文件
11.4.3 MySQL需要备份的数据:
1. 源码包安装的mysql:/usr/local/mysql/data/
2. rpm包安装的msyql:/var/lib/mysql/
11.4.4 备份策略:
1. 完全备份
2. 增量备份:只备份较上次的新增数据,最初的数据进行完全备份
3. 差异备份:备份较原始数据的新增部分,
11.5 增量备份和恢复
11.5.1 备份命令dump
1. dump需要安装。安装命令:yum -y install dump
2. 语法:dump [选项] 备份后的文件名 原文件名或目录
选项:
1. level:备份级别
2. -f 文件名:指定备份后的文件名
3. -u:备份成功后,把备份时间记录在/etc/dumpdates中
4. -v:显示备份过程中更多的的输出信息
5. -j:调用bzlib库压缩备份文件,
6. -w:显示允许被dump的分区的备份等级及备份时间
11.5.2 恢复命令restore
第12章 网络配置
12.1 网络配置原理图(含虚拟机 NAT模式)
12.2 查看网络id和网关
12.2.1 虚拟网络编辑器
12.2.2 修改虚拟网络的ip
12.2.3 查看网关
12.2.4 查看Windows中的vmnet8网络配置
1. 使用ipconfig
2. 界面查看
12.3 自动获取IP
缺点:每次IP不一样,不适用于服务器
12.4 指定固定IP
修改“/etc/sysconfig/network-scripts/ifcfg-eth0”文件内容
重启服务:service network restart
第13章 进程管理(重点)
13.1 基本介绍
1. Linux中,每个执行的程序(代码)都是一个进程,都分配一个进程id
2. 每个进程都要一个父进程。父进程可以复制多个子进程
3. 进程的存在形式:前台和后台
4. 一般系统服务都是以后台进程的方式存在,而且常驻在系统里,直到关机才结束
13.2 显示系统执行的进程
ps -aux:指令可以查看当前进程
-a:显示当前所有进程信息
-u:以用户的形式显示进程信息
-x:显示后台进程的参数
13.2.1 ps指令详解
13.2 终止进程
13.2.1 语法
kill [选项] 进程号:通过进程号杀死进程
killall 进程名称:通过进程名杀死进程,支持通配符,在系统因负载过大而变慢时非常有用
选项:
-9:强迫进程立即停止
13.2.2 案例
1. 踢掉非法用户
2. 终止远程登录sshd,在适合适合重启sshd服务
3. 终止多个gedit编辑器
4. 强制杀掉一个终端
13.2.3 查看进程树
语法:pstree [选项]
选项:
1. -p:显示进程id
2. -u:显示进程所属用户
13.3 服务(service)管理
13.3.1 介绍
服务service本质就是进程,运行在后台,通常监听某个端口,等待其他程序的请求,又称为守护进程
13.3.2 service管理指令
service 服务名 [ start | stop | restart | reload | status ]
或者 systemctl
注意:
1. 该方式只是临时生效,系统重启后,恢复之前的状态
2. 永久生效用chkconfig指令
13.3.3 查看服务名
1. 使用setup -> 系统服务
有*号的为启动的,按空格关闭
2. /etc/init.d/服务名称
13.3.4 服务的运行级别
查看或修改默认级别:vi /etc/inittab
开机流程:
13.3.5 chkconfig指令
通过chkconfig命令可以给各个运行级别设置自动挡/关闭
语法:
1. 查看服务 chkconfig --list | grep xx
2. chkconfig 服务吗 --list
3. chkconfig --level 5 服务名 on/off
config设置后要重启才生效
13.4 动态监控进程
13.4.1 介绍
top与ps命令相似,都是显示正在执行的进程。最大的不同是top在执行一段事件后更新正在运行的进程
13.4.2 语法
top [选项]
选项:
1. -d:指定top隔几秒进行刷新,默认3秒
2. -i:使top不显示任何闲置或僵死进程
3. -p:通过指定监听进程id来仅仅监控某个进程的状态
交互操作说明:
1. P:以CPU使用频率排序,默认
2. M:以内容使用频率排序
3. N:以PID排序
4. q:退出top
13.4.3 案例
1. 监听特定用户
top:输入此命令,按回车,查看执行的进程
u:然后输入u回车,在输入用户名即可
2. 终止指定进程
top:输入此命令,按回车,查看执行的进程
k:然后输入k回车,再输入要结束的进程id
3. 指定系统状态更新时间10s
bash 》 top -d 10
13.5 监控网络状态netstat(重要)
语法:netstat [选项]
选项:
1. -an:按一定顺序排列输出
2. -p:显示哪个进程再调用
第14章 RPM和YUM
rpm类似于Windows的setup.exe
yum包是一个shell前端软件包管理器,基于rpm包管理,可以从指定服务器自动下载rpm包并安装,可以自动处理依赖关系,并一次性安装所有依赖的包。使用yum需要联网
14.1 rpm包管理
14.1.1 简单查询指令
查询已安装的rpm列表:rpm -qa | gerp xx
14.1.2 其他查询指令
1. rpm -qa:查询安装的所有rpm包
2. rpm -qa | more
3. rpm -qa | grep XX
4. rpm -q 软件包名:查询软件包是否安装
5. rpm -qi 软件包名:查询软件包信息
6. rpm -ql 软件包名:查询软件包中的文件
7. rpm -qf 文件全路径:查询文件所属的软件包
14.1.3 rpm包卸载
rpm -e rpm包的名称
细节:
如果要删除包,被其他包依赖,则卸载时报错,如果非要删除可以加参数:rpm -e --nodeps 包名
14.1.4 rpm包安装
rpm -ivh rpm包全路径
参数:
1. -i:安装 install
2. -v:提示 verbose
3. -h:进度条 hash
14.2 yum包管理
14.2.1 基本指令
1. 查询yun服务器是否有需要安装的软件:yum list | grep 软件名
2. 安装指定包:yum install XXX
第15章 Java开发环境
15.1 JDK安装
安装步骤:
1. 将软件上传到 /opt 下
2. tar解压
3. 配置环境变量 “/etc/profile”
4. 注销用户,环境变量才生效
如果是3运行级别:logout
如果是5运行级别:重新登录一次【或重启】
15.2 Tomcat安装
安装步骤:
1. 将软件上传到 /opt 下
2. tar解压
3. 启动tomcat
先进入tomcat的bin目录【cd命令】
启动命令“./startup.sh”
4. 开放8080端口,以便外网访问
vim /etc/sysconfig/iptables
5. 重启防火墙 “service iptables restart”
15.3 Eclipse安装
1. 将软件上传到 /opt 下
2. tar解压
3. 启动eclipse,配置jre和server
启动方式:1. 快捷方式;2. 进入到eclipse文件夹,执行“./eclipse”
15.4 Mysql安装
第1步:卸载就版本
第16章 shell编程
shell是一个命令行解释器
16.1 shell快速入门
1. 脚本格式要求
1. 以“#!/bin/bash”开头
2. 有可执行权限
2. hello world
代码:
#!/bin/bash
echo hello world
执行:
方式1:
第1步:赋予HelloWorld.sh脚本+x权限
第2步:执行
方式2:不推荐
16.2 shell的变量
shell的变量:系统变量、用户自定义变量。显示上前所有变量用“set”
16.2.1 shell变量的定义
1. 定义变量:变量名=变量值
2. 撤销变量:unset 变量
3. 声明静态变量:readonly 变量。静态变量不能unset
16.2.2 变量定义规则:
1. 变量名习惯大写
2. 等号两侧不能有空格
3. 数字、字母、下划线
16.2.3 将命令的结果赋值给变量
16.3 设置环境变量
基本语法:
1. export 变量名=变量值 :将shell变量输出为环境变量
2. source 配置文件 :让修改后的配置文件立即生效
3. echo $变量名 :查询环境变量值
在实用环境变量前,需要让其生效
16.4 位置参数变量
16.4.1 介绍
使用位置参数变量,可以让执行的shell脚本得到命令行的参数信息。
个人理解:shell脚本视为Java的函数,位置参数变量视为该函数的实参
16.4.2 语法
1. $n :n为数字,$0代表命令本身,$1~$9代表第一到第九个参数,十以上的用大括号包括,如${10}
2. $* :这个变量代表命令行中的所有参数,$*把所有参数看为一个整体
3. $@ :这个变量代表命令行中的所有参数,$@把每个参数区别对待
4. $# :这个变量代表命令行中的所有参数的个数
16.5 预定义变量
shell设计者已经实现定义好的变量,可以直接在shell中使用
语法:
1. $$ :当前进程号
2. $! :后台运行的最后一个进程的进程号
3. $? :最后一次执行的命令的返回状态。返回0则表示成功,
#!/bin/Bash
echo "当前的进程号=$$"
# 后台运行 myShell.sh
./myShell.sh &
#上面的一个&表示在后台运行
echo "最后运行的进程号=$!"
echo "最后的进行运行结果=$?"
16.6 运算符
语法:
1. “$((运算式))"或"$[运算式]"
2. expr m + n :expr运算符间有空格
3. expr m - n
4. expr \*, /, %
16.7 判断语句
16.7.1 语法
[ condition ]
condition前后有空格
非空返回true,可使用$?验证
16.7.2 常用判断条件
两个整数比较
1. =:字符串比较
2. -lt:小于
3. -le:小于等于
4. -eq:等于
5. -gt:大于
6. -ge:大于等于
7. -ne:不等于
文件权限判断
1. -r:有读权限
2. -w:有写权限
3. -x:有执行权限
文件类型判断
1. -f:文件存在并且是一个常规文件
2. -e:文件存在
3. -d:文件存在并且是一个目录
16.8 流程控制语句
16.8.1 if
if [ 判断条件 ]
then
程序
elif [ 判断条件 ]
then
程序
fi
16.8.2 case
case $变量名 in
”值1“)
程序1
;;
”值2“)
程序2
;;
.。。。
*)
程序n
;;
esac
16.8.3 for
语法1:
for 变量 in 值1,值2,值3
do
程序
done
语法2:
for((初始值;条件;变量变化))
do
程序
done
16.8 4 while
while [ 条件 ]
do
程序
done
16.9 shell读取控制台输入
read (选项) (参数)
选项:
-p:指定读取值时的提示信息
-t:指定读取值时等待的时间
参数:
变量:指定读取值的变量名
16.10 shell系统函数
16.10.1 basename
功能:返回完整路径最后 / 的部分,常用于获取文件名
语法:
basename [pathname] [suffix]
basename [string] [suffix] (作用:删除所有的前缀包括最后一个 / ,然后将字符串显示出来)
suffix为后缀,如果suffix被指定,basename会将passname或string中的suffix去掉
16.10.2 dirname
功能:返回完整路径最后 / 的前面部分,常用于返回路径部分
语法:
dirname 文件绝对路径
16.11 shell自定义函数
语法:
[ function ] funname [()]
{
Action;
[return ]
}
16.12 综合案例:shell定时维护数据库
需求分析:
1. 每天凌晨2:10备份数据库 atguiguDB 到 /data/backup/db
2. 备份开始和备份结束能够给出相应的提示信息
3. 备份后的文件要求一备份的时间为文件名,并打包为 。tar。gz 格式
4. 备份的同时,检查是否有10天前备份的文件,如果有就删除
思路分析:
代码:
#!/bin/Bash
# 完成数据库定时备份
# 备份的路径
BACKUP=/data/backup/db
# 当前时间为文件名
DATETIME=$(date +%Y_%m_%d_%H:%M:%S)
echo "=====开始备份====="
echo "备份的路径是 $BACKUP/$DATETIME.tar.gz"
# 数据库信息
HOST=localhost
DB_USER=root
DB_PWD=root
DATABASE=atguiguDB
# 创建备份的路径
if [ | -d "$BACKUP/$DATETIME" ]
then
mkdir -p "$BACKUP/$DATETIME"
fi
# 上述代码的其他写法:
# [ | -d "$BACKUP/$DATETIME" ] && mkdir -p "$BACKUP/$DATETIME"
# 开始备份,先备份压缩到一个临时目录
mysqldump -u${DB_USER} -p${DB_PWD} --host=$HOST $DATABASE | gzip > $BACKUP/$DATETIME/$DATETIME.sql.gz
# 打包备份文件
tar -zcvf $DATATIME.tar.gz $DATETIME
# 删除临时文件
rm -rf $BACKUP/$DATETIME
# 删除十天前的备份
find $BACKUP -mtime +10 -name "*.tar.gz" -exec rm -rf {} \;
echo "备份成功"
把代码交给crontab,进行执行
指令:crontab -e
在打开的文件中输入:10 2 * * * /usr/sbin/mysql_backuo_db.sh
第17章 python开发环境
17.1 Ubuntu的root用户
当普通用户没有权限时,切换root又麻烦,可以在命令前加“sudo ”,就可以有root的权限。
当然,可以用su用来切换root用户,但如果没有给root设置密码,会报错,此时设置一个root密码就可以。
17.1.1 给root用户设密码
1. 输入sudo passwd命令,输入一般用户的命名并设定root用户密码
2. 设定root密码后,输入su命令,并输入root密码,就可以切换为root用户。提示符$为一般用户,提示符#为root用户
3. 输入exit命令,退出root
17.2 apt软件管理
apt是安装包管理工具,类似于Windows的软件管理工具。
17.2.1 Ubuntu软件操作的相关命令【必须会】
1. sudo apt -get update:更新源
2. sudo apt -get install package:安装包
3. sudo apt -get remove package:删除包
4. sudo apt-cache search package:搜索软件包
5. sudo apt -cache show package:获取包的相关信息
6. sudo apt-get install package --reinstall:重新安装包
7. sudo apt-get -f install:修复安装
8. sudo apt-get remove package --purge:删除包,包括配置文件
9. sudo apt-get build-dep package:安装相关的编译环境
10. sudo apt-get upgrade:更新以安装的包
11. sudo apt-get dist-upgrade:升级系统
12. sudo apt-cache depends package:了解使用该包依赖哪些包
13. sudo apt-cache rdepends package:查看该包被哪些包依赖
14. sudo apt -get source package:下载包的源码